CVE-2025-66020Valibot是一个用于通过schema验证数据的JavaScript/TypeScript库。CVE-2025-66020漏洞影响了Valibot从0.31.0到1.1.0的所有版本。该漏洞位于emoji验证功能的EMOJI_REGEX正则表达式中,存在严重的正则表达式拒绝服务(ReDoS)问题。攻击者可以通过构造短小精悍的恶意字符串(通常少于100个字符),触发该正则表达式的灾难性回溯(Catastrophic Backtracking),导致正则表达式引擎消耗大量CPU资源,执行时间可达数分钟。这种资源消耗会严重影响应用程序的性能,造成拒绝服务(DoS)条件,使合法用户无法访问服务。该漏洞已被官方在1.2.0版本中修复,强烈建议所有用户立即升级到最新版本。
Valibot库中的emoji验证功能使用了存在缺陷的EMOJI_REGEX正则表达式。该正则表达式在设计时未能正确处理某些特殊的Unicode字符组合,导致正则引擎在匹配过程中产生灾难性回溯。当攻击者输入特定的恶意字符串时,正则表达式引擎会尝试大量可能的匹配路径,每个失败的分支都会触发更多的递归调用,最终导致指数级的时间复杂度增长。具体来说,攻击者可以利用正则表达式中的重复分组和可选量词的组合,使得引擎在处理短字符串时产生大量的回溯操作。例如,某些看似正常的emoji字符串模式可能会触发数百万次的内部状态检查,CPU占用率会急剧上升并持续较长时间。这种攻击不需要任何特殊权限,只需要能够向使用Valibot的服务提交用户输入即可实施。攻击的隐蔽性较强,因为字符串长度很短,可能不会触发常规的长度检查或WAF规则。