【导读】AI开发者最常用的Python库litellm被植入恶意代码。3月24日,有人在PyPI上传了带毒版本,pip install之后自动偷取你电脑上的所有密码、密钥、云凭证和加密钱包。这个毒之所以被发现,是因为攻击者自己的代码有bug。
litellm被投毒了。
就是那个AI开发者天天用的Python库。每月下载量9700万次。你要调OpenAI的接口、调Claude的接口、调任何一家大模型的接口,大概率绑着它。
3月24日,有人往PyPI上传了一个新版本:1.82.8。看起来就是个正常更新。但里面多了一个文件,叫litellm_init.pth。
这个文件会在每次Python启动时自动执行。不需要你import litellm,装上就跑。
装上之后,它把你电脑上能找到的所有敏感信息打包发走。SSH密钥。AWS、Google Cloud、Azure的云凭证。Kubernetes集群配置。Git凭证。环境变量里的每一个API key。Shell历史记录。加密货币钱包。SSL私钥。CI/CD的密码。数据库密码。
是的,是全部。AES-256加密,RSA打包,发到攻击者的服务器。你以为偷密码已经够狠了。但不光如此,如果你的机器跑在Kubernetes上,它还会试着部署特权Pod,挂载主机文件系统,在集群的每个节点上建后门。
litellm官网的SOC 2安全认证标识——通过认证的库被投毒了救命的bug
这个毒在PyPI上挂了不到一个小时就被发现了。
发现它的人叫Callum McMahon。他不是安全研究员。他就是个普通开发者,在Cursor里装了一个MCP插件。这个插件的某个依赖的依赖是litellm。他自己都不知道自己装了litellm。
然后他的电脑突然内存耗尽,崩了。
他去查原因。一层一层翻下去,翻到了litellm 1.82.8里那个恶意文件。攻击者的代码有一个递归fork bomb——不断复制自身进程直到内存爆炸。
攻击者写了个bug。
如果他的代码写得好一点——不崩溃,安静地跑在后台偷数据——没有人知道要过多久才能发现。几天?几周?litellm每月9700万次下载。
Karpathy发了条推:如果不是vibe code出来的攻击,可能很长时间都不会被发现。
Vibe code。------写恶意代码的人可能也在用AI写代码,然后AI给他写了个会崩溃的bug。AI开发者用AI攻击AI开发者,结果被AI的bug救了。
你可能根本不知道自己装了它
你装dspy——斯坦福那个做AI编程框架的热门项目——它依赖litellm>=1.64.0。你pip install dspy的时候,litellm就跟着进来了。
OpenClaw,就是前阵子火到不行的那个AI agent,用户把整台电脑交给它操作的那个——它也用litellm。Hermes也用。
你可能从来没主动装过litellm。但你装的某个工具的某个依赖的某个依赖用了它。供应链就是这样:你信任的不是一个包,是一整条链。链上任何一环断了,你全完。
有人在评论区说得直白:这些工具让用户把整个数字生活交出去,然后它们底下的地基被人换了。
维护者也沦陷了
Daniel Hnyk发了第一条警告推文。288万人看到了。一小时后他又发了一条:情况更糟了。
litellm的GitHub仓库上有人开了issue报告这个恶意版本。issue被项目维护者关闭了,标记为"not planned"。
不是维护者不在乎。是维护者的账号可能也被入侵了。恶意版本直接上传到了PyPI,GitHub上没有对应的release。要么是维护者的PyPI token被盗了,要么是维护者本人的账号被控制了。
issue被关闭之后,评论区涌进了大量bot spam。有人截了一张litellm官网的图:页面上写着"SOC 2 secured by Delve"。通过了SOC 2安全审计的库,被投毒了。
355个人点了赞。
每一次pip install都是一次赌博
恶意版本已经被PyPI撤下了。litellm团队后来发了声明。但伤害可能已经造成——有未经证实的报告说已有数百万美元加密货币被盗。
Karpathy在那条推文的最后写了一段话。他现在的做法是:能不依赖就不依赖。需要什么功能,让LLM直接抄一份过来,不走依赖链。传统软件工程说依赖是好东西。这件事他要重新想了。
你上次pip install是什么时候?那个包后面有多少层依赖,你数过吗。
这次是攻击者自己手滑。下次呢。