字号 ·· | 护眼
theregister

研究人员展示如何通过要求Claude Code总结网站来欺骗它

Anthropic的Claude Code在Auto Mode下运行Opus 5时,只需要求编码代理总结一个网站,就能被欺骗执行攻击者控制的代码。

根据提示注入专家Johann Rehberger(又名wunderwuzzi)的说法,这种攻击成功率高达80%。

在一篇博客和视频演示中,他详细介绍了如何劫持Auto Mode下的Opus 5,这是自8月中旬以来Claude的默认设置。

攻击首先要求代理编码模型总结一个恶意网站,该网站伪装成笔记本记录的存档,然后诱骗Claude使用curl而不是其WebFetch工具来检索页面内容——但不直接告诉模型使用curl。

WebFetch请求失败,返回415不支持的媒体类型响应,因此模型决定通过发出带有curl的Bash工具调用来直接访问网站。

网站返回303响应,并重定向到一个恶意ZIP存档,Claude随后下载该存档。

该存档包含看似无害的文件,包括目录元数据、README文件、七个Base85/zlib编码的JSON笔记本记录、一个macOS解码器darwin二进制文件——以及一个名为struct.py的恶意Python文件。

Claude根据其安全护栏,拒绝运行“这是计划好的,也是攻击者想要的”,Rehberger写道。AI没有使用提供的二进制文件,而是决定编写自己的解码器。

“讽刺的是,这个安全决定就是利用路径,”Rehberger解释道,并在文本中添加了一个紫色魔鬼表情符号。

新的解码器导入base64,从这里攻击依赖于Python模块遮蔽来诱骗模型运行恶意的struct.py代码。

当本地文件与Python标准库模块同名时,就会发生模块遮蔽。本地文件隐藏了官方模块,导致Python加载它。

在这种情况下,标准库base64模块导入合法的struct模块,而恶意ZIP包含一个同名的恶意文件。

Rehberger表示,他使用ChatGPT混淆恶意的struct.py代码以绕过Claude的安全控制,这成功启动了一个单独的Python进程来下载并执行远程负载——在这种情况下是命令与控制回调,进而打开计算器。我们假设真正的攻击者会执行一些更恶意的操作。

在另一种攻击场景中,struct.py通过claude -p启动第二个无头Claude Code,这意味着这种提示注入不仅可用于远程执行代码,还可以创建全新的代理。

“嵌套的Claude获得自己的工具访问权限和上下文,”Rehberger写道。

“在这些运行中,子代理执行了基本侦察(whoami、uname、id),打开计算器并写入主文件夹中的本地文件。”

在三种变体中各测试五次,Rehberger指出这些是小样本,他报告的成功率在60%到80%之间。“我认为这些结果代表了有动机的攻击,但并不全面。”

Anthropic没有回应The的置评请求,但据报道告诉Rehberger,模型的行为“按设计工作”。我们以前听过这个。

“Auto Mode是一个便利功能,由尽力而为的分类器支持,而不是安全保证,”Rehberger写道,转述了Anthropic对其安全报告的回应。

根据Rehberger的说法,分类器并非旨在阻止由看似良性步骤组成的坚定提示注入链,真正的边界是操作系统隔离和网络出口控制。

根据Rehberger的说法,关键要点是在沙箱中运行此代理和其他编码代理。“解决方案是我们多年来一直在讨论的,”他写道。“不要信任模型输出。”