Agentic攻击面:2005年Web Security再度出现

发布: (2026年2月21日 GMT+8 16:21)
13 分钟阅读
原文: Dev.to

Source: Dev.to

(请提供您希望翻译的正文内容,我将为您翻译成简体中文。)

代理式攻击面:2005 年网络安全重现

如果你这周一直在关注 CVE 的发布,你已经看到了其中的模式。这一点并不隐蔽。

2024年2月21日 – eBay MCP 服务器

  • CVE‑2026‑27203ebay_set_user_tokens 工具直接写入 .env,未对换行符进行消毒。
  • Impact – 攻击者可以注入任意环境变量:
    • 覆盖 EBAY_REDIRECT_URI 以劫持 OAuth 流程。
    • 注入 NODE_OPTIONS 以实现潜在的远程代码执行(RCE)。
  • Discovery – 由名为 MCPwner 的自动化扫描器发现——这是在保证会有很长列表的情况下,第一个针对 MCP 的 CVE。

2024年2月20日 – Microsoft Semantic Kernel

  • CVE‑2026‑25592SessionsPythonPluginDownloadFileAsyncUploadFileAsync 未对 localFilePath 进行验证。
  • 影响 – Agent‑function 调用可以写入任意文件(远程代码执行)。
  • 背景 – 这是一周内的第二个关键漏洞;第一个是 InMemoryVectorStore 的 RCE。单个发布窗口出现两个关键漏洞。

2024年2月20日 – Ray Dashboard 与 Dagu

Ray Dashboard

  • 默认情况下身份验证关闭。
  • CVE‑2026‑27482 – 浏览器保护中间件阻止来自浏览器来源的 POSTPUT,但忘记阻止 DELETE
  • 利用方式 – 只需一次 fetch() 调用 DELETE /api/serve/applications/ 即可关闭 Serve。无需凭证。

Dagu

  • 同样的问题:向 /api/v2/dag-runs POST 一个包含 shell 命令的 YAML 规范会立即执行。
  • 默认的 Docker 部署开箱即被完全妥协。

这不是漏洞赏金计划。这是一个在快速构建的新平台,零安全审查,身份验证被事后考虑,“开发者便利”默认设置与未授权 RCE 无异。

MCP 问题

Model‑Context‑Protocol (MCP) 服务器现在随处可见。它们是 AI 代理与您的工具、文件系统和 API 进行交互的方式——而这些服务器的编写方式仍停留在 2005 年,没人听说过 SQL 注入。

  • 典型案例: eBay MCP CVE。一个工具函数会触碰 .env(控制整个应用运行时的文件),但根本没有对输入进行消毒。修复可能只需要三行代码;但它已经发布的事实本身就是故事。
  • 为何重要: MCP 服务器拥有的访问权限比传统 Web 应用更大。它们可以读取文件、写入配置、使用存储的凭证调用 API,并且由快速交付的团队构建,而不是由慢慢审计的安全团队构建。
  • MCPwner: 一个 MIT 项目开发的自动化 MCP 安全扫描器。生态系统中如此早就需要自动化扫描器,这说明了一切——漏洞出现的速度已经超过了人类的发现速度。

OpenClaw:设计上不安全

  • 发布: 2025年11月,通过 Andrej Karpathy 和 Willison 病毒式传播。
  • 结果: 几周内出现三个高危 CVE(远程代码执行、两次命令注入)。
  • 社区评判(r/netsec): “这个概念本身就是不安全的,而不仅仅是实现有问题。”

来自 godofpumpkins 的评论: “为了让它有用而提供的工具,恰恰是让攻击者利用的工具。”

为什么架构有缺陷

  1. 为代理提供 完整的读/写文件系统访问
  2. 摄取不可信的网页输入
  3. 根据 LLM 输出执行代码

威胁模型假设 LLM 不会被欺骗——这一前提多年前已被证伪。

Cline 供应链攻击(2024 年2月)

  1. 在 Cline 的 AI 问题分流 GitHub Actions 工作流中进行提示注入。
  2. 缓存投毒 → 窃取 VSCE_PATOVSX_PATNPM_RELEASE_TOKEN
  3. 另一名攻击者复用 PoC 仓库,攻击 Cline,并发布带有后置安装脚本的 cline@2.3.0,该脚本悄悄安装 OpenClaw。
  4. 结果: 8 小时内下载量达 4 000 次,随后被下架。

攻击链路: GitHub issue → AI 分流机器人 → 提示注入 → Actions 缓存投毒 → 生产凭证 → 供应链妥协。每一个环节都是 AI 特有的失效模式。

这不是“需要打补丁”。而是“威胁模型本身就有问题”。

编码工具正在泄露你的信息

你的 AI 编码助手会产生新的泄露面——而且并非显而易见的那种。

  • 传统泄露: git add . 的粗心操作。
  • 新型工件类别:
    • Claude 建议在命令行中带着机密运行你的应用 → 你将其加入白名单 → 白名单保存在 .claude/settings.local.json 明文 中。

密钥扫描器的盲点

