AI 界“切尔诺贝利”?4.8 亿下载量组件投毒,你的密钥可能正在裸奔
近日,AI 开源社区发生了一场足以载入史册的安全地震。知名大模型网关工具 LiteLLM 遭遇供应链投毒,受影响版本被植入恶意代码。要知道,这可是月下载量近 1 亿、累计下载量超 4.8 亿的明星项目,更是 DSPy 等众多主流 AI 框架的底层依赖。 连 AI 界大神 Andrej Karpathy 都在 X 平台上发出警告,将其形容为“软件恐怖事件”。这不仅仅是一次简单的漏洞修复,这是对整个 AI 基础设施信任链的一次精准爆破。当你在深夜运行 `pip install` 时,你可能不仅安装了一个工具,还亲手为黑客打开了自家服务器的大门。
暗度陈仓:一场精心策划的供应链猎杀
这次攻击的精妙之处,在于它没有直接攻击 LiteLLM 本身,而是选择了“曲线救国”。攻击者首先入侵了 LiteLLM CI/CD 流水线中依赖的容器漏洞扫描器 Trivy。这是一个典型的“上游供应链打击”——通过感染安全工具来获取信任。 被篡改的 Trivy 在流水线中暗中提取了存储在环境变量里的 `PYPI_PUBLISH` 令牌。一旦掌握了向官方仓库发布新包的最高权限,攻击者便堂而皇之地向 PyPI 发布了植入恶意文件的 1.82.7 和 1.82.8 版本。
“这是在利用信任链进行自杀式攻击。你信任的工具,变成了刺向你的匕首。”
最致命的一环在于恶意代码的触发机制。攻击者利用了一个极其隐蔽的 Python 特性:`.pth` 文件。Python 的 site 模块在解释器启动时,会自动执行目录下的 `.pth` 文件。这意味着受害者根本不需要在代码里写 `import litellm`,只要安装了该包,任何 Python 进程的启动都会瞬间唤醒恶意载荷。 这种“静默触发”机制,让排查难度呈指数级上升。很多开发者甚至在不知情的情况下,已经成为了僵尸网络的一部分。
损失清单:你的哪些资产正在被打包发送?
一旦恶意代码被触发,它不会立即破坏系统,而是像窃贼一样,静默地收集所有有价值的资产。根据朱雀实验室的分析,恶意脚本会深度扫描并窃取主机上的核心凭证与配置文件。 具体来说,以下资产极其危险:
1. 核心身份凭证
SSH 私钥及配置、.gitconfig、Shell 历史记录。
2. 敏感配置文件
.env 文件、数据库密码、加密钱包文件。
3. 云服务权限
AWS/GCP/Azure 凭证及 K8s 配置文件。
4. 环境变量
主动导出系统环境变量,并查询云端元数据接口(如 IMDS、容器凭证)。 更可怕的是,为了对抗网络流量审计,窃取的数据会被多重加密。攻击者使用 AES-256-CBC 与硬编码的 4096 位 RSA 公钥对数据进行加密并打包为 tar 文件,最终通过 POST 请求,将数据包发送至攻击者控制的伪造域名。
“该域名伪造为官方基础设施(models.litellm[.]cloud),实际是攻击者持有的域名。流量看起来如此正常,以至于防火墙很难拦截。”
除了窃密,攻击者还试图长期控制基础设施。在 K8s 集群中,恶意软件会尝试跨命名空间读取所有集群 Secret,并在 kube-system 的所有节点上创建特权容器。在本地机器上,它会自动写入 `~/.config/sysmon/sysmon.py`,建立持久化访问权限。这意味着,即使你卸载了 LiteLLM,后门可能依然存活。
紧急自查:三步确认你是否“中招”
无论当前是否直接使用 LiteLLM,建议立即执行以下自查步骤。只要在漏洞窗口期安装了 1.82.7 或 1.82.8 版本,该设备上的所有敏感凭证即被视为已全部泄露。 首先,检查环境感染情况。请在终端运行以下命令,确认是否中招:
# 检查当前安装的 LiteLLM 版本
pip show litellm 2>/dev/null | grep Version
# 全局查找是否存在恶意的 .pth 触发文件
find $(python3 -c "import site; print(site.getsitepackages()[0])") \
-name "litellm_init.pth" 2>/dev/null
# 检查项目依赖配置文件历史
grep -r "litellm" requirements*.txt pyproject.toml setup.py Pipfile 2>/dev/null判定标准非常明确:如果发现 `litellm_init.pth` 文件,或确认曾安装过 1.82.7 / 1.82.8 版本,必须假设系统已被全面渗透。此时,手动删除文件已无意义,因为密钥可能已经泄露。 为了更方便地检测,也可以使用朱雀实验室开源的 A.I.G (AI Infra Guard) 工具进行一键安全检测。这是目前针对 AI 基础设施安全较为专业的开源解决方案。
“不要抱有侥幸心理。在安全领域,假设被入侵总比假设安全要活得久。”
止损行动:凭证更换的优先级排序
一旦确认受影响,立刻更换以下所有密钥与凭证。这不是建议,这是必须执行的紧急预案。建议严格按照以下高风险优先的顺序执行:
1. 云服务商凭证
AWS 访问密钥、GCP 服务账户、Azure 服务主体。这是最高权限,一旦泄露,整个云基础设施可能面临被清空的风险。
2. 包管理器令牌
PyPI、npm 及私有注册表 Token。防止攻击者以您的名义发布恶意包,成为下一个投毒源。
3. SSH 密钥
重新生成所有密钥对,并同步更新所有服务器的 authorized_keys。
4. 数据库密码
特别是以环境变量形式存储的明文密码。
5. API 密钥
所有大模型厂商 Key(OpenAI、Anthropic 等),以及 Stripe、Twilio 等第三方服务 Key。
6. Kubernetes 配置
轮换所有 K8s Secrets 并重新部署服务。
7. Git 凭证
重新生成 GitHub/GitLab 的个人访问令牌(PAT)。 LiteLLM 维护者已在 Hackernews 社区道歉,并表示受影响的版本已从 PyPI 中删除,所有维护者账户均已更改,所有 GitHub、Docker、Circle CI 和 pip 的密钥均已删除。但这只是官方的止损,你的环境需要你自己负责。
深度思考:AI 基础设施安全的未来
此次 LiteLLM 投毒事件揭示了 AI 基础设施领域一个日益严峻的趋势:隐藏在软件供应链深处的攻击正变得越来越频繁,且极具破坏力。 随着大模型应用的爆发,底层的网关工具、数据处理框架以及各类 AI 代理库已经成为整个技术栈的咽喉。这些基础组件不仅被成千上万的生产环境所依赖,而且通常掌握着极高的系统权限,频繁触碰核心 API 密钥、云端凭证甚至企业私有数据。 对于攻击者而言,直接攻破目标企业的防御成本极高,而向这些被广泛使用的开源上游组件投毒,则能以极低的成本引发链式反应,实现大范围的隐蔽攻击。这是一种不对称的战争。
“越是处于底层、被视为理所当然的基础设施,其一旦被攻破,所带来的系统性威胁就越是致命。”
可以预见,这种利用传递依赖进行的静默渗透,将成为未来网络攻击的核心手段之一。对于开发者和企业来说,盲目信任开源库的时代已经结束。我们需要建立更严格的供应链安全审查机制,引入类似 A.I.G 这样的自动化检测工具,并在架构设计上遵循最小权限原则。 这次事件是一次警钟。它提醒我们,在 AI 高速发展的狂飙突进中,安全这根弦,一刻也不能松。你的代码可能没有 bug,但你的依赖可能有毒。在这个万物互联、智能互嵌的时代,安全不再是可选项,而是生存的底线。
夜雨聆风