CVE-2026-33169Active Support 是从 Rails 框架中提取的支持库和 Ruby 核心扩展工具包。其中的 `NumberToDelimitedConverter` 组件使用基于前瞻的正则表达式配合 `gsub!` 来插入千位分隔符。在 8.1.2.1、8.0.4.1 和 7.2.3.1 版本之前,重复的前瞻组与 `gsub!` 的交互在处理长数字字符串时会产生二次时间复杂度。未经身份验证的远程攻击者可利用此漏洞发送特制的超长数字字符串,导致服务器消耗大量 CPU 资源,从而引发拒绝服务。
该漏洞属于正则表达式拒绝服务。漏洞根源在于 `NumberToDelimitedConverter` 用于处理数字格式化的正则表达式设计不当。由于正则表达式模式中包含了重复的前瞻断言,当匹配长数字字符串(例如连续的数字)时,正则引擎需要进行大量的回溯计算,导致时间复杂度呈二次方增长(O(n^2))而非线性增长。攻击者无需用户交互,只需通过网络向应用发送包含超长数字序列的恶意请求,触发 `gsub!` 方法的调用,即可使服务器线程陷入长时间的计算,进而耗尽系统资源,导致服务响应缓慢甚至完全崩溃。