AWS Kiro 缺陷:一个被投毒的网页即可改写其配置并执行代码
导语:AWS 的代理式编码 IDE Kiro 存在严重设计缺陷:网页上一段单像素隐藏文本即可诱使该 IDE 改写自身 MCP 配置文件并执行任意代码,整个过程无需任何开发者审批。本文基于 Intezer 与 Kodem Security 的联合研究,剖析其利用链、历史脉络及 AWS 的修补措施。
网页上的隐藏文本足以让 Kiro——AWS 的代理式编码 IDE——改写自己的配置文件,并在开发者机器上运行攻击者的代码,整个过程中没有任何审批环节能够阻止。
Intezer 与 Kodem Security 联合研究发现,让 Kiro 总结一个页面这样平常的请求,都可能以远程代码执行告终。AWS 已修补该问题,但未分配 CVE 编号。
Kiro 的安全模型建立在一个前提之上:人类点击"允许"。该代理可以运行 shell 命令、抓取 URL 并编辑文件,其设计假设开发者在任何危险操作发生前都会进行审核。这一审批步骤就是安全边界,而该缺陷让攻击者能够在开发者从未被给予任何选择的情况下绕过它。
薄弱环节是一个文件——它告诉 Kiro 应加载哪些外部工具。Kiro 从 ~/.kiro/settings/mcp.json 中读取其 Model Context Protocol 服务器列表,以及启动每个服务器所使用的精确命令。当该文件发生更改时,Kiro 会重新加载它,并按照文件描述以开发者权限在主机上启动相应程序。在此次研究开展期间,Kiro 可以通过其 fsWrite 工具自行写入 mcp.json,无需任何审批,并会自动重新加载。
任何能够影响该文件内容的人都可以注册一个服务器,其启动命令即为任意代码,Kiro 重新加载时该代码便会立即运行。
将文本注入到 Kiro 的上下文中是件容易的事。每当开发者要求 Kiro 抓取 URL、阅读文档或在网络上搜索时,该代理都会拉取外部内容。Intezer 的概念验证将其指令藏在一个普通的 API 文档页面上的单像素白色文本中(color:#fff;font-size:1px)。开发者看到的是一份干净的 API 参考文档。Kiro 则将这个隐藏块视为一项设置任务,将恶意服务器写入 mcp.json,然后重新加载。几秒钟之内,恶意服务器启动,攻击者的代码便开始运行。
在 Intezer 的演示中,载荷仅每隔十秒回传一次机器的主机名、用户名和平台信息,仅够证明代码执行成功。同一原语可以运行任何开发者可用的命令,足以窃取凭据和源代码、植入持久化机制,或横向移动到他们能够触及的任何内部系统。

研究人员将回连指向 localhost,因此没有真正的 Kiro 用户受到影响,他们也指出该攻击并非完全可靠:模型具有非确定性,可能会对页面进行总结而忽略隐藏块。在他们的测试中,该攻击在一到两次尝试内即可成功——只需一次成功便已足够。
Kiro 在某些情况下确实会弹出一个窗口,提示 MCP 配置已更改并要求审批。但这并没有任何影响。无论开发者点击什么,配置都会重新加载,因此该警告无法提供真正的保护。开发者实际唯一批准的仅仅是抓取一个 URL 这一动作。
能够写入决定其自身可运行内容的文件的代理,此前已在 Kiro 中出现过。在 2025 年 7 月 Kiro 发布当天,Embrace The Red 的 Johann Rehberger 展示了同样的 mcp.json 写入即执行的操作:一次提示注入将自定义代码植入 MCP 设置文件,并在文件保存的那一刻立即执行。他还指出了第二条路径,即写入 .vscode/settings.json 以将 shell 命令加入白名单。AWS 的回应是发布 Kiro 0.1.42,针对这些写入操作新增了审批提示,但仅在 Supervised 模式下生效。默认的 Autopilot 模式仍会自行写入该文件,而 Intezer 在 2026 年使用的攻击链正是在这一模式下展开。当时同样没有分配 CVE 编号。
其他研究者也发现了同类问题的相邻变体。Cymulate 报告称,Kiro 会在打开文件夹时自动执行写入 .vscode/tasks.json 的代码。AWS 为其分配了 CVE-2026-10591(CVSS 3.1 下评分 8.8,CVSS 4.0 下评分 8.6),并在 0.11 系列中完成了修复。
Intezer 的 mcp.json 攻击链在 2026 年 2 月报告时仍存在于 0.9.2(macOS)和 0.10.16(Ubuntu)版本中,并已在 v0.11.130 中确认修补。AWS 的解决方案是不再信任模型对这些文件的判断,而是将检查下放到平台层。Kiro 现在将 mcp.json、.vscode/tasks.json、.git 目录以及其他敏感文件标记为受保护路径,每次写入前均需明确审批。
其官方文档直接指出:"Supervised 模式是一种代码评审工作流,并非安全控制。"随后发布的 1.0 版本进一步贯彻了同一原则,引入了基于能力的权限模型,对任何开发者尚未明确允许的操作都会提示征求同意。
这一组合堵住了 Intezer 所利用的路径:Intezer 确认该攻击在 0.11.130 中已失效,且不同于 2025 年的修复,受保护路径检查在 Autopilot 和 Supervised 两种模式下均有效。
来源信息
来源:The Hacker News
原文链接:https://thehackernews.com/2026/07/aws-kiro-flaw-let-poisoned-web-page.html
作者:info@thehackernews.com (The Hacker News)

