我把密钥交给了 Claude Code,蠕虫也一样。
AI 编程智能体(agents)并没有被“越狱”。它们正在执行你让它们做的事情。它们使用你的凭据来运行命令。问题在于,攻击者可以提供输入。
最近出现的漏洞展示了这种情况发生的三种不同方式。
- 供应链蠕虫
一个名为 Mini Shai-Hulud 的蠕虫影响了超过 170 个软件包。它不仅仅是窃取密钥然后离开,它还会将自身写入你的配置文件中。它隐藏在
.vscode/tasks.json或.claude/settings.json中。当你打开文件夹或启动会话时,这些文件会自动运行代码。即使你删除了恶意软件包,恶意钩子(hook)仍会留在你的磁盘上。
- 供应链蠕虫
一个名为 Mini Shai-Hulud 的蠕虫影响了超过 170 个软件包。它不仅仅是窃取密钥然后离开,它还会将自身写入你的配置文件中。它隐藏在
- 白名单绕过
Cursor 编辑器使用白名单来确保自动运行的安全。攻击者发现了一种利用
export等 shell 内置命令绕过白名单的方法。通过提示词注入(prompt injection),攻击者可以让智能体设置一个被污染的环境变量。这会导致已批准的命令以你从未预期的行为运行。安全控制失效的原因在于,它是为人类设计的,而不是为机器设计的。
- 白名单绕过
Cursor 编辑器使用白名单来确保自动运行的安全。攻击者发现了一种利用
- 协议缺陷
mcp-remote代理存在严重的命令注入漏洞。如果你连接到一个恶意的 MCP 服务器,它可以在握手期间在你的机器上执行命令。这是因为客户端信任了它所连接的服务器。
- 协议缺陷
核心问题很简单。编程智能体模糊了数据与命令之间的界限。大语言模型(LLM)将指令和外部数据视为同一种东西。在你对智能体说的话与世界对智能体说的话之间,不存在任何边界。
如何保护自己:
- 在环境变量中使用短期令牌(short-lived tokens),而不是长期密钥。
- 关闭任何涉及密钥或生产环境任务的自动运行功能。
- 密切关注
.claude/settings.json等配置文件是否有异常变化。 - 将来源证明(provenance attestations)视为来源证明,而非安全性证明。
- 将你的依赖项锁定到特定的哈希值(hashes)。
像对待其他高权限进程一样对待你的 AI 智能体。它需要严格的边界。
如果你在自动运行模式下运行智能体,你如何决定何时让它工作,何时停止它?
来源:https://dev.to/kkierii/i-gave-claude-code-the-keys-so-did-a-worm-34a4
可选学习社区:https://t.me/GyaanSetuAi