Node.js llhttp HTTP头块终止漏洞分析与修复

本文详细分析了Node.js 20中llhttp库存在的HTTP头块终止漏洞,攻击者可通过异常终止序列实现请求走私攻击,绕过代理访问控制。漏洞已通过升级llhttp至v9版本修复,仅影响特定版本的Node.js 20用户。

Node.js | 报告 #2054283 - llhttp中HTTP头块终止不当 | HackerOne

漏洞摘要

Node.js 20的HTTP解析器存在缺陷,允许使用\r\n\rX而非必需的\r\n\r\n来不当终止HTTP/1头部。这种不一致性使得请求走私成为可能,攻击者可借此绕过基于代理的访问控制并提交未经授权的请求。该问题通过将llhttp升级至版本9得以解决,该版本强制执行正确的头部终止。

影响范围

此漏洞仅影响升级至llhttp v9之前的Node.js 20.x用户。

时间线

  • 2023年7月7日:kenballus向Node.js提交报告。
  • 2023年7月12日:rafaelgss(Node.js员工)将状态更改为“已分类”。
  • 2023年7月20日:bnoordhuis加入报告作为无特定权限的参与者。
  • 2024年5月7日:安全发布管理员机器人更新CVE引用为CVE-2025-23167。
  • 2024年5月14日:安全发布管理员机器人关闭报告并将状态更改为“已解决”。
  • 2025年6月13日:报告被公开。

报告详情

  • 报告日期:2023年7月7日,UTC时间2:20
  • 报告者:kenballus
  • 报告对象:Node.js
  • 报告ID:#2054283
  • 状态:已解决
  • 严重性:中等(6.5)
  • 公开日期:2025年6月13日,UTC时间21:37
  • 弱点:HTTP请求走私
  • CVE ID:CVE-2025-23167
  • 奖金:无
  • 账户详情:无

注意:您的JavaScript似乎已禁用。要使用HackerOne,请在浏览器中启用JavaScript并刷新此页面。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计