Announcement

👇Official Account👇

Welcome to join the group & private message

Article first/tail QR code

Skip to content

Apache Traffic Server 34 个安全漏洞深度分析:CVSS 10.0 请求走私如何穿透 CDN 防护 ​

引言 ​

2026 年 7 月 29 日,Apache 软件基金会发布安全更新,修复 Apache Traffic Server(ATS)中的 34 个安全漏洞。这些漏洞涵盖请求走私(request smuggling)、内存安全、访问控制绕过、DoS 等多个类别,最高 CVSS 评分达 10.0 满分。

Apache Traffic Server 是广泛使用的缓存代理服务器,常部署于网络边缘处理海量请求,是许多 CDN 的核心组件。本次漏洞批次由 Apache Traffic Server 安全流程和一次独立代码库安全审计共同发现。

本文基于 Apache 官方安全公告、NVD 记录和 Apache 邮件列表公告,逐一拆解关键漏洞的技术原理和影响范围。

一、漏洞总览 ​

Apache 官方安全页面公布的统计数据如下:

统计项数值
CVE 总数34
Important 级别9
Moderate 级别25
修复版本9.2.15 / 10.1.4
受影响版本9.0.0–9.2.14 / 10.0.0–10.1.3
CVSS 最高分10.0(满分)

按类型分布:

类型数量
内存安全15
拒绝服务6
请求走私6
访问控制绕过4
SSRF2
信息泄露1
路径遍历1
欺骗/证书信任1

关键结论:内存安全是最大类别(15/34),请求走私是最严重类别(2 个 CVSS 10.0)。目前尚未发现野外利用,但 Apache 建议所有用户立即升级。

二、CVSS 10.0 漏洞详解 ​

CVE-2026-33267:Hop-by-hop 头未剥离(CVSS 10.0) ​

漏洞描述:Apache Traffic Server 不会从不可信对等方剥离 Connection 列表中的 hop-by-hop 头或内部 @ 头,导致请求走私和元数据注入。

技术原理:

HTTP/1.1 规范要求代理服务器剥离 Connection 头中列出的 hop-by-hop 头——这些头只对单跳连接有意义,不应被转发。但 ATS 在将请求传递给插件钩子之前,没有正确执行这个剥离操作。

攻击者可以构造如下请求:

http
POST /api/transfer HTTP/1.1
Host: target.com
Connection: keep-alive, X-Internal-Auth
X-Internal-Auth: admin
Content-Length: 0

GET /admin/users HTTP/1.1
Host: target.com
X-Internal-Auth: admin

由于 ATS 没有剥离 X-Internal-Auth 头(因为它被列在 Connection 头中),这个内部认证头被传递给了后端。更严重的是,如果后端和 ATS 对请求边界的理解不一致(请求走私),第二个嵌入请求会以"内部认证"身份执行。

报告者:Charlie Campbell、Brian Neradt、Apache Community

组件:HTTP/1

CVE-2026-58150:HTTP/2 Transfer-Encoding 请求走私(CVSS 10.0) ​

漏洞描述:Apache Traffic Server 不拒绝 HTTP/2 请求中的 Transfer-Encoding 头,允许降级请求走私。

技术原理:

HTTP/2 规范明确禁止在 HTTP/2 请求中使用 Transfer-Encoding——HTTP/2 使用自身的帧机制来传递请求体,不需要也不允许 Transfer-Encoding。但 ATS 没有拒绝包含此头的 HTTP/2 请求。

攻击场景:

# 攻击者发送 HTTP/2 请求
:method: POST
:path: /api/data
transfer-encoding: chunked

0\r\n
\r\n
GET /admin HTTP/1.1\r\n
Host: internal\r\n
\r\n

如果 ATS 将这个请求转换为 HTTP/1.1 转发给后端,Transfer-Encoding: chunked 可能让后端将请求体解析为两个独立请求——经典的 HTTP 请求走私。

报告者:Apache Community

组件:HTTP/2

三、其他 Important 级别漏洞 ​

CVE-2026-58155:头名长度截断(CVSS 9.3) ​

漏洞描述:ATS 会截断过长的头名称,允许头别名(header aliasing)、请求走私和策略绕过。

技术原理:当 HTTP 头名称超过 ATS 内部缓冲区长度时,ATS 会截断而非拒绝。攻击者可以构造两个头名称,它们在截断后相同但原始值不同,导致 ATS 和后端对"哪个头是哪个"的理解不一致。

例如,如果 ATS 内部限制为 64 字节:

X-Security-Policy-Strict-Mode-Enabled-For-This-Request-AAAAAAAAAAA: true
X-Security-Policy-Strict-Mode-Enabled-For-This-Request-BBBBBBBBBBB: false

截断后两者相同,ATS 看到的是 true,后端看到的是 false。

报告者:Omkhar Arasaratnam

CVE-2026-58154:MIME/头解析内存安全(CVSS 8.9) ​

漏洞描述:ATS 在解析 MIME 和 HTTP 头时可能出现越界写入或整数溢出。

技术原理:这是典型的 C/C++ 内存安全问题。MIME 头解析涉及大量的字符串操作——分割键值对、处理折叠行(continuation lines)、解码编码值。如果边界检查不严格,精心构造的头值可以触发堆溢出。

这类漏洞通常可以通过格式错误的 MIME 头触发:

http
GET / HTTP/1.1
Host: target.com
X-Custom: <大量数据导致缓冲区溢出>
Content-Type: multipart/mixed; boundary=AAAA...(超长边界)...

报告者:Michael Bommarito、Apache Community、Omkhar Arasaratnam

CVE-2026-58157:服务端会话重用(CVSS 8.7) ​

漏洞描述:ATS 可能不当地重用服务端会话和隧道,导致跨客户端连接的数据泄露。

技术原理:ATS 作为代理维护到后端服务器的持久连接池。如果会话重用逻辑存在缺陷,一个客户端的请求可能通过另一个客户端的会话隧道到达后端,导致响应被发送给错误的客户端。

报告者:Apache Community

类型:信息泄露

CVE-2026-22068:非锚定正则表达式(CVSS 8.2) ​

漏洞描述:ATS 使用非锚定正则表达式进行选择,允许子串和后缀匹配绕过 ACL、SNI、签名和地理控制。

技术原理:

ATS 的 remap 规则和多个插件使用正则表达式进行匹配。如果正则表达式没有锚定(缺少 ^ 和 $),那么子串匹配会导致意外的匹配结果。

例如,如果 ACL 规则使用 example.com 作为正则(而非 ^example\.com$):

# 规则意图:只允许 example.com
# 实际效果:任何包含 "example.com" 子串的域名都匹配

evil-example.com     → 匹配 ✅(不应该)
example.com.attacker.io → 匹配 ✅(不应该)
example.com           → 匹配 ✅(正确)

这意味着攻击者可以注册包含目标域名的子域名来绕过基于 SNI 的访问控制。

报告者:Omkhar Arasaratnam

影响范围:remap、SNI、多个插件

CVE-2026-58177:Cripts 框架内存安全(CVSS 8.1) ​

漏洞描述:ATS Cripts 框架存在越界写入、路径遍历和 use-after-free 错误。

技术原理:Cripts 是 ATS 的脚本框架,允许用 JavaScript 编写请求处理逻辑。框架本身的 C++ 实现存在多个内存安全问题。

影响:仅影响 10.1.4 版本(10.x 系列)

报告者:Apache Community、Omkhar Arasaratnam

CVE-2026-58151:HTTP/2 框架 DoS(CVSS 7.5) ​

漏洞描述:攻击者可以通过滥用的 HTTP/2 帧和流控制使 ATS 崩溃或耗尽资源。

技术原理:HTTP/2 的多路复用和流控制机制如果实现不当,可以被用于资源耗尽攻击。攻击者可以打开大量流、发送恶意的流控制窗口更新,或者构造无效的帧序列使服务器进入异常状态。

报告者:Apache Community、Javid Khan、Omkhar Arasaratnam

四、请求走私攻击链分析 ​

本次 6 个请求走私漏洞可以组成多条攻击链。以下分析最危险的一条:

攻击链:HTTP/2 降级 + 头注入 ​

前提条件:

  • ATS 作为 HTTP/2 到 HTTP/1.1 的反向代理
  • 后端服务有基于头的认证机制

步骤:

  1. 攻击者发送 HTTP/2 请求,包含 Transfer-Encoding: chunked(利用 CVE-2026-58150)
  2. ATS 不拒绝此头,将请求转换为 HTTP/1.1 转发给后端
  3. 请求体中嵌入第二个请求
  4. 后端因 Transfer-Encoding: chunked 将请求体解析为两个独立请求
  5. 第二个请求以原始客户端的身份执行未授权操作

影响:

  • 绕过后端认证
  • 执行任意 API 调用
  • 访问其他用户的数据

缓解 ​

唯一的缓解措施是升级到 9.2.15 或 10.1.4。Apache 官方声明暂无配置层面的缓解方案。

