LiteLLM供应链投毒事件解析:攻击链、应急处置

admin 2026-04-04 06:04:36 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细解析了LiteLLMPyPI供应链投毒事件,涉及1.82.7与1.82.8版本被植入窃取凭据的恶意代码。攻击者利用proxy_server.py导入触发及.pth启动触发两种机制构建攻击链,隐蔽性强且影响范围广。文章给出了明确的处置建议,包括立即降级至安全版本、轮换关键凭据以及利用特定命令排查恶意文件与后门,为应急响应提供了详尽的操作指南。 综合评分: 89 文章分类: 供应链安全,应急响应,恶意软件,漏洞预警


cover_image

LiteLLM供应链投毒事件解析:攻击链、应急处置

松杨网络安全资料库

2026年3月27日 17:33 广东

一、事件概述:

2026年3月24日,LiteLLM 在 PyPI 上发布的 1.82.7 与 1.82.8 版本被发现遭恶意投毒,包含用于窃取凭据的恶意代码,事件被普遍认定为一次典型的供应链攻击。事件发生后,受影响版本已被下架/隔离,官方建议用户立即核查安装记录、排查相关入侵指标并轮换密钥凭据。

二、恶意样本触发机制一览表:

| 影响版本 | 恶意植入位置 | 触发条件 | 特征 | | — | — | — | — | | 1.82.7 | litellm/proxy/proxy_server.py | 当业务代码导入/运行 LiteLLM Proxy 相关模块时触发 | 代码内嵌混淆载荷,随代理服务启动链路执行,具备凭据收集与外传行为特征 | | 1.82.8 | litellm_init.pth | Python 解释器启动时自动触发(安装在环境中即可触发) | 利用 .pth 启动机制实现“全局自动执行”,触发范围更广,隐蔽性更强,影响开发机与 CI 环境 |

三、完整攻击链路:

1)1.82.7 版本:代理模块投毒(导入即触发)

 攻击者在核心文件 proxy_server.py 中植入了经过双层 Base64 混淆的恶意代码,并将其夹在正常业务逻辑之间,表面上与常规代码无明显差异,增加了人工审查与静态检测难度。

触发机制:当开发者或业务系统导入代理模块、启动网关服务时,恶意片段会先解码再执行,进而拉起后续攻击载荷。由于这一流程发生在常规运行路径中,生产网关部署、流水线测试以及本地调试等场景都可能中招。

2)1.82.8 版本:.pth 启动级触发(覆盖面更广)

 相较 1.82.7,1.82.8 的关键升级在于引入了 .pth 文件机制。Python 在解释器启动阶段会处理 site-packages 下的 .pth 文件,

触发机制:只有存在可执行导入语句,便会在启动时自动运行。只要受影响版本被安装进环境,很多与 LiteLLM 无直接关系的 Python 启动行为都可能触发恶意逻辑,例如打开 Python 终端、运行 Notebook、执行自动化脚本、启动 IDE 语言服务或跑单测。该机制显著扩大了触发面,也提高了排查复杂度;在应急处置中,如果仅卸载包而未清理异常 .pth 残留,风险可能仍然持续。

四、应对措施:

1.版本排查:

排查LiteLLM版本,若是1.82.7或1.82.8,立刻降级至安全版本1.82.6。

版本检测:pip list | grep litellm版本降级:pip uninstall -y litellmpip install litellm=1.82.6

2.凭证轮换:

将云平台访问密钥,Github、GitLab、CI Token、数据库密码、API keys、SSH密钥、TLS/SSL私钥等凭证进行轮换。

3.恶意文件排查:

排查在python环境中的恶意.pth文件以及后门文件,排查命令如下:

1. 查找Python site-packages目录下的恶意pth文件python -m site --user-site | xargs find -name "*litellm*.pth"python -c "import site; print('\n'.join(site.getsitepackages()))" | xargs -I {} find {} -name "*litellm*.pth"2.排查持久化后门文件:find ~/.config/ -name "sysmon.py" -o -name "sysmon.service"find /etc/systemd/system/ /usr/lib/systemd/system/ -name "sysmon.service"3.排查proxy_server.py中的恶意代码pip show litellm | grep Location | awk '{print $2}' | xargs -I {} find {}/litellm/proxy/ -name "proxy_server.py" | xargs grep -l "base64" | grep -v "test"4.检查 proxy_server.py (1.82.7),恶意文件哈希:a0d229be8efcb2f9135e2ad55ba275b76ddcfeb55fa4370e0a522a5bdee0120bfind / -path "*/litellm/proxy/proxy_server.py" 2>/dev/null -exec shasum -a 256 {} \;5.检查 litellm_init.pth (1.82.8),恶意文件哈希:71e35aef03099cd1f2d6446734273025a163597de93912df321ef118bf135238find / -name "litellm_init.pth" 2>/dev/null -exec shasum -a 256 {} \;

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:松杨网络安全资料库 《LiteLLM供应链投毒事件解析:攻击链、应急处置》

评论:0   参与:  0