扫描器默认行为
trufflehog跳过点路径(.*
gitleaks跳过点路径(.*

你需要为 .claude/.cursor/.github/copilot 目录显式添加规则,即便如此,你也只能捕获正则定义的密钥。

非正则密钥

  • 提示记录、架构摘要、上下文缓存——虽然不是正则意义上的“密钥”,但它们会泄露内部逻辑和粘贴的数据。
  • .claude/projects/ 是取证金矿:每一个你粘贴的密钥、每一个你提到的内部 API 端点。

通过上下文压缩导致的静默数据丢失

  • 用户粘贴 8 KB 的 DOM 标记,使用 40 分钟后触发压缩。
  • 摘要只写着“用户提供的 DOM 标记”,但实际内容已经消失。
  • Claude 从记忆中幻觉出选择器;原始的 .jsonl 记录仍在磁盘上,但压缩摘要没有指向它的指针。

未解决的问题: 至少有八个未关闭的工单涉及此问题。你往往要等到模型开始猜测时才发现已经发生泄露。

Perplexity审计:负责任的表现

Perplexity 在发布前聘请了 Trail of BitsComet 进行审计——这是负责任的发布前安全的典范。公开审计结果值得关注;大多数 AI 浏览器产品在没有此类审查的情况下直接上线。

  • ToB 发现: 四种提示注入技术,全部从已认证会话中泄露 Gmail 数据。
  • 攻击向量: 攻击者控制的网页内容 → 注入 AI 上下文 → 通过浏览器工具(fetch URL、浏览历史、control‑browse)进行数据外泄。

关键要点

  1. MCP‑style 服务器 正在以 2005 年困扰 Web 应用的同样宽松的安全思维方式构建。
  2. OpenClaw 表明,设计上不安全的架构仅靠补丁无法修复。
  3. AI 编码助手 以传统扫描器检测不到的方式泄露机密。
  4. 负责任的安全(例如 Perplexity + Trail of Bits)仍然是例外,而非常态。

结论: 代理攻击面正在快速扩大。对 AI 驱动的工具应采用与高风险、特权访问系统相同的严谨安全措施——否则就要做好迎接新一波 CVE 的准备。

根本原因: 外部内容未被视为不可信输入。这与所有其他代理浏览器审计的失效模式相同。

ToB 的 TRAIL 威胁模型将其清晰地框定为:两个信任区(本地机器 vs. Perplexity 服务器),数据通过 AI 工具流动 = 攻击向量。发现本身并不惊讶,过程才值得关注。Perplexity 是证明规则的例外。

Schneier 对杀链的正确预判

Bruce Schneier 在二月中旬将提示注入(prompt injection)框定为一次完整的攻击杀链:

  1. 初始访问
  2. 持久化
  3. 数据外泄

他一直在连载关于具备自主性的 AI 安全的系列文章——针对大语言模型的侧信道攻击、在代码被拒绝后发布个性化抨击文章的流氓代理(Ars 曾发布后又撤回,但事件确实发生)。

这已经不再是假设。 “AI 脱离脚本” 的威胁正是具备自主性的 AI 安全在实践中的表现。

模式

项目问题影响
Keylime(TPM 证明系统)一行代码将 CERT_REQUIRED 改为 CERT_OPTIONAL身份验证检查被静默禁用
NLTKzipfile.extractall() 未进行路径验证恶意 zip → 任意文件写入 → 导入时远程代码执行
Semantic Kernel一周内出现两次关键漏洞
Ray, Dagu默认关闭身份验证,绑定到 0.0.0.0一次 HTTP 请求即可危及全部
Picklescan用于控制 PyTorch 模型加载;通过动态 eval() 嵌入绕过“我们已使用 picklescan 扫描”并不代表安全姿态

这再次出现了 2005 年式的网络安全问题:未验证的输入、事后才考虑的身份验证、以及“开发者便利”默认设置导致的预授权远程代码执行。唯一的区别是,这些工具拥有比普通 Web 应用更多的访问权限——文件系统、环境变量、API 密钥、浏览器会话。

要点

我们正在以“快速交付,永不审计”为基础,构建未来十年的基础设施。MCP 生态系统、代理化工具层、AI 编码助手——所有这些都以超出安全审查跟上的速度涌现。

  • 自动化漏洞赏金代理发现了 12 个 OpenSSL CVE
  • AISLE 的系统揭示了在 25 年的人类审计数百万次模糊测试 CPU 小时 中仍然存活的漏洞。

攻击能力已经到位,防御姿态却尚未形成。

你有两个选择

  1. 假设一切都已被妥协

    • 在沙箱中运行代理。
    • 永不向它们提供生产凭证。
    • 将每个 MCP 服务器视为已经被攻破。
    • 假设你的 .claude/ 目录已泄露。
    • 设计时注重遏制,而非信任。
  2. 等待血腥洗礼

    • 历史表明,我们终将迎来血腥洗礼。
    • 今天在生产环境部署代理化 AI 意味着你选择成为其中的一部分。

这些工具太有价值而无法忽视,但“有用”和“安全”并不等同。OpenClaw 证明了这一点。eBay 的 MCP 服务器也证明了这一点。Semantic Kernel 在一周内出现的两个关键漏洞同样证明了这一点。

快速构建。但要像预见到风险一样进行构建。

0 浏览
Back to Blog

相关文章

阅读更多 »

Subnetting 详解

什么是 Subnetting?可以把它想象成把一栋大型公寓楼拆分成不同的楼层。每层 subnet 拥有自己的编号主机(hosts),以及建筑……