Node.js HTTP解析器漏洞:llhttp中的HTTP头块终止不当问题

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

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日 UTC 2:20:kenballus向Node.js提交报告。
  • 2023年7月12日 UTC 13:04:rafaelgss(Node.js员工)将状态更改为“已分类”。
  • 2023年7月20日 UTC 12:52:bnoordhuis加入此报告作为无特定权限的参与者。
  • 后续多次评论与状态更新
  • 2025年5月7日 UTC 14:12:安全发布管理员机器人更新CVE引用为CVE-2025-23167。
  • 2025年5月14日 UTC 21:36:安全发布管理员机器人关闭报告并将状态更改为“已解决”。
  • 2025年5月14日 UTC 21:37:安全发布管理员机器人请求披露此报告。
  • 2025年6月13日 UTC 21:37:此报告已被披露。

报告详情

  • 报告日期: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 设计