AI网关LiteLLM遭供应链投毒:窃取云密钥与K8s集群权限
2026年3月,LiteLLM PyPI供应链攻击事件深度分析:攻击者通过木马化AI网关库,利用Base64编码Payload窃取AWS/K8s/数据库凭证及Slack Webhook,并通过创建特权Pod实现容器逃逸。本文详解攻击链、IoC清单及缓解措施,为AI基础设施安全提供关键防护指南。
⛓️ Critical 供应链攻击
2026年3月,攻击者通过入侵PyPI仓库并上传两个木马化版本的LiteLLM(1.82.7和1.82.8),向AI开发者生态发起供应链攻击。恶意代码在运行时解密并执行Base64编码的Payload,递归扫描服务器目录窃取AWS、Kubernetes、数据库配置及SSH密钥,并利用AWS元数据服务窃取临时凭证;同时尝试创建特权Pod实现容器逃逸,通过systemd注册持久化后门,最终将加密数据外传至C2服务器。
来源:Kaspersky Securelist | 2026-03-26 | 原文链接
🔍 关键发现
- 攻击者通过PyPI发布两个木马化LiteLLM版本(1.82.7通过proxy_server.py触发,1.82.8通过.pth文件实现解释器启动即执行),绕过代码审查。
- 恶意Payload使用AES-256-CBC加密窃取数据,并用RSA加密密钥后打包为tpcp.tar.gz发送至C2服务器checkmarx[.]zone。
- 攻击链覆盖静态文件窃取(SSH/.env/Helm/TLS)、云运行时凭证窃取(AWS IMDS/ECS)以及K8s集群横向移动(创建特权Pod并挂载宿主机根文件系统)。
- 发现两个木马化的Checkmarx扩展(ast-results 2.53.0和cx-dev-assist 1.7.0)传播NodeJS变种,但该变种不进行K8s提权,仅实现本地持久化。
⚔️ 攻击链分析
1. 攻击者入侵PyPI仓库,上传木马化LiteLLM包(1.82.7/1.82.8)。 2. 受害者安装或更新后,恶意代码在导入代理功能或Python解释器启动时执行Base64编码的Payload。 3. Payload递归扫描/root、/app等目录,窃取SSH密钥、云配置、数据库凭据及Slack/Discord Webhook;同时调用AWS IMDS/ECS获取临时IAM凭证。 4. 若检测到Kubernetes环境,创建特权Pod并挂载宿主机根目录,实现容器逃逸;通过systemd注册sysmon.py后门定期从C2拉取更新Payload。
🚩 失陷指标 (IOC)
checkmarx[.]zonecheckmarx[.]zone/rawcheckmarx[.]zone/static/checkmarx-util-1.0.4.tgzlitellm==1.82.7litellm==1.82.8ast-results 2.53.0 (Checkmarx extension)cx-dev-assist 1.7.0 (Checkmarx extension)
🛡️ 缓解建议
- ✅ 立即将LiteLLM升级至1.82.9或更高版本,并验证PyPI包的SHA256哈希值是否与官方发布一致。
- ✅ 在CI/CD流水线中集成依赖扫描工具(如pip-audit、Trivy),对第三方库进行静态分析,检测Base64编码或混淆代码。
- ✅ 限制AWS EC2/ECS实例的元数据服务访问,使用IAM角色限制临时凭证的权限范围,并启用IMDSv2。
- ✅ 在Kubernetes集群中实施Pod安全策略(PSP)或OPA Gatekeeper,禁止privileged: true和hostPath挂载,并监控异常Pod创建行为。
- ✅ 对开发环境中的文件系统访问进行审计,重点关注/root、/app、/var/www等目录的异常读取操作,并监控systemd服务注册事件。
涉及漏洞:[]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 如何检测环境中是否存在LiteLLM恶意版本?
运行 `pip show litellm` 检查版本是否为1.82.7或1.82.8;扫描文件系统中是否存在`proxy_server.py`或`litellm_init.pth`中的Base64编码字符串,并检查`~/.config/sysmon/sysmon.py`和`/tmp/.pg_state`文件。
❓ 攻击者如何绕过AWS元数据服务限制?
恶意代码直接向169.254.169.254(IMDS)和169.254.170.2(ECS)发送HTTP请求获取临时IAM凭证。若实例未启用IMDSv2或未限制元数据访问,攻击者即可窃取凭证。
❓ 容器逃逸后攻击者能做什么?
通过创建`securityContext.privileged=true`的Pod并挂载宿主机`/`目录,攻击者可在宿主机上执行任意命令,安装持久化后门(sysmon.py),并横向移动至同一集群内的其他节点。