正则表达式拒绝服务(ReDoS)在Lodash中的漏洞分析
漏洞概述
CVE-2020-28500 是一个影响Lodash库的中等严重性漏洞,存在于4.0.0至4.17.20版本中。该漏洞属于正则表达式拒绝服务(ReDoS)类型,可能被攻击者利用导致服务不可用。
受影响版本
npm包
- lodash: >= 4.0.0, < 4.17.21
- lodash-es: >= 4.0.0, < 4.17.21
- lodash.trim: >= 4.0.0, <= 4.5.1
- lodash.trimend: >= 4.0.0, <= 4.5.1
RubyGems包
- lodash-rails: >= 4.0.0, < 4.17.21
受影响的函数
漏洞影响以下三个Lodash函数:
toNumbertrimtrimEnd
漏洞复现步骤
以下是漏洞复现代码示例:
|
|
安全评分
CVSS v3.1 评分: 5.3(中等)
基础指标
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:无
- 用户交互:无
- 范围:未改变
- 机密性影响:无
- 完整性影响:无
- 可用性影响:低
弱点分类
- CWE-400: 不受控制的资源消耗
- CWE-1333: 低效的正则表达式复杂度
修复版本
已修复的版本为 4.17.21
参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2020-28500
- lodash/lodash#5065
- https://snyk.io/vuln/SNYK-JS-LODASH-1018905
- 多个Oracle安全公告链接
- Siemens产品安全认证
该漏洞允许攻击者通过向受影响函数提供特定构造的输入,触发正则表达式的指数级时间复杂度,从而导致CPU资源耗尽和服务拒绝。