五、对 CDN 基础设施的影响 ​

Apache Traffic Server 在 CDN 领域有广泛的部署。虽然 Apache 没有公布具体的部署数量,但作为开源缓存代理的三大选择之一(与 Nginx、Varnish 并列),ATS 被许多内容分发网络、电信运营商和大型网站使用。

为什么 CDN 场景特别危险 ​

CDN 的边缘节点直接面向公网,处理海量请求。这意味着:

  1. 攻击面大:任何能访问 CDN 的攻击者都可以尝试利用这些漏洞
  2. 影响范围广:一个边缘节点的漏洞可能影响所有经过该节点的流量
  3. 横向移动:请求走私可以让攻击者访问同一 CDN 后端的其他客户的服务

特别关注的漏洞类型 ​

对于 CDN 场景,以下漏洞类型需要最高优先级关注:

优先级漏洞类型原因
P0请求走私可绕过认证访问后端服务
P0访问控制绕过可绕过基于 SNI/地理的访问限制
P1内存安全可能导致 RCE 或信息泄露
P1信息泄露跨客户端数据泄露
P2DoS影响可用性但不泄露数据

六、漏洞发现过程 ​

本次 34 个 CVE 的发现来自两个来源:

  1. Apache Traffic Server 安全流程:社区和用户通过 security@trafficserver.apache.org 报告
  2. 独立代码库安全审计:一次对 ATS 代码库的系统性安全审计

报告者名单包括:

  • Omkhar Arasaratnam(多个漏洞)
  • Charlie Campbell、Brian Neradt
  • Michael Bommarito
  • Apache Community
  • Haruki Oyama、Katsutoshi Ikenoya(LY Corporation)

这种"社区报告 + 独立审计"的双轨模式是大型开源项目安全实践的范本。独立审计能够发现社区日常使用中不易触发的深层漏洞。

七、升级指南 ​

受影响版本 ​

  • Apache Traffic Server 9.0.0 – 9.2.14
  • Apache Traffic Server 10.0.0 – 10.1.3
  • (8.0.0–8.1.9 部分漏洞也受影响,但 8.x 已 EOL)

修复版本 ​

  • 9.x 系列:升级到 9.2.15
  • 10.x 系列:升级到 10.1.4

升级注意事项 ​

  1. 无配置缓解:Apache 明确声明暂无配置层面的缓解方案
  2. 部分漏洞仅影响 10.x:CVE-2026-58177(Cripts 框架)仅影响 10.x
  3. 全面审计建议:升级后建议检查是否已有被利用的痕迹——尽管目前无野外利用报告

升级后验证 ​

bash
# 检查 ATS 版本
trafficserver --version

# 验证 HTTP/2 Transfer-Encoding 被拒绝
# 发送包含 Transfer-Encoding 的 HTTP/2 请求,应被拒绝
curl --http2 -H "Transfer-Encoding: chunked" https://your-ats-server/

# 验证 hop-by-hop 头被正确剥离
# 检查后端收到的请求头中不包含 Connection 列出的头

八、同类漏洞对比 ​

将 ATS 的请求走私漏洞与近年来其他代理软件的同类漏洞对比:

软件CVECVSS机制日期
Apache Traffic ServerCVE-2026-3326710.0Hop-by-hop 头未剥离2026-07
Apache Traffic ServerCVE-2026-5815010.0HTTP/2 Transfer-Encoding2026-07
NginxCVE-2026-425339.8map 指令堆溢出2026-07
Apache httpdCVE-2025-493207.5mod_rewrite 请求走私2025-11

请求走私是代理软件的高频漏洞类型。根本原因是 HTTP 协议的复杂性——HTTP/1.1 和 HTTP/2 对请求边界的规定不同,代理在协议转换时容易出现理解不一致。

九、对安全团队的建议 ​

即时行动 ​

  1. 盘点资产:检查网络中是否有 ATS 部署
  2. 评估暴露面:ATS 实例是否面向公网
  3. 紧急升级:优先处理 CVSS 10.0 的两个请求走私漏洞
  4. 日志检查:查看是否有异常的 HTTP/2 请求或非典型头模式

长期建议 ​

  1. 定期审计:对关键代理基础设施进行定期代码审计
  2. 协议测试:使用请求走私检测工具(如 smuggler.py)定期测试
  3. 深度防御:不要仅依赖代理层的 ACL,后端服务应有独立认证
  4. 监控告警:对异常的 HTTP 头模式设置告警规则

参考资料 ​

上次更新于: