LiteLLM Python 库的开发者报告称,该库每月下载量高达 9500 万次,过去 24 小时内下载量更是达到 350 万次。攻击者截获了维护者的凭证,并在 PyPI 上发布了两个恶意版本——1.82.7 和 1.82.8——其中包含窃取用户系统密钥和密码的代码。目前,这两个恶意版本已从 PyPI 中移除,项目也已暂停运营,等待调查结果。
由于持续集成系统中使用了 trivy 依赖项安全扫描器,攻击者获取了 LiteLLM 在 PyPI 上的账户访问令牌。在此之前,2 月下旬,攻击者利用 Trivy 持续集成系统中运行的 pull_request_target 处理程序中的一个漏洞,获得了对 Trivy 项目基础设施的访问权限。攻破系统后,攻击者发布了恶意 Trivy 0.69-0.69 版本,伪造了 trivy-action GitHub Action 处理程序,并部署了一个包含 Trivy 的修改版 Docker 镜像。
3月24日上午11:30(莫斯科时间),攻击者利用截获的LiteLLM维护者(krrishdholakia)的凭证,绕过官方GitHub CI/CD系统,直接将恶意版本的LiteLLM 1.82.7和1.82.8发布到PyPI。该项目的GitHub仓库未受影响;恶意活动仅在PyPI上被发现。在LiteLLM 1.82.7版本中,恶意代码被嵌入到litellm/proxy/proxy_server.py文件中,并在导入litellm.proxy时激活。在1.82.8版本中,恶意代码被包含在site-packages/litellm_init.pth文件中,并在proxy_server.py文件中添加了一个以base64格式打包并在每次启动时激活的处理程序。
添加的恶意代码扫描并发送了敏感数据。发送的数据包括 SSH 和 SSL/TLS 密钥、环境变量内容、AWS、GCP、Azure 和 K8s 凭证、加密钱包密钥、数据库管理系统密码、命令解释器操作历史记录以及来自 Git、CI/CD、包管理器和 Docker 的配置文件。检测到的数据使用 AES-256-CBC 和 RSA-4096 加密,并通过 HTTP POST 请求发送到网站“https://models.litellm.cloud/”。域名 litellm.cloud 的注册时间比恶意程序发布时间早几个小时)。
建议 LiteLLM 用户确保 site-packages 目录中不存在 litellm_init.pth 文件,如果安装 1.82.7 或 1.82.8 版本,则更新所有密钥和凭据,在依赖项加载参数中锁定特定的 LiteLLM 版本,并检查他们正在使用的 LiteLLM 版本是否与 GitHub 上的发布代码一致。
来源: opennet.ru
