事件经过
vLLM 的 OpenAIServing 将 HTTP X-Request-Id 头部原样复制到 request_id 中,而 P2pNcclConnector.parse_request_id 通过一个宽松的正则表达式从中提取任意 host:port,没有允许列表、协议校验或 IP 字面量限制。API 调用者可以在头部中嵌入解码地址,强制运行该连接器的 prefill worker 向攻击者主机发起出站 ZMQ 连接,共享 NCCL 通信器 unique_id,然后通过 ncclSend 将目标请求的 KV-cache 发送给攻击者。
影响分析
仅通过一个 HTTP 头部,能够访问 prefill worker 的调用者(有效 API 密钥,或未设置 --api-key 时无需密钥)即可窃取该 worker 处理的任何请求的完整 KV-cache——提示文本和前缀缓存的隐藏状态——并可因目标主机无响应而阻塞 worker,形成拒绝服务攻击向量。CVE-2026-116176,CVSS 8.2,CWE-918。
攻击途径
构造一个 /v1/completions 或 /v1/chat/completions 请求,其 X-Request-Id 包含攻击者控制的 host:port;prefill worker 将发起出站连接并泄露 KV-cache 张量。
受影响系统
vLLM >= 0.9.2,< 0.24.0,当运行 P2pNcclConnector 时(需要 --kv-transfer-config 配置 P2pNcclConnector)。
缓解措施
升级到 vLLM 0.24.0(PR #44854 移除了受影响的连接器);同时在 P2pNcclConnector 激活期间将 X-Request-Id 替换为随机 UUID,并根据运营商配置的 CIDR 允许列表验证连接器的 remote_address。