背景:一周之内,两类 AI 基础设施被同一套打法打穿
2026年 8 月初,我们在短时间内观察到数十条失陷信号告警,覆盖多个租户、多台机器。这些告警来自两个独立的团伙。一个团伙盯上了 AI 网关 LiteLLM;另一个盯上了 AI 开发者的日常编程代理工具 OpenCode。两个团伙目标一致:能调用大模型的 API key。
现如今攻击者的手法快得惊人。他们盯着 CVE 公开漏洞列表,新漏洞披露几小时内就完成武器化。LiteLLM 的漏洞是 CVE-2026-42271,攻击者把保存前预览 MCP 服务器的端点当成命令入口,往请求体里写入一段能起进程的服务器配置,网关随即执行其中的恶意命令。OpenCode 的漏洞是 CVE-2026-22812,攻击者把未认证的 HTTP 服务器当成敞开的凭据库,虽然官方定位在 PoC 阶段,但是我们观测到的规模化收割事件表明,它已经被投入实战。
这两波攻击发生在同一周、攻击者用类似的打法,瞄准了同一批目标。网络上存在一批攻击者,专挑 AI 资产、收割先行随后投递后门木马。这说明盯 AI 资产已是常规操作,不是偶发。攻击者把 AI 基础设施当作凭据密度最高的服务器品类来收割,再用收割来的模型 key 驱动下一波攻击。我们把这个循环称为 AI 蠕虫。
AI 蠕虫闭环总览
从一次漏洞利用,到凭据收割,再到用收割来的 key 驱动下一次进攻,循环一旦转起来,受影响的机器就越来越多。这条链怎么转起来的,下面拆开看。
为什么是 AI 基础设施:凭据密度最高的服务器品类
传统服务器被攻破,丢的通常是一条数据库串、一把 SSH 私钥。但很多 AI 基础设施不同,它本身就是各类凭据的汇聚点。
LiteLLM 是模型调用的总闸门。所有模型供应商的 key、master key、salt key、数据库连接串,都以环境变量形式注入到网关进程里。一个跑 LiteLLM 的实例,它的环境变量里大概率同时存有 OpenAI、Anthropic、Google、Groq、OpenRouter、xAI、NVIDIA、HuggingFace 这些主流供应商中的好几种 key。
安装了智能体工具的开发机是另一类高密度目标。跑 OpenCode 的机器,环境变量里几乎必有模型供应商 key,因为代理自身工作就要调模型。除此之外,机器上还散布着代理工具链的 key(搜索、网页抓取、结构化爬取这些服务的凭据)、代理自身的认证文件、MCP 服务器配置,以及开发者的 shell 历史。
攻击者很清楚:AI 基础设施凭据最密集,打下一台,连带一串。
前半段:利用公开CVE来驱动 AI 凭据收割
针对LiteLLM 的双层收割器
这起攻击的入口是 CVE-2026-42271。这个漏洞的机理在于,LiteLLM 的保存前预览 MCP 服务器端点对调用方的权限校验存在缺陷,攻击者可借此让网关以自身权限执行任意命令。
攻击者据此投递的载荷,是一套专门为 AI 基础设施定制的双层收割器。外层是一台 MCP 协议模拟器,内层是一个纯凭据收割器,两层职责严格分离。
外层把外带通道藏进了协议本身。它冒充一个合法的 MCP 服务器,逐条应答网关发来的 JSON-RPC 请求;当网关询问工具列表时,外层把内层收割到的数据编码后,伪装成合法的工具列表项,随正常的 MCP 响应回传。网关把这些工具列表原样包进 HTTP 响应回传,攻击者拼接后解码,即获取凭据。
双层收割器结构与外带数据流
这条外带链路的关键特征是零出网连接、零 DNS 解析、零落地文件、零大流量外发。所有基于出站行为的检测手段,从 C2 回连到 DNS 隧道到外联告警,对它天然失明。从网络侧看,这就是一次成功的 MCP 端点测试。
内层则是一张 14 类 key 的正则矩阵,其中 10 类直指 AI 供应商。它遍历环境变量、SSH 私钥、配置文件、.env 备份等各类凭据来源。变量名模糊匹配 KEY/TOKEN/SECRET/PASS/SALT,其中 SALT 针对网关的 hash salt,拿到 salt 即可离线伪造和校验虚拟 key。
这套收割器显然经过精心设计。外层在启动内层之前,先做了一件事:它会先定位到网关主进程的运行环境,再借用同一环境执行收割器,从而拿到完整的环境变量,而模型 key 恰恰就注入在这个进程的环境变量里。
一个跑 LiteLLM 的实例,环境变量里大概率同时存有下面展示的好几种凭据。系统托管的 key 泄露后,连锁影响比普通主机失陷更深:
失窃资产 | 连锁影响 |
|---|---|
网关 master key | 签发任意虚拟 key、读取全部配置与日志,网关直到轮换前永久失守 |
各模型供应商 key | 盗刷推理额度、读取历史对话、转卖黑产 |
hash salt 与 key 哈希库 | 离线伪造和校验虚拟 key |
数据库连接串 | 直连网关库,拿到全部用户 key、对话记录、审计日志 |
容器集群凭据、SSH 私钥 | 集群内横向、宿主机逃逸、同网段移动路线图 |
OpenCode 的六类收割打法
另一起攻击的入口是 CVE-2026-22812。OpenCode 在旧版本会自动启动一个未做认证的 HTTP 服务,攻击者可借此以用户权限执行任意 shell 命令。攻击者把这个暴露面当成了敞开的凭据库。
同一个漏洞,攻击者发展出了四种利用形态。其中最先执行的动作是凭据收割,但攻击者在完成凭据收集后还会部署多重后门:
利用形态 | 手法 | 说明 |
|---|---|---|
凭据收割 | 经 shell 端点直接下发收割命令 | 完成远程命令执行后的第一波动作 |
载荷投递 | 经同端点投递下载器 | 收割后的第二波动作 |
提示词注入 | 经对话端点让代理替自己执行命令 | 绕过 shell 端点,通过提示词注入诱导模型 |
侦察踩点 | 系统信息枚举、目录枚举、资产盘点 | 为后续渗透收集信息 |
我们观测到的收割,是一套成熟的打法,数十条收割命令在短时间内连发,命中多台机器。六类载荷分工明确:
环境变量整包收割:直接
env排序后截断回传,目标是云凭据与模型 key 的第一注入点。截断动作本身就说明攻击者预期回传量大,这一类载荷量最大AI 工具链 key 正则:用正则扫描指定目录,目标全是搜索、爬取、网页抓取这类代理工具链服务的 key。只有盯着 AI 开发者的攻击者才会把它们写进正则
全栈 key 正则:模型层加基础设施层的完整凭据谱系,AWS、GitHub、GitLab、Slack 全在内
加密钱包猎取:按钱包、助记词、私钥文件命名定位。使用 AI 代理的开发者密度高,测试链和个人钱包资产密度也高;这一步只定位不窃取
代理自身凭据与历史收割:循环读取代理的认证文件、配置文件、shell 历史,读取代理调用模型用的 key,再收历史里的内网地址、明文口令、运维路径
MCP 配置与
.env定位:MCP 配置是代理工具链的连接图,.env是应用存 key 的事实标准
这六类载荷都用标记串分隔输出,例如环境变量、文件、MCP 配置各自带一个独立的开头标记。这个细节让收割结果在响应里可被结构化切分,也意味着响应侧可以用这些标记串做检测。
六路收割面矩阵图
这套打法的工业化程度很高。自研扫描器加上免费模型额度,零配置、零成本即可发起首次扫描;对加了认证的实例,攻击者还会尝试用弱口令字典爆破。
收割不是一把抓。我们交叉比对这批受袭机器,发现攻击者按机器类型叠加载荷:有的机器同时被环境变量和钱包两类载荷扫过,有的同时被环境变量和代理自身凭据两类载荷扫过。哪类凭据价值高,就重点跑哪类载荷,避免无效操作。
事件对照:攻击模式已经形成共识,而非巧合
两个独立团伙,在同一周,用类似的打法,打两类不同的 AI 基础设施。
维度 | LiteLLM 事件 | OpenCode 事件 |
|---|---|---|
入口 | CVE-2026-42271 MCP 端点命令注入 | CVE-2026-22812 未认证 shell |
收割目标 | 14 类 key 正则,10 类 AI 供应商 | 六类:env、工具链 key、全栈 key、钱包、自身凭据、MCP 配置 |
外带方式 | tools/list响应切片伪装 | API 响应直接回显 |
共性 | 零出网外带,专挑 AI 资产,收割先行投递随后 | 同左 |
后半段:用收割来的 key 驱动下一波
到这里,如果只看 key 失窃,还差一半。AI 基础设施被收割的模型 key,价值远不止盗刷额度。
盗来的模型 key 是下一波进攻的弹药。攻击者可以用受害者的 key 免费调用大模型,让模型生成钓鱼文案、恶意代码、渗透路径,而账单和审计指向的是受害者。更关键的是,Anthropic、OpenAI 这类控制台 key 可以查询历史对话,企业用 AI 处理的代码、文档、内部问答,全部暴露在外。
攻击者已经在实践借代理之手执行命令。我们在同一批事件里观测到,攻击者除了直接用 shell 端点执行命令,还通过对话端点下发按字面执行这条命令的提示词,让代理替自己跑命令。这条路不需要理解代理内部机制,交给模型去做即可。免费的模型参数保证任何零配置实例都能成功建立会话。
这场行动自己演示了循环的后半段。收割波落地约一天半后,同一批机器中的多台被植入下载器,多台确认执行。收割和投递被刻意拆成两个阶段:第一波先拿到 key,筛出高价值目标,第二波只对值得长期控制的机器投递木马。这意味着对受害者而言,只改密码不清除木马等于没处置,只清除木马不改密码同样等于没处置,两段必须同时处理。
前后两段合在一起,循环就闭合了。攻击者利用 AI 基础设施的漏洞收割模型 key,再用这些 key 驱动大模型去规划、组织、执行下一波进攻,影响范围从 AI 开发者扩散到下游服务,再到整个 AI 生态。每一个新暴露的节点,都可能成为下一轮收割的入口。这是蠕虫式的自增殖。
蠕虫自增殖蔓延图
供应链是这条链里最值得警惕的一环。MCP 配置清单被收割后,攻击者掌握的不仅是工具链的连接图,更是一份精确的投毒目标清单。向对应的 MCP 包或仓库投毒,受害者的代理下次启动时即被植入,攻击面从一台机器扩散到所有依赖该服务的下游。
防御启示:AI 基础设施的凭据治理,需要与数据库同级
AI 基础设施承载的凭据密度,已经不低于数据库。但这场攻击暴露出一个更深的问题:凭据的治理责任,分散在使用方、组件方、模型厂商三方手里,任何一方缺位,闭环就堵不住。
对使用方:把凭据当成资产来管,而不是配置项
失陷之后的第一件事,是认清一个现实:环境变量里可见的一切凭据,都已视同泄露。master key、salt key 一旦泄露,网关在轮换之前等于永久失守,因为攻击者可以随时签发新的虚拟 key、读取全部配置与日志。轮换清单需要覆盖全部范围,而不只是换掉一把 key。
但这只是应急。根因在于 AI 基础设施的凭据注入方式:模型供应商的 key、数据库连接串、token 类,全部明文存在网关进程的环境变量里,一个进程失守,连带一串。把凭据从环境变量里挪出去,改用密钥管理系统按需注入、用短期临时凭证替代长期静态 key,才能缩小单点失守的爆炸半径。
更进一步,按模型、按项目隔离 key,给每个 key 设最小权限和独立的用量上限。这样即便一把 key 泄露,损失也局限在它所属的那一小块,而不会连累整条链。被收割过钱包定位清单的机器,若清单中存在真实钱包文件,应把链上资产立即转移到新助记词钱包,旧钱包废弃。
对组件方:堵住默认不安全的入口
这两起事件的入口,都指向同一个根因:默认不安全。LiteLLM 的 MCP 预览端点默认向调用方开放且权限校验不足;OpenCode 默认启动一个未做认证的 HTTP 服务。攻击者几乎不需要额外的绕过动作,漏洞本身即入口。
组件方需要做的,是把安全边界前置到默认配置里。测试与预览类的端点,默认应当关闭或管理员化,而不是默认开放再靠用户自行加固;默认账号、默认未认证,都应当在产品层面消除。同时,漏洞披露后的修复响应要快,因为攻击者把披露到武器化的时间窗口压得很短。
检测与响应:零出网外带下,把重心转向行为侧
零出网外带意味着,流量侧的检测手段从 C2 回连到 DNS 隧道到外联告警,对这类攻击天然失明。检测重心需要转向进程侧和文件侧的行为特征:AI 服务派生子进程后遍历进程列表匹配自身;读取 /proc/1/environ;批量读取 SSH 私钥。这些动作在正常业务里几乎不会出现,正是失陷的信号。收割载荷里自带的标记串,也能在响应侧作为检测落点。
对大模型厂商:key 被盗刷是公共安全问题,而不只是用户损失
这场攻击最值得警惕的,是它把模型 key 变成了一种会外溢风险的资产。被盗刷的 key 不只是让受害者账单暴涨,攻击者还会用它免费调用大模型,去生成下一波攻击的文案、代码、路径。受害者的 key 就这样成了攻击者的免费算力,风险从单个用户,扩散到所有依赖这些公开服务的下游。
因此,模型 key 的异常调用,本质是一个公共安全问题。厂商应当监控 key 的调用模式,对用量突增、陌生来源、异常模型这些信号主动告警,发现问题后及时通知用户、必要时先行停用。同时,把 IP 白名单、预算上限、用量告警这些能力设为默认可用的安全基线,而不是让用户自己摸索。掐断 key 的滥用,就是在蠕虫循环的算力环节上切断供给。
参考
NVD - CVE-2026-42271
NVD - CVE-2026-22812
LiteLLM: Authenticated command execution via MCP stdio (GHSA-v4p8-mg3p-g94g)
OpenCode: Unauthenticated HTTP server RCE (GHSA-vxw4-wv6m-9hhh)
CVE-2026-42271 chained with CVE-2026-48710 - Horizon3
LiteLLM Flaw CVE-2026-42271 Exploited in the Wild - The Hacker News
声明:本文来自腾讯安全威胁情报中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。