Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Security Fix for Regular Expression Denial of Service (ReDoS) - huntr.dev #14

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

huntr-helper
Copy link

https://huntr.dev/users/mufeedvh has fixed the Regular Expression Denial of Service (ReDoS) vulnerability 馃敤. mufeedvh has been awarded $25 for fixing the vulnerability through the huntr bug bounty program 馃挼. Think you could fix a vulnerability like this?

Get involved at https://huntr.dev/

Q | A
Version Affected | ALL
Bug Fix | YES
Original Pull Request | 418sec#1
GitHub Issue | #10
Vulnerability README | https://github.com/418sec/huntr/blob/master/bounties/npm/timespan.js/1/README.md

User Comments:

馃搳 Metadata *

Bounty URL: https://www.huntr.dev/bounties/1-npm-timespan.js

鈿欙笍 Description *

No limitation in input size inside Regex makes it vulnerable to ReDoS (Regex Denial of Service) which can cause a slowdown (for 50,000 characters around 10 seconds matching time).

馃捇 Technical Description *

The Regex implementations used are vulnerable to ReDoS as they check for digits with no limits:

(\d+)

This can be fixed with limiting the digit matches of the Regex pattern.

馃悰 Proof of Concept (PoC) *

The following regular expressions used for parsing the dates are vulnerable to ReDoS:

/(\d+)milli(?:second)?[s]?/i
/(\d+)second[s]?/i
...

The slowdown is relatively large when combining the slowdown produced by all the regex (for 50,000 characters around 10
seconds matching time).

Ref: #10

馃敟 Proof of Fix (PoF) *

As the author of #10 (comment) suggests, I've implemented a digit limit for the Regex (MAX_SAFE_INTEGER).

(\d{1,16})

馃憤 User Acceptance Testing (UAT)

Changed the Regex pattern, no breaking changes have been introduced.

mufeedvh and others added 2 commits August 9, 2020 15:27
Fix ReDoS by limiting digit matches
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants