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)
  • 影响范围: 多个 Windows 10 / 11 与 Windows Server 版本
  • 核心风险: 未授权攻击者通过网络触发内核态 RCE

0x02 漏洞原理分析

微软公开描述虽然比较简短,但已透露出足够清晰的根因特征:

  1. 请求长度计算存在整数回绕: 官方同时标记了 Integer OverflowHeap Buffer Overflow,说明在某个请求大小、字段长度或累计长度的计算过程中发生了回绕,导致实际分配的缓冲区小于后续写入需求。

  2. 内核态 HTTP 入口先于应用层: HTTP.sys 属于 Windows 内核态 HTTP 协议栈。无论上层是 IIS、WinRM 还是基于 HttpSys 的自建服务,请求都会先经过 HTTP.sys 处理。这意味着很多仅在应用层生效的过滤逻辑并不能阻止该漏洞触发。

  3. 高风险点与请求大小限制配置相关: MSRC 明确提到,如果系统使用默认的 MaxRequestBytes 配置,则不受此漏洞影响。该信息强烈暗示漏洞与请求行或头部大小边界处理存在直接关系,尤其是那些因兼容需求而调大 MaxRequestBytes 的系统更值得优先排查。

  4. 可能的内存破坏链路: 综合公开信息,较合理的技术推断是:攻击者构造异常大的请求头/请求行,诱导 HTTP.sys 在累计长度、对齐或边界校验上发生回绕,继而分配过小堆缓冲区,并在复制或规范化阶段造成内核堆越界写入。

0x03 漏洞 POC (Proof of Concept)

截至目前,未见高可信公开 PoC 或成熟 exploit。对于这类内核网络漏洞,更合理的验证方向是“安全验证型 PoC”。

验证思路

  1. 在实验环境选取未修复且使用非默认 MaxRequestBytes 的主机。
  2. 对目标服务发送边界化请求,系统性变换:
    • 总 header 大小
    • 单 header 大小
    • header 数量
    • 请求行长度
    • 重复 header
    • 长 URI
  3. 观察是否出现:
    • HTTPERR 异常
    • 连接重置
    • 服务异常
    • 蓝屏
    • 内核转储

验证原则

对于该类漏洞,验证目标应该是确认攻击面和补丁有效性,而不是追求稳定拿到 RCE。因为一旦触发失败,实际代价往往是服务中断或系统崩溃。

0x04 高级实战利用姿势 (Weaponization)

  1. 从崩溃走向内核 RCE: 对攻击者而言,真正的难点不在于“能否触发异常”,而在于如何把堆损坏稳定转化为可控的执行流。这通常需要围绕 HTTP.sys 的请求队列、并发连接和对象布局做复杂的堆风水。

  2. 绕过应用层防护: 由于请求在进入 IIS 或应用前就已被内核处理,很多依赖应用日志、应用中间件或 WAF 插件的防护都可能来不及生效。这使该漏洞更接近“网络层直接打内核”的风险模型。

  3. 攻击面不止 IIS: 不少人误以为“只有 IIS 才会受影响”,实际上只要服务依赖 HTTP.sys,就可能成为攻击面,例如:

    • IIS
    • WinRM
    • 某些 WCF 服务
    • 直接使用 HttpSys 的 ASP.NET Core 服务
  4. 一旦武器化可被批量化利用: 该漏洞具有 AV:N / PR:N / UI:N 特征。如果后续出现成熟利用链,其自动化扫描和批量打击价值会很高,尤其适合攻击暴露公网的 Windows 服务器。

0x05 应急排查与日志痕迹分析

  1. 优先看 HTTPERR 日志: 这类请求可能在 HTTP.sys 层就被拒绝,因此不一定进入 IIS 日志。应重点检查:
C:\Windows\System32\LogFiles\HTTPERR\

关注与长度相关的 s-reason,例如:

  • RequestLength
  • FieldLength
  1. 系统事件日志与崩溃痕迹: 检查:

    • BugCheck 1001
    • Kernel-Power 41
    • Windows Error Reporting
    • %SystemRoot%\MEMORY.DMP
    • %SystemRoot%\Minidump\
  2. 结合抓包与来源分析: 若怀疑遭遇探测,应回溯异常前后的网络流量,重点关注:

    • 异常大的请求头
    • 大量重复 header
    • 畸形 URI
    • 突增的 400 / reset
  3. 排查配置风险点: 检查注册表中是否修改过:

HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\MaxRequestBytes

使用非默认值的主机应优先修复与复盘。

0x06 修复与缓解建议

  1. 立即安装 2026-06 安全更新: 这是唯一完整修复方式。

  2. 恢复默认 MaxRequestBytes: MSRC 明确建议:

    • 删除自定义 MaxRequestBytes
    • 或恢复为默认值 16384
  3. 梳理哪些服务经过 HTTP.sys: 资产管理上要明确“哪些服务在监听 HTTP/HTTPS 且底层走 HTTP.sys”,避免因为“不是 IIS”而漏掉真实风险面。

  4. 缩小网络暴露面: 对公网暴露的 Windows 服务做最小化入口管理,优先限制:

    • 80
    • 443
    • 5985
    • 5986

0x07 参考资料