|1 via 1 paths|
Find, fix and prevent vulnerabilities in your code.
- Vulnerable module: ismobilejs
- Introduced through: email@example.com
Introduced through: firstname.lastname@example.orgRemediation: Upgrade to email@example.com.
ismobilejs is a simple JS library that detects mobile devices.
Affected versions of this package are vulnerable to Regular Expression Denial of Service (ReDoS) via multiple regular expression used for parsing the user agent.
Multiple such regexs are checked against the user agent for 40.000 characters around 22 seconds matching time.
Let’s take the following regular expression as an example:
regex = /A(B|C+)+D/
This regular expression accomplishes the following:
AThe string must start with the letter 'A'
(B|C+)+The string must then follow the letter A with either the letter 'B' or some number of occurrences of the letter 'C' (the
+matches one or more times). The
+at the end of this section states that we can look for one or more matches of this section.
DFinally, we ensure this section of the string ends with a 'D'
The expression would match inputs such as
It most cases, it doesn't take very long for a regex engine to find a match:
From there, the number of steps the engine must use to validate a string just continues to grow.
|String||Number of C's||Number of steps|
Upgrade ismobilejs to version 0.5.0 or higher.