CVE-2026-4867path-to-regexp 是一个用于将路径字符串转换为正则表达式的流行库。在特定版本中,当路由定义包含单个片段内的三个或更多参数(例如 /:a-:b-:c)时,会生成错误的正则表达式。尽管之前的版本添加了回溯保护,但该保护仅针对两个参数有效。在三个或更多参数的情况下,生成的正则表达式无法阻止单个分隔符,导致捕获组重叠,进而引发灾难性的回溯。攻击者可以通过发送特制的恶意请求利用此漏洞,导致服务器资源耗尽,从而引发拒绝服务。
该漏洞源于 path-to-regexp 库在处理复杂路由参数时的正则表达式生成逻辑缺陷。当路由路径中存在三个或更多由非点号(如连字符 -)分隔的参数时(例如 /:a-:b-:c),库生成的正则表达式未能正确处理边界条件。虽然 [email protected] 引入了回溯保护,但其逻辑仅覆盖了双参数场景。在多参数场景下,生成的 Lookahead 断言无法匹配单个分隔符,导致正则引擎在匹配失败时需要进行大量的回溯尝试。攻击者利用此漏洞的方式相对简单,只需构造一个包含特定参数分隔符的长字符串作为 URL 路径发送给服务器。当路由匹配器尝试解析该路径时,正则表达式引擎将陷入指数级的时间复杂度计算,导致 CPU 占用率飙升至 100%,服务响应变慢甚至完全崩溃。