🔒 Pingora 开源请求走私漏洞修复
CVE-2026-2833, CVE-2026-2835, CVE-2026-2836
Cloudflare CDN 未受影响! 我们的调查发现,这些漏洞无法在 Cloudflare 网络上被利用。Cloudflare 客户无需采取任何行动。
漏洞概述
2025年12月,Cloudflare 收到关于 Pingora 开源框架中 HTTP/1.x 请求走私漏洞的报告。当 Pingora 作为入口代理部署时,会受到影响。
影响范围:
- 绕过 Pingora 代理层安全控制
- 与后端进行 HTTP 请求/响应解同步,实现跨用户劫持攻击(会话或凭证窃取)
- 毒化 Pingora 代理层缓存
已发布修复
已发布 Pingora 0.8.0 包含修复和加固。强烈建议 Pingora 框架用户尽快升级。
漏洞详情
1. 无 101 握手的提前升级
第一个报告显示,带有 Upgrade 头值的请求会导致 Pingora 在后端接受升级之前立即传递后续字节。攻击者可以在同一连接上管道化第二个 HTTP 请求:
GET / HTTP/1.1 Host: example.com Upgrade: foo GET /admin HTTP/1.1 Host: example.com
这完全不符合 RFC 9110 预期的 HTTP/1.1 Upgrade 流程。后续字节只有在接受到 101 Switching Protocols 头时才应被解释为升级流。
攻击后果
- Pingora 部署收到非 101 响应时仍可将第二个部分 HTTP 请求转发到上游
- 绕过任何 Pingora 用户定义的 ACL 处理或 WAF 逻辑
- 毒化到上游的连接,使后续用户的请求不当接收 /admin 响应
修复
已修补 Pingora,仅在上游响应 101 Switching Protocols 后才切换对后续字节的解释。
2. HTTP/1.0、close-delimiting 和 Transfer-Encoding
报告者还演示了一个更经典的"CL.TE"解同步类型攻击:
GET / HTTP/1.0 Host: example.com Connection: keep-alive Transfer-Encoding: identity, chunked Content-Length: 29 0 GET /admin HTTP/1.1 X:
为什么 Cloudflare 未受影响
- 入口 CDN 代理没有此不当行为
- 我们的内部 Pingora 服务的客户端不尝试管道化 HTTP/1 请求
- Pingora 服务在这些
Upgrade请求上通过注入Connection: close头禁用 keep-alive
技术背景
按设计,Pingora 框架确实允许边缘情况 HTTP 请求或响应,因为我们需要为使用传统 HTTP 堆栈的客户接受这种流量。但这种宽松是有限度的,以避免让 Cloudflare 本身暴露于漏洞。