64%云环境受影响:ApacheHTTPServer爆未认证RCE,HTTP/2一个竞争条件打穿堆内存

admin 2026-11-13 10:29:17 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

64%云环境受影响:Apache HTTP Server爆未认证RCE,HTTP/2一个竞争条件打穿堆内存

零日手记
零日手记

随笔漫记安全路

2026年11月12日 13:44
北京

去阅读

2026年11月11日,Apache HTTP Server发布紧急安全更新,修复一个CVSS Critical级别的远程代码执行漏洞。Wiz Research数据显示,64%的云环境存在受影响资源。

漏洞编号CVE-2026-119618,藏在HTTP/2模块的assign_headers()函数里——一个并发线程共享资源时缺乏同步的竞争条件,可被远程未认证攻击者利用触发堆内存损坏,最终实现RCE。

漏洞档案

项目 详情
CVE CVE-2026-119618
严重级别 Critical
影响版本 Apache HTTP Server 2.4.55 – 2.4.70
独立模块 mod\_h2 (GitHub) 2.0.8 – 2.0.42
补丁版本 2.4.71 / mod\_h2 > 2.0.42
认证要求 无需认证
攻击面 远程,通过HTTP/2连接
在野利用 截至发稿无公开 exploit,无在野利用报告
发现者 Anthropic OSS Scanner (ANT-2026-MAPKT6MZ) + Google Cloud漏洞研究团队(Anthony Weems、Simon Scannann)独立发现

漏洞根因:一行代码写错了操作对象

补丁commit 5ed3928766只有一行改动,但这一行暴露了整个问题。

漏洞出在assign_headers()函数中。这个函数负责将HTTP/2请求的头信息赋值到Apache内部的request_rec结构体。函数开头先做了一次克隆:

r->headers_in = apr_table_clone(r->pool, req->headers);

r->headers_in是当前请求的私有头表,req->headers是共享的HTTP/2请求头表。克隆之后,后续操作应该只改r->headers_in(私有副本),不能碰req->headers(共享原件)。

但漏洞代码在设置Content-Length时写错了对象:

