技术

Claude自己安装npm包,而其中一个就可能悄悄拿走你的文件

Susan Hill

Claude的Computer Use功能能做普通聊天机器人做不到的事。它在你的电脑上打开一个终端,替你安装软件,其中包括直接从全球最大的开源代码仓库npm拉下来的包。诱惑显而易见,因为它把「帮我把这个项目搭起来」缩成了一句话。风险也藏在同一句话里,因为一个包到达的那一刻,npm就能运行这个包随身带来的启动代码,而如今扣动扳机的,是一个自主的智能体。

对任何让AI智能体写代码或跑代码的人来说,而这是一个由开发者、爱好者和没有技术背景的好奇者迅速壮大的群体,现实的问题很直白。如果Claude安装了一个你从未看过的包,而这个包就是为了在落地那一刻复制你的文件而造的,本该是谁来拦下它?一位安全研究者最近的视频正好走了一遍这个场景,展示一个设了陷阱的包在一次例行安装中读取本地文件,而AI毫不犹豫地把这次安装做完了。

这套机制并不新,而这恰恰是它严重的地方。npm的包可以声明安装脚本,也就是一旦某个包被加进项目就自动运行的小指令,早在它的任何一行被有意使用之前就先跑了。这是有据可查的行为,不是缺陷。它让正经的工具得以自我编译或准备运行环境。它同时意味着任何包都能在安装时以和你相同的权限在你的机器上执行代码,而安全团队为此已经警告了许多年。

世界被狠狠提醒了一次赌注有多大,是在攻击者夺取了Axios维护者账户的时候。Axios是一个每周被下载数千万次的网络库,攻击者往里塞进一个恶意依赖,在开发者的机器上装上了一个远程访问木马。他们根本没碰Axios的真实代码,活儿是安装脚本干的。而Axios恰好也是Claude Code自身内部的一块砖,旁边还有数不清的其他应用,这说明你所信任的工具,和它在背后悄悄拉进来的代码之间,距离有多近。

这段演示给这幅熟悉的画面添上的,是智能体。亲手运行安装的人至少还能停一下,读一读包名,察觉它拼错了或者是刚刚才发布的,然后退回去。一个按模糊指令行事的AI智能体没有这种反射。它把自己判断需要的东西装上。而且由于Computer Use还会读屏幕、移动光标、敲键盘,一个被下了毒的依赖不会被困在代码编辑器里。它在整个桌面上来去自如。

值得把它是什么、不是什么说清楚。它不是Claude独有的隐藏后门,也不是模型被骗着绕过自身规则的证据。它是把安装软件的权力交给任何一个自主程序,再叠加上一个十多年来默认就会执行安装代码的仓库,所得到的可预料结果。把Claude换成任何一个拥有相同权限的别的编码智能体,画面一模一样。危险住在自主性和仓库里,而不在某一家公司的聊天机器人里。

Anthropic其实一直在朝相反的方向用力。公司不久前为自己的编码工具推出了一个沙箱,把智能体同系统其余部分隔开,限制它能读哪些文件、能够到哪些服务器,并把支撑它的隔离工具包作为开源发布,供其他开发者使用。其中的道理,正是这段演示所揭开的。一个够不到你SSH密钥的智能体没法把它们泄露出去,一个联系不上陌生服务器的智能体也没法把你的文件送到任何地方。公司称,这些边界把它向用户弹出的权限询问减少了大约百分之八十四。这一点很要紧,因为一个事事都问的工具,很快就会把人训练成一律点同意。

对真正在用这些工具的人来说,防御既乏味又有效。把智能体放进沙箱、容器或者一次性的虚拟机里运行,让一个坏包能够到的最糟的地方,也不过是一个可以丢弃的环境。在工作流程允许的地方关掉自动安装脚本,有几个较新的包管理器已经默认这么做了。把凭据、密钥和个人文件,放在智能体可以为所欲为的那台机器之外。并且,要用对待「打开这封邮件的附件」的那份警惕,去对待「帮我把这个装上」,因为骨子里它离前者比看上去更近。

演示里那个具体的包,是一名研究者的证明,而不是一场真实的爆发,也没有迹象表明它触及了真实用户。不会停下来的,是它背后的那套模式。靠智能体写代码正在以快过那些本该让它安全的习惯的速度变成默认,而这些智能体所倚靠的仓库,从来不是为一个敲下安装命令的不是人的世界而建的。在那道裂缝合拢之前,软件安全里最古老的那条规矩如今指向了一类新的用户:你的智能体装下什么,就会运行什么,所以在放它开始之前,先决定好它可以碰什么。

讨论

有 0 条评论。