CVE-2026-47291: Windows HTTP.sys 远程代码执行漏洞分析
CVE-2026-47291: Windows HTTP.sys 远程代码执行漏洞深度分析
0x01 漏洞背景与详情
CVE-2026-47291 是微软 Windows HTTP.sys 中的一个高危远程代码执行漏洞。该漏洞位于内核态的 HTTP 请求处理路径中,攻击者可通过网络发送特制请求触发整数溢出与后续堆内存破坏。由于 HTTP.sys 在 IIS 或上层应用之前就会处理流量,因此该漏洞一旦可利用,影响通常直接落在系统内核层。
- CVE ID: CVE-2026-47291
- 危险等级: 极危 (Critical, CVSS 9.8)
- 漏洞类型:
- Integer Overflow / Wraparound (
CWE-190) - Heap-based Buffer Overflow (
CWE-122)
- Integer Overflow / Wraparound (
- 影响范围: 多个 Windows 10 / 11 与 Windows Server 版本
- 核心风险: 未授权攻击者通过网络触发内核态 RCE
0x02 漏洞原理分析
微软公开描述虽然比较简短,但已透露出足够清晰的根因特征:
请求长度计算存在整数回绕: 官方同时标记了
Integer Overflow与Heap Buffer Overflow,说明在某个请求大小、字段长度或累计长度的计算过程中发生了回绕,导致实际分配的缓冲区小于后续写入需求。内核态 HTTP 入口先于应用层:
HTTP.sys属于 Windows 内核态 HTTP 协议栈。无论上层是 IIS、WinRM 还是基于HttpSys的自建服务,请求都会先经过HTTP.sys处理。这意味着很多仅在应用层生效的过滤逻辑并不能阻止该漏洞触发。高风险点与请求大小限制配置相关: MSRC 明确提到,如果系统使用默认的
MaxRequestBytes配置,则不受此漏洞影响。该信息强烈暗示漏洞与请求行或头部大小边界处理存在直接关系,尤其是那些因兼容需求而调大MaxRequestBytes的系统更值得优先排查。可能的内存破坏链路: 综合公开信息,较合理的技术推断是:攻击者构造异常大的请求头/请求行,诱导
HTTP.sys在累计长度、对齐或边界校验上发生回绕,继而分配过小堆缓冲区,并在复制或规范化阶段造成内核堆越界写入。
0x03 漏洞 POC (Proof of Concept)
截至目前,未见高可信公开 PoC 或成熟 exploit。对于这类内核网络漏洞,更合理的验证方向是“安全验证型 PoC”。
验证思路
- 在实验环境选取未修复且使用非默认
MaxRequestBytes的主机。 - 对目标服务发送边界化请求,系统性变换:
- 总 header 大小
- 单 header 大小
- header 数量
- 请求行长度
- 重复 header
- 长 URI
- 观察是否出现:
HTTPERR异常- 连接重置
- 服务异常
- 蓝屏
- 内核转储
验证原则
对于该类漏洞,验证目标应该是确认攻击面和补丁有效性,而不是追求稳定拿到 RCE。因为一旦触发失败,实际代价往往是服务中断或系统崩溃。
0x04 高级实战利用姿势 (Weaponization)
从崩溃走向内核 RCE: 对攻击者而言,真正的难点不在于“能否触发异常”,而在于如何把堆损坏稳定转化为可控的执行流。这通常需要围绕
HTTP.sys的请求队列、并发连接和对象布局做复杂的堆风水。绕过应用层防护: 由于请求在进入 IIS 或应用前就已被内核处理,很多依赖应用日志、应用中间件或 WAF 插件的防护都可能来不及生效。这使该漏洞更接近“网络层直接打内核”的风险模型。
攻击面不止 IIS: 不少人误以为“只有 IIS 才会受影响”,实际上只要服务依赖
HTTP.sys,就可能成为攻击面,例如:- IIS
- WinRM
- 某些 WCF 服务
- 直接使用
HttpSys的 ASP.NET Core 服务
一旦武器化可被批量化利用: 该漏洞具有
AV:N / PR:N / UI:N特征。如果后续出现成熟利用链,其自动化扫描和批量打击价值会很高,尤其适合攻击暴露公网的 Windows 服务器。
0x05 应急排查与日志痕迹分析
- 优先看 HTTPERR 日志:
这类请求可能在
HTTP.sys层就被拒绝,因此不一定进入 IIS 日志。应重点检查:
关注与长度相关的 s-reason,例如:
RequestLengthFieldLength
系统事件日志与崩溃痕迹: 检查:
BugCheck 1001Kernel-Power 41Windows Error Reporting%SystemRoot%\MEMORY.DMP%SystemRoot%\Minidump\
结合抓包与来源分析: 若怀疑遭遇探测,应回溯异常前后的网络流量,重点关注:
- 异常大的请求头
- 大量重复 header
- 畸形 URI
- 突增的 400 / reset
排查配置风险点: 检查注册表中是否修改过:
使用非默认值的主机应优先修复与复盘。
0x06 修复与缓解建议
立即安装 2026-06 安全更新: 这是唯一完整修复方式。
恢复默认
MaxRequestBytes: MSRC 明确建议:- 删除自定义
MaxRequestBytes - 或恢复为默认值
16384
- 删除自定义
梳理哪些服务经过 HTTP.sys: 资产管理上要明确“哪些服务在监听 HTTP/HTTPS 且底层走
HTTP.sys”,避免因为“不是 IIS”而漏掉真实风险面。缩小网络暴露面: 对公网暴露的 Windows 服务做最小化入口管理,优先限制:
8044359855986