CVE-2021-3807 描述了 Node.js 中 ansi-regex 库中的正则表达式复杂度漏洞 (ReDoS)。该漏洞允许攻击者通过提供精心构造的无效 ANSI 转义码,导致目标应用程序出现拒绝服务。受影响的版本包括 ansi-regex 的早期版本。通过升级到 6.0.1 或更高版本,可以有效缓解此风险。
该漏洞的根本原因是 ansi-regex 库中使用的正则表达式在处理某些无效 ANSI 转义码时,会产生极高的计算复杂度,导致 CPU 资源耗尽。攻击者可以通过发送包含大量重复字符或特殊字符的 ANSI 转义码来触发此漏洞,从而使目标应用程序无响应。这种拒绝服务攻击可能导致应用程序崩溃、服务中断,甚至影响整个系统的可用性。由于 Node.js 广泛应用于各种 Web 应用和服务器端开发,因此该漏洞的潜在影响范围非常广泛。
该漏洞已公开披露,并存在公开的 PoC 代码。目前尚未观察到大规模的利用活动,但由于其易于利用,存在潜在的风险。该漏洞尚未被添加到 CISA KEV 目录。NVD 发布日期为 2021 年 9 月 20 日。
Applications and services built on Node.js that utilize the ansi-regex package are at risk. This includes command-line tools, terminal emulators, logging utilities, and any application that processes ANSI escape codes. Specifically, projects using older versions of ansi-regex and those that do not perform input validation on ANSI escape code strings are particularly vulnerable.
• nodejs / server:
ps aux | grep ansi-regex | grep -v grep | awk '{print $2}' | xargs -n 1 pmap -x | grep -q 'ansi-regex.js'• nodejs / server:
journalctl -u node | grep -i "ansi-regex"• generic web:
Inspect Node.js application logs for unusually high CPU usage or errors related to ansi-regex parsing.
disclosure
poc
patch
漏洞利用状态
EPSS
0.21% (44% 百分位)
CVSS 向量
最有效的缓解措施是升级到 ansi-regex 6.0.1 或更高版本,该版本修复了该漏洞。如果无法立即升级,可以考虑使用 Web 应用防火墙 (WAF) 或代理服务器来过滤掉包含恶意 ANSI 转义码的请求。此外,还可以通过限制应用程序处理的 ANSI 转义码的长度来降低风险。在升级后,请务必进行测试,以确保升级不会对应用程序的功能产生负面影响。可以使用 node -v 命令检查 Node.js 版本,并使用 npm list ansi-regex 命令检查 ansi-regex 的版本。
将 ansi-regex 依赖项升级到 6.0.1 或更高版本。 这将解决正则表达式的低效复杂性漏洞。 运行 `npm install ansi-regex@latest` 或 `yarn upgrade ansi-regex@latest` 进行升级。
漏洞分析和关键警报直接发送到您的邮箱。
CVE-2021-3807 是 ansi-regex 库中的正则表达式复杂度漏洞,允许攻击者通过提供无效的 ANSI 转义码导致拒绝服务。
如果您正在使用 Node.js 且依赖 ansi-regex 库,并且版本低于 6.0.1,则可能受到影响。
升级到 ansi-regex 6.0.1 或更高版本可以修复此漏洞。
虽然目前尚未观察到大规模的利用活动,但由于其易于利用,存在潜在的风险。
请访问 ansi-regex 的 GitHub 仓库或 npm 页面获取官方公告和更新信息。