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 头模式设置告警规则

参考资料

上次更新于: