事件概述 - 开源Python库LiteLLM的版本1.82.7和1.82.8被恶意植入信息窃取程序,构成供应链攻击[1][2] - 恶意版本在PyPI上存在约三小时后被官方发现并隔离,但期间已造成影响[4] - 该库的维护者Krrish Dholakia已公开证实此事[3] 事件影响与严重性 - LiteLLM是一个高人气开源库,每月下载量高达9700万次,GitHub拥有超4万星,是AI开发领域安装量最高的Python包之一[9] - 每天下载量约为340万次,许多设置了自动更新安装的程序员可能已受影响[4] - 攻击影响范围可能超出直接用户,例如OpenClaw等依赖该库的软件也会间接受到影响[6][7] - 社区对此反应迅速,知名人士Andrej Karpathy也出面提醒程序员警惕此次供应链攻击[5] 攻击技术细节 - 恶意版本中包含一个名为litellm_init.pth的文件,该文件会在Python进程启动时自动执行,无需用户主动调用库[9] - 恶意文件大小为34628字节,经过双重base64编码,其有效载荷负责窃取信息[12] - 攻击分为三个阶段:1) 收集SSH密钥、AWS/GCP/Azure凭证、Kubernetes配置、数据库密码等敏感数据及环境变量[13];2) 使用硬编码的4096位RSA公钥和AES-256-CBC加密数据,打包后发送至攻击者控制的云端[15];3) 若检测到Kubernetes服务帐户token,会尝试在所有节点创建特权Pod以安装持久化后门[17] - 版本1.82.7的恶意代码需用户运行LiteLLM时触发,而版本1.82.8则只需启动Python就会执行[19] 攻击溯源与方式 - 攻击源头是项目CI/CD管道中使用的安全工具Trivy的GitHub Action被篡改[18] - 攻击者通过污染的Trivy,先后攻击了Checkmarx KICS和Aqua Security的仓库,并最终窃取到了LiteLLM维护者的PyPI凭证[19] - 利用窃取的凭证,攻击者直接在PyPI上发布了两个恶意版本(1.82.7和1.82.8)[19] 用户应对与修复措施 - 检查版本:通过命令pip show litellm | grep Version检查,若版本为1.82.7或1.82.8,或发现litellm_init.pth文件,则表明已受影响[21] - 移除与清理:立即删除受影响版本,并清除包管理器缓存(如rm -rf ~/.cache/uv或pip cache purge)[22][23] - Kubernetes环境检查:审核kube-system命名空间中是否存在node-setup-*的Pod,并检查集群密钥[24] - 更换凭证:所有可能泄露的凭证(如SSH、云服务API密钥等)必须全部更换[25] - 版本锁定:未安装恶意版本的用户应暂时将LiteLLM锁定在1.82.6版本,等待安全的新版本发布[26] 行业趋势与反思 - 针对开发工具和自动化流水线的供应链攻击正呈现规模化和常态化趋势,Trivy、KICS、LiteLLM等高权限工具成为重点目标[27] - 此类工具设计上拥有广泛读取权限,一旦被入侵,数据泄露规模远超一般应用程序[28] - 供应链攻击的影响具有传递性,即使未直接安装恶意程序,只要依赖链中的底层工具受影响,用户也会被波及[29] - 大型项目因依赖项众多,面临的风险极高,而开发者通常对深层依赖的安全性检查和版本更新警惕性不足[30] - 行业专家指出,过度依赖外部库存在风险,建议重新评估依赖关系,或在可行的情况下减少依赖,甚至将源代码保留在自己的库中[31][33] - 有观点认为,未来类似的供应链攻击将成为新常态,开发工具的供应链安全亟待加强[35] - 此次事件能快速被发现具有一定偶然性,如果攻击者代码更隐蔽,可能悄无声息地运行数天甚至数周,影响数百万台机器[36][37]
PyPI遭投毒!LiteLLM用户Python启动就中招,个人凭证秒泄露
量子位·2026-03-25 14:31