你打的那行 pip install litellm,可能已经把你AWS密钥送给了黑客。
这不是演习。2026年3月24日,Python生态圈最受欢迎的AI模型路由库LiteLLM,在PyPI上被投毒。恶意版本只挂了3小时,却足以让全球数百万开发者的机器变成别人的提款机。
AWS密钥、Kubernetes配置、Git凭证、加密货币钱包——只要你那天跑了 pip install litellm,这些秘密可能已经坐上了黑客的服务器。
更瘆人的是:这次攻击不是意外,而是一场精心策划的供应链入侵。黑客先搞定了安全扫描工具Trivy,再用它偷到了LiteLLM的发布密钥,最后在PyPI上扔下了两个带毒的版本。
而这一切差点没人发现。
一切从一个"BUG"开始
3月24日,FutureSearch的工程师Callum McMahon正在测试一个Cursor MCP插件。插件需要 litellm 作为依赖。
就在 pip install 完成后,他的机器突然卡死了——内存被吃干抹净。
如果是别人,可能就直接重启完事。但McMahon不是省油的灯。他顺着异常一路追查,发现了 site-packages/ 目录下有个叫 litellm_init.pth 的文件,足有34,628字节。
这个 .pth 文件,是Python的一个"启动钩子"。只要Python解释器启动——不管是你跑代码、装包、还是IDE打开——它都会自动执行。
McMahon把文件内容拖出来一看,好家伙,base64编码的恶意代码,塞满了偷凭证的逻辑。
"如果攻击者没写错这行代码导致内存耗尽,这个后门可能已经潜伏好几周了。"
Andrej Karpathy事后感叹:"供应链攻击是现代软件最可怕的事情。"
攻击链:一场长达5天的潜伏
让我把时间拨回3月19日。
那天,攻击者盯上了Trivy——一个开源容器安全扫描工具,在GitHub上星标超过30k。他们利用Trivy CI/CD流程里的一个漏洞,偷走了 aqua-bot 的凭证。
这一步,是整个攻击的起点。
3月23日,注册了恶意域名 models.litellm.cloud(注意,这跟正规的 litellm.ai 毫无关系)。同一天,另一个安全工具Checkmarx KICS也遭了毒手。
3月24日上午10:39,LiteLLM 1.82.7 上架PyPI。13分钟后,1.82.8 跟上。
这两个版本有多毒?
1.82.7 把恶意代码直接嵌进 proxy_server.py,只要你import litellm.proxy,代码就激活。
1.82.8 更阴险,直接写入了 .pth 文件。这意味着——
pip install 的时候,恶意代码就跑了。
你开IDE写Python的时候,恶意代码就跑了。
你跑任何Python脚本,恶意代码就跑了。
甚至——你在CI/CD里跑测试,恶意代码也在后台悄悄执行。
Snyk的数据显示,LiteLLM每天被下载340万次。中招的不只是直接安装的人。任何依赖litellm的项目——DSPy、MLflow、OpenHands、CrewAI——全部被拖下水。
这就是供应链攻击的恐怖之处:你永远不知道你装的那个包,里面藏着谁的黑手。
黑客是怎么偷的?三阶段Payload全解析
拿到凭证后,黑客的代码开始满世界搜刮。
第一阶段:信息收集
脚本会在你的机器上翻个底朝天:
- SSH私钥、.env文件、Git凭证
- AWS、GCP、Azure的所有云凭据
- Kubernetes配置、Docker registry密码
- CI/CD配置(Jenkins、Travis CI、Terraform)
- 加密货币钱包(BTC、ETH、Solana、Monero)
- 甚至 /etc/shadow 里的密码哈希
第二阶段:加密传输
偷到的数据会用AES-256加密,再套一层RSA 4096位非对称加密,最后打包成 tpcp.tar.gz 发送到 models.litellm.cloud。
整个过程,你的系统完全无感。
第三阶段:持久化和横向移动
恶意代码会在你家里留下后门:
- 写一个 sysmon.py 到 ~/.config/sysmon/
- 创建一个systemd服务,每次开机自动启动
- 每5分钟去 checkmarx.zone 领新指令,想干什么干什么
如果检测到Kubernetes环境?它会直接在你的集群里起特权Pod,把后门种到每个节点上。
Wiz的研究员确认了一个细节:LiteLLM、Trivy、KICS这三个攻击用的RSA公钥是同一把。这是TeamPCP(也叫Persy_PCP、ShellForce、DeadCatx3)的签名。
这个组织从2025年12月就开始作案,这次LiteLLM事件是他们的第九阶段。
当社区开始自救,黑客在删帖
最魔幻的来了。
3月24日上午11:48,McMahon在GitHub上开了issue #24512,披露了这个后门。
然后呢?
12:44到12:46,88条机器人评论从73个账号涌进来,全是垃圾内容。2分钟后,攻击者用窃取的维护者账号 krrishdholakia 把issue关掉了,标记为"not planned"。
这是抢在社区反应之前,先把嘴堵上。
好在大家又开了新issue #24518,Hacker News上讨论炸了,324个points。攻击者的把戏没完全得逞。
你中招了吗?
快速检查:
pip show litellm | grep Version
如果显示 1.82.7 或 1.82.8——
别慌着升级。先别跑任何Python代码。因为升级过程本身就会触发 .pth 里的恶意代码。
你需要:
- 删掉 ~/.config/sysmon/ 里的后门
- 查systemd服务 sysmon.service
- 重置所有凭证:SSH密钥、AWS访问密钥、GCP服务账号、GitHub token、Kubernetes secret、Docker密码、数据库密码、加密货币钱包
- 如果在K8s里跑过,审计所有namespace的secret,检查 kube-system 里有没叫 node-setup-* 的可疑Pod
为什么pip的哈希校验没拦住?
这是最让人脊背发凉的事实。
pip install --require-hashes 会验证文件完整性——但它只验证文件没被篡改,不验证内容是不是恶意的。
恶意代码是用正规密钥发布的,走的正规流程。PyPI显示一切正常,hash对得上,文件名没拼错。
"唯一的检测路径是检查包是否安装了 .pth 文件,以及文件里有没有 subprocess、base64、exec 这种敏感词。但现在没有主流pip插件做这件事。"
这是Snyk报告里的一句话。翻译成人话:我们信任了"正规渠道",但正规渠道已经被端了。
这事还没完
LiteLLM事件是Phase 09。TeamPCP的Pipeline里,Phase 10可能已经在路上了。
他们甚至开始用AI帮忙找目标。研究员发现了一个叫 hackerbot-claw 的组件,里面跑着 openclaw——一个AI agent,自动扫描下一个猎物。
攻击者甚至用上了Internet Computer Protocol (ICP) 做C2通信。因为ICP是去中心化的,域名注册商封不了,服务器提供商也砍不掉。
这意味着什么?
供应链攻击正在升级。不仅是技术升级,是战略升级。
以前是偷个库、改个代码,现在是先渗透你的开发工具,再用你的凭证去投毒下一个库。一环扣一环,防不胜防。
写在最后
Karpathy说得对:"古典软件工程告诉我们,依赖是好的——我们在用砖头堆金字塔。但现在,这事得重新掂量了。"
他最近越来越倾向于,让LLM直接生成简单的功能代码,而不是引入一堆第三方库。
也许未来,写代码的方式会变。但现在——
今晚回去,先检查一下你机器上的 litellm 版本吧。
【MiniMax-M2.5锐评】:这波攻击把"信任链"三个字按在地上摩擦——你信任PyPI,PyPI信任维护者,维护者的CI/CD被渗透了,然后你机器上的AWS密钥就成了别人的提款机。供应链安全这事儿,不是加几个检查就能解决的。
参考链接:
https://x.com/karpathy/status/2036487306585268612