![]()
3月24日,PyPI上的LiteLLM 1.82.7和1.82.8版本被植入恶意代码。这两个版本存活了约3小时,下载量未被公开披露。攻击者此前已攻破Aqua Security的Trivy扫描器(3月19日)和Checkmarx的KICS及AST GitHub Actions(3月23日),形成一条完整的供应链攻击链。
LiteLLM的CI/CD流水线运行Trivy时未固定版本,攻击者由此从GitHub Actions运行器中提取了PyPI发布令牌。这是典型的"用安全工具攻破安全工具"——防御链条的薄弱环节恰恰成了入口。
三阶段攻击:从凭证收割到持久后门
恶意载荷执行了三阶段操作:从云环境收割凭证、通过Kubernetes集群横向移动、建立持久后门实现远程代码执行。每一阶段都利用了AI基础设施的固有特性。
云凭证收割针对的是LiteLLM部署的常见环境——AWS、GCP、Azure的元数据服务。Kubernetes横向移动则利用了AI工作负载的典型拓扑:推理服务、向量数据库、模型仓库往往共处同一集群。持久后门确保即使恶意版本被下架,攻击者仍保持访问。
所有流经LiteLLM的API密钥——OpenAI、Anthropic、Azure、Google——都在攻击范围内。这包括生产环境的密钥、具备高权限的密钥、以及可能被轮换但历史版本仍有效的密钥。
![]()
传统观念中,监控层是攻击的副产品。这次事件中,监控层本身就是目标。AI agent可观测性供应链风险(AI agent observability supply chain risk)指的是:用于埋点AI agent行为的SDK、代理和遥测库本身成为攻击目标的一类安全漏洞。
中间件的特权位置
与传统应用安全不同,传统监控工具被假设在威胁模型之外,AI agent可观测性基础设施位于每次agent动作与LLM提供商之间的关键路径上。这意味着它能同时访问API凭证、提示词、模型输出和会话追踪。
当这些工具被攻破,攻击者获得的可见性和访问权限等同于该工具监控的每一个agent。
一个LLM可观测性SDK不是被动的日志记录器,它是中间件(middleware)。为了捕获追踪、token用量、延迟和工具调用记录,SDK必须在LLM调用发出前和返回后拦截它。这意味着它位于你的agent代码与LLM提供商之间——拥有对每次提示、每次补全、每个函数调用参数、以及授权交易的每个API密钥的读取权限。
传统Web应用中,被攻破的日志库暴露请求载荷。AI agent栈中被攻破的可观测性SDK,则暴露你连接的每个LLM提供商的凭证、你的agent发起的每次工具调用、你的agent在其上下文窗口中处理的每块用户数据、以及自安装以来每次会话的完整执行历史。
![]()
统一网关的双刃剑
这正是LiteLLM对TeamPCP(攻击者组织)极具吸引力的原因。LiteLLM作为统一AI网关运行——单一SDK将请求代理到OpenAI、Anthropic、Azure OpenAI、Google、Bedrock及数十家其他提供商,背后提供统一接口。
一次被攻破的安装,即可获取全部。
这种架构设计在工程效率上极具说服力:开发者无需为每个提供商维护不同的客户端代码,配置集中管理,路由逻辑统一。但在安全层面,它创造了单点故障——一个足够有价值的靶子,值得攻击者投入数周时间策划供应链攻击。
缓解这类风险需要一种治理架构:执行层(enforcement layer)与其治理的埋点层(instrumentation layer)在结构上分离,而非共处同一SDK或进程内库。这类似于零信任网络中的控制平面与数据平面分离——监控可以观察,但不应能修改;可以记录,但不应能授权。
目前,多数AI agent可观测性方案并未遵循这一原则。SDK通常同时承担埋点和轻量级策略执行(如速率限制、预算控制),这种功能聚合便利了开发,却模糊了安全边界。
LiteLLM事件后,一些团队开始重新评估其可观测性栈的架构。但更深层的问题尚未解决:当监控工具本身需要被监控,这条递归链条的终点在哪里?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.