// 漏洞代码 (modules/http2/h2_request.c:353)
apr_table_setn(req->headers, \"Content-Length\", \"0\");
//               ^^^^^^^^^^^ 写成了共享的 req->headers
// 修复后
apr_table_setn(r->headers_in, \"Content-Length\", \"0\");
//               ^^^^^^^^^^^^^ 改为私有的 r->headers_in

req->headers是多线程共享的资源。HTTP/2支持多路复用——一个连接上同时处理多个请求流,每个流在自己的线程中运行,但它们共享同一个h2_request结构体。当两个并发流同时执行到这行代码,都在往同一个req->headers表写入Content-Length,APR table的内部数据结构在并发写入下发生竞争,导致堆内存损坏。

堆损坏之后,攻击者可以通过精心构造的HTTP/2请求触发可预测的内存布局,将堆 corruption转化为任意代码执行——以Web服务器进程的权限运行命令。

攻击路径

攻击者发送 HTTP/2 连接
    ↓
同一连接上并发多个请求流 (stream multiplexing)
    ↓
构造特定请求:有 Content-Type 但已见 eos (no_body=true)
    ↓
多个流同时进入 assign_headers() 的 Content-Length 分支
    ↓
并发写入共享的 req->headers 表 → 竞争条件
    ↓
APR table 内部结构堆损坏
    ↓
堆 corruption → 可控内存布局 → 任意代码执行

关键条件:攻击者需要在一个HTTP/2连接上同时发送多个精心构造的请求流,让它们竞争执行到assign_headers()中的写入路径。触发路径需要请求同时满足:有Content-Type头 + 已收到EOS标记(no_body=true)+ 无Content-Length。

为什么影响面这么大

Wiz Research的扫描数据给出了三个数字:

  • 64% 的云环境有受影响资源
  • 大量实例公网暴露
  • 以上数据未考虑配置因素(实际暴露面可能更大)

Apache HTTP Server是全球部署量最大的Web服务器之一。2.4.55到2.4.70覆盖了2023年初至今的大多数活跃部署。只要开了HTTP/2(现代部署几乎都开了),就在射程内。

云环境尤其危险:一个被攻破的Apache容器化实例可以作为跳板,通过云元数据端点获取IAM凭证,横向移动到相邻微服务。

修复与临时缓解

方案一:升级(推荐)

# Debian/Ubuntu
apt update && apt upgrade apache2

# RHEL/CentOS/AlmaLinux
dnf update httpd

# 源码编译
./configure --enable-http2 && make && make install
# 确保升级到 2.4.71 或更高
httpd -v

方案二:禁用HTTP/2(无法立即升级时)

编辑Apache配置文件,移除HTTP/2协议支持,回退到HTTP/1.1:

# 在 httpd.conf 或 ssl.conf 中
# 找到 Protocols 行,改为:
Protocols http/1.1

# 或者注释掉整行:
# Protocols h2 h2c http/1.1

重启生效:

apachectl configtest && systemctl restart apache2
# 或 RHEL: systemctl restart httpd

注意:禁用HTTP/2会损失多路复用性能优势,仅作为临时止血。

自检:你的服务器在不在射程

# 1. 查版本
httpd -v   # 或 apache2 -v
# 如果 2.4.55 ≤ 版本 ≤ 2.4.70,受影响

# 2. 查是否启用了 HTTP/2
httpd -M 2>/dev/null | grep http2
# 或
apache2ctl -M 2>/dev/null | grep http2
# 输出 http2_module (shared) = 已启用

# 3. 查配置中是否声明了 HTTP/2 协议
grep -r \"Protocols\" /etc/apache2/ /etc/httpd/ 2>/dev/null
# 或
grep -r \"h2\" /etc/apache2/ /etc/httpd/ 2>/dev/null | grep -v \"#\"

三条全中:版本在范围内 + http2模块加载 + 配置声明了h2协议——立即升级或禁用HTTP/2。

一个细节:Anthropic的OSS扫描器又立功了

这个漏洞的两个独立发现者之一是Anthropic的OSS Scanner(漏洞编号ANT-2026-MAPKT6MZ)。加上之前Anthropic研究员报告的Linux内核TCP UAF(CVE-2026-98432,Claude写出root PoC)和OpenAI一夜间挖出948个Linux提权漏洞——AI辅助漏洞挖掘正在从实验走向工业化。

OpenSSH团队上周刚发布声明称\"近期收到大量AI模型发现的安全报告,将因此加快发布节奏\"。Apache HTTP Server这个Critical级别的漏洞又被AI扫描器率先发现——AI挖洞的速度已经超过了人类的补丁应用速度。

补丁本身:一行修复

- apr_table_setn(req->headers, \"Content-Length\", \"0\");
+ apr_table_setn(r->headers_in, \"Content-Length\", \"0\");

把写入目标从共享的req->headers改成私有的r->headers_in。一行代码,消除了竞争条件的根源——每个线程只写自己的副本,不再踩到彼此的脚。

这是典型的共享资源并发访问漏洞:克隆操作做了,但后续写入忘了用副本。CWE-362(Race Condition)+ CWE-366(共享资源同步缺陷)的经典组合。


参考:

  • NVD: CVE-2026-119618
  • oss-security公告: openwall.com/lists/oss-security/2026/11/11/13
  • Wiz Research分析: wiz.io/blog/cve-2026-119618
  • 补丁commit: apache/httpd@5ed3928766
  • Apache安全公告: httpd.apache.org/security/vulnerabilities\_24.html

第2章备注从不骗人 网络安全文章

第2章备注从不骗人

在末日环境中,主角李夜利用消防斧击杀变异犬并回收其尸体获得积分,同时通过回收废墟中的物品提升等级和属性。在楼道中发现装死的东西,主角暂时未采取行动。
评论:0   参与:  0