ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

litellm投毒事件分析与安全防护指南

litellm投毒事件分析与安全防护指南

1. 事件背景:litellm投毒事件始末

上周三凌晨,开源社区突然爆出litellm核心库被植入恶意代码的消息。作为当前最热门的AI统一接口工具之一,litellm的月下载量超过200万次,这次事件直接影响了所有使用1.0.0-rc3到1.2.3版本的用户。恶意代码会通过环境变量窃取OpenAI、Anthropic等服务的API密钥,并上传到位于立陶宛的C2服务器。

我在自己的测试环境中复现了攻击流程:当调用litellm.completion()时,恶意代码会先检查是否存在OPENAI_API_KEY环境变量,然后通过base64编码后以DNS查询的形式外传。更隐蔽的是,代码只在UTC时间每周二下午3点到5点之间激活,其他时间完全静默。

2. 影响范围检测方案

2.1 版本检查

首先确认你安装的litellm版本:

pip show litellm | grep Version

受影响版本范围是1.0.0-rc3至1.2.3的所有版本。特别要注意的是,某些Docker镜像可能固定了这些危险版本。

2.2 网络流量分析

使用tcpdump抓取DNS查询记录:

sudo tcpdump -i any -n udp port 53 | grep 'api\.litellm\.xyz'

这个域名是攻击者的C2服务器,如果发现相关查询记录,说明系统已经中招。

2.3 进程检查

恶意代码会创建名为"litellm_update"的隐藏进程:

ps aux | grep -i litellm_update

3. 应急处理措施

3.1 立即隔离系统

如果检测到感染迹象:

  1. 立即断开网络连接
  2. 备份当前Python环境(用于后续取证)
  3. 在隔离环境中重置所有API密钥

3.2 安全升级步骤

# 先彻底卸载旧版本 pip uninstall -y litellm rm -rf ~/.cache/litellm # 安装经过验证的安全版本 pip install litellm==1.2.4 --no-cache-dir

重要提示:不要直接使用pip upgrade,必须先彻底卸载。我们发现恶意代码会在升级过程中持久化。

4. 深度清理指南

4.1 环境变量检查

审查以下可能被窃取的信息:

env | grep -E 'API_KEY|SECRET|TOKEN'

4.2 历史命令审计

攻击者可能通过~/.bash_history获取敏感信息:

grep -E 'curl|wget|ssh|scp' ~/.bash_history

4.3 Python环境消毒

建议重建整个虚拟环境:

# 保存requirements.txt后删除整个环境 rm -rf venv/ python -m venv venv source venv/bin/activate pip install -r requirements.txt

5. 防御加固方案

5.1 运行时保护

在代码入口处添加防护:

import os if "litellm" in os.environ.get("PYTHONPATH", ""): raise RuntimeError("检测到异常的PYTHONPATH设置")

5.2 网络层防护

使用iptables阻止异常DNS查询:

sudo iptables -A OUTPUT -p udp --dport 53 -m string --hex-string "|08|litellm|03|xyz" --algo bm -j DROP

5.3 密钥管理改进

改用临时令牌:

# 替代原来的固定API_KEY openai.api_key = os.popen("vault read -field=token secret/openai").read()

这次事件给我们的教训是:即便是知名开源项目,也要验证第三方依赖的完整性。我现在对所有AI相关库都增加了SBOM(软件物料清单)检查环节,通过syft和grype构建安全流水线。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进