从这个网页截图中,可以获取到以下关于漏洞的关键信息: 1. 漏洞名称:Backtracking regular expressions cause ReDoS 2. 受影响的版本: - =0.2.0, <8.0.0 - 8.0.0 3. 已修复的版本: - 0.1.10 - 8.0.0 4. 描述: - 一个不好的正则表达式会在任何时候生成,当你在一个单一的段落中有两个参数,并且它们之间由不是点(.)的字符分隔时。例如, 。 5. 影响: - 生成一个不好的正则表达式。 6. 补丁: - 对于版本0.1.10,添加了回溯保护,当没有提供自定义正则表达式时。 - 版本7.0.0可以启用 并当正则表达式可能出错时得到一个错误。 - 版本8.0.0移除了所有可能导致ReDoS的功能,并停止直接暴露正则表达式。 7. 工作绕过: - 所有版本都可以通过在单一段落的第一个参数后提供自定义正则表达式来修补。只要自定义正则表达式不匹配文本之前的部分,你就会是安全的。 - 如果路径不能重写且版本不能升级,另一种选择是限制URL长度。 8. 详细信息: - 使用 会产生正则表达式 。这可以通过路径 来利用,但TL;DR是 在末尾确保这个路由永远不会匹配,但由于简单的回溯,它仍然会尝试每种组合的 在重复的8,000次 。 - 因为JavaScript是单线程的,正则匹配在主线程上运行,性能不佳会导致事件循环阻塞,从而导致DoS。在本地基准测试中,利用不安全的正则表达式会导致性能下降超过1000倍,而安全的正则表达式则下降到平均延迟的~600ms vs 1ms。 这些信息可以帮助理解漏洞的性质、影响范围以及如何修复和绕过漏洞。