







本文要点:8 月 25 号到 9 月 11 号,NemoClaw、Langflow、SGLang、agent 沙箱自提权四份披露接连砸中自托管 AI 基础设施——机制各不相同,病根是同一根:默认信任网络、拿有限清单对抗组合爆炸。SGLang 那颗最深的钉子(CVE-2026-86793)从报告确认到公开细节隔了 74 天,官方修复版本一栏至今空着。本文拆四个洞的因果链,文末给三个能照跑的排查动作。
18 天四洞速览:
| 披露日 | 产品 | CVE | 评分 | 机制一句话 |
|---|---|---|---|---|
| 8/25 | NVIDIA NemoClaw | CVE-2026-65105 | 8.1 | Ollama 绑 0.0.0.0,DNS rebinding 接管模型服务 |
| 9/初 | agent 沙箱自提权(OX Security 报) | 无独立编号 | — | 沙箱内一条命令把自己提到 danger-full-access |
| 9/8 | IBM Langflow | CVE-2026-81204 等 4 个 | 8.8 | 代码扫描器拒绝清单漏了进程生成原语 |
| 9/11 | SGLang | CVE-2026-86793 | 高危 | SafeUnpickler 被 builtins.import+ getattr 绕过,无认证 RCE |
按需取阅:赶时间只看排查动作 → 直接跳「企业怎么用」一节;想搞懂 SGLang 这颗钉子为什么 74 天没补丁 → 看「拔钉子」一节;管自建推理服务的 → 全文读完,文末清单能直接打钩。
关键词:SGLang | CVE-2026-86793 | NemoClaw | Langflow | 自托管 AI | 反序列化 | ShadowMQ
8 月 25 号到 9 月 11 号,18 天。NVIDIA 的 NemoClaw、IBM 旗下的 Langflow、开源推理框架 SGLang,再加上 OX Security 盯上的 agent 沙箱自提权,四份安全披露排着队出来,每一份砸的都是同一个位置:自托管 AI 基础设施。我前两天刷到 VicOne 那篇 SGLang 分析的时候,第一反应是眼熟。SGLang 这已经是近期第二个 SafeUnpickler 绕过,推理框架这个品类今年在反序列化上栽的跟头,一只手已经数不过来。眼熟到什么程度呢,我把 8 月底到 9 月中这串披露在桌上摊开,又往前翻了小半年的 CVE 记录,越翻越确定这是一张拖了很久的账单集中到期。今天想把这账单拆开给你看:四个洞的机制差得很远,病根几乎是同一根,而且这根病根,咱们自己机房里大概率也有一份。标题里的"四周"是宽口径的说法,指 8 月下旬到 9 月中旬这段集中披露窗口;严格按天算是 18 天,正文里两种口径我会分开标。
先把时间线钉死,从 8 月 25 号说起。
NVIDIA 的 NemoClaw 在这天被 Oasis Security 摆上了台面,CVE-2026-65105,CVSS 8.1,CWE-306,关键功能缺失认证。NemoClaw 是 NVIDIA 今年 GTC 上发布的开源参考栈,把 OpenClaw 这类常驻 agent 关进 OpenShell 沙箱里跑,推理走本地 Ollama,卖点就是数据不出机器。沙箱本身没被攻破,被攻破的是沙箱旁边那台 Ollama。NemoClaw 为了让 Docker 容器里的 agent 能访问宿主机上的模型服务,把 Ollama 启动成了 OLLAMA_HOST=0.0.0.0:11434,监听所有网卡,而 Ollama 的 API 从来没有认证这回事。攻击者用一个恶意网页加 DNS rebinding 就能接管这台模型服务,改掉 chat template,之后每一轮对话,包括 agent 自己的 system prompt,都要先过一遍攻击者垫进去的隐藏指令。NVIDIA 的修复只做了一半,macOS 和 Linux 上的路径关掉了,Windows 和 WSL 的部署到我写这篇时还绑在 0.0.0.0 上。最要命的是安装时屏幕上打印的那行字,Using Ollama on localhost:11434,用户看到 localhost 就放心了,实际绑定的是所有网卡。
自查一条命令就够:
# 看 11434 到底绑在哪——0.0.0.0 就是所有网卡,等于对外敞开
ss -lntp | grep 11434
# 期望输出:
# LISTEN 0 32 127.0.0.1:11434 ...
# 如果看到的是 0.0.0.0:11434 或 :::11434,模型服务已经暴露
启动参数改成OLLAMA_HOST=127.0.0.1:11434再重启,监听面就收回 localhost 了。
8 月底到 9 月初之间还夹着一条不那么显眼的披露,OX Security 报的:agent 在沙箱里跑一条命令,调用宿主侧的权限接口,把自己的会话提到 danger-full-access 模式,审批提示一并关掉,等于在出厂默认配置下自己拆了自己的沙箱。Forkast 后来盘点这波攻击潮的时候引用了原话。这条线在我能查到的公开记录里没有挂上独立 CVE 编号,但它是时间线上不能略过的一环,因为它跟 NemoClaw 恰好是一体两面:一个证明沙箱外面的服务没人护,一个证明沙箱自己的开关就在攻击面里。两件事凑一起,沙箱这个词在 agent 安全里的分量就得重新称了。
9 月 8 号轮到 Langflow。IBM 发了安全公告,CVE-2026-81204 在列,Langflow OSS 1.0.0 到 1.11.5,graph 构建期间的代码注入,远程攻击者不需要认证就能在服务器上执行任意代码,IBM 打了 8.8 分。同一个公告里还捆着 CVE-2026-79724、CVE-2026-81940、CVE-2026-78569,清一色的命令执行和注入类。IBM 把病根写得很坦白:agentic assistant 的代码扫描器用了不完整的拒绝清单,漏掉了进程生成相关的原语;另有一个逻辑错误让带注解的类体赋值绕过安全检查;lfx CodeParser 更直接,把返回类型注解的源码原样传给 eval。
然后是 9 月 11 号,VicOne 研究员 Reuel Magistrado 的技术分析公开,CVE-2026-86793,SGLang 的 SafeUnpickler 绕过,无认证远程代码执行(RCE)。这个洞我后面单独开一节细讲,这里先给两个数字:从 6 月 29 号提交报告到 9 月 11 号公开分析,中间隔着 74 天,SGLang 维护者确认了报告,但没有发补丁;受影响版本写到 0.5.14,官方修复版本一栏至今空着。
四个披露说完,把镜头往前拉,你会看到这条曲线早就开始爬了。今年 5 月 18 号,CVE-2026-7301,还是 SGLang,多模态 scheduler 的 ROUTER socket 默认绑 0.0.0.0,进来的消息直接进 pickle.loads,CERT/CC 协调披露,CVSS 9.8,antiproof.ai 那篇三个 RCE 的分析把细节全抖了出来。7 月 30 号,CVE-2026-15969,还是 SGLang,入口换成 /load_lora_adapter_from_tensors,还是 SafeUnpickler 的拒绝清单绕过,9.8 分。中间还夹着 CVE-2026-3060,ZMQ socket 绑 tcp:// 加 pickle.loads,9.3。再往前,Oligo Security 今年早些时候给这一类问题起了个集体名字,ShadowMQ:Meta 的 Llama Stack 在 2024 年就被发现用 ZeroMQ 的 recv_pyobj 收 pickle 数据,编号 CVE-2024-50050,Meta 当年 10 月把序列化换成 JSON 修掉了,但那份不安全的实现已经被抄进了 vLLM、TensorRT-LLM、Modular Max Server 和 SGLang,一份代码缺陷复制出一串 CVE,研究者在公网上还找到了数千个暴露的 ZeroMQ socket。vLLM 自己的账也不短,PyNcclPipe 的 pickle 反序列化 RCE,CVE-2025-47277,9.8 分;模型加载时 torch.load 的 weights_only 默认值问题,CVE-2025-24357;今年上半年的 trust_remote_code 门禁缺失,CVE-2026-22807,又是 9.8。
所以这条时间线的完整形状是:Llama Stack 在 2024 年,vLLM 和 TensorRT-LLM 在 2025 年,SGLang 从 2025 年底到今年 9 月拖出一条长尾,而 8 月底到 9 月中这四个披露,只是斜率最陡的一段。Forkast 那篇盘点的判断我认同:AI 推理基础设施不再是边缘目标,它已经是主要目标了。为什么偏偏是这一层连续中招?我的看法是,自托管这波浪潮里,部署速度把安全治理甩开了不止一个身位。这些框架生下来是研究组的性能实验品,长成生产基础设施只花了一年多,认证、网络边界、反序列化防护,这些数据库领域二十年前就吵明白的问题,在推理层全部要重新吵一遍,而且是拿 CVE 当论据吵。下一节我先挑最深的那颗钉子拔给你看。
上一节把时间线摊完了,现在回到 9 月 11 号这颗最深的钉子上来。要看懂它为什么能绕过防护,得先知道 SGLang 的架构里 HTTP 和模型之间隔着什么。
SGLang 是 LMSYS 系的开源推理框架,伯克利团队出品,结构化输出引擎 xGrammar 就是他们家的东西,字节、xAI 这些名字都在使用方名单上。一次请求进来后不是直接摸到模型,而是先进 tokenizer manager,再经进程间通信扔给 scheduler,scheduler 分发给各个 tp_worker,worker 才真正加载权重做推理。为什么要讲这个结构?因为 CVE-2026-86793 的利用过程里,恶意数据要完整穿过这条链,一层层走到 worker 进程里才被反序列化,每一层的名字都得记住,后面排查的时候要用。
入口端点叫 /update_weight
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。