figlet is vulnerable to denial of service via unbounded loop when whitespaceBreak is used with a small width
What fixes it
- 1.11.3figlet, npmGitHub
npm install figlet@1.11.3
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Impact
A denial-of-service (infinite loop) can occur in text() / textSync() when both:
whitespaceBreak: trueis set, andwidthis set smaller than the rendered width of a single FIGlet character.
Under these conditions breakWord() could never find a valid break point, so the word-wrapping loop in generateFigTextLines() never terminated. This pins a CPU core and grows memory without bound, blocking the Node.js event loop.
Severity
Low or Medium. Triggering requires a non-default configuration (whitespaceBreak: true) and an attacker-controlled width value reaching text()/textSync(). This library is typically used with fixed options, where this is not reachable. Applications that pass an untrusted width together with whitespaceBreak on a request path are affected.
Patches
Fixed in figlet 1.11.3. breakWord() now always makes forward progress (emitting an over-wide character on its own line), and FIGlet header parsing now rejects invalid values (e.g. zero/negative height).
Workarounds
Do not expose width to untrusted input, or leave whitespaceBreak disabled (the default), or upgrade to 1.11.3.
Text from GitHub Advisory Database
Affected versions 3
- figlet, npm< 1.11.3GitHub
- figlet.jsaffected: < 1.11.3CVE List
- figlet, npmfrom first release, fixed in 1.11.3OSV
References 5
- github.com/patorjk/figlet.js/commit/cb2839d0e53aeafbd361e9587abc72e49e41cbb3Fixvia CVE List
- github.com/patorjk/figlet.js/security/advisories/GHSA-62ch-8vmq-8xm7Advisoryvia CVE List
- github.com/advisories/GHSA-62ch-8vmq-8xm7Advisoryvia GitHub
- nvd.nist.gov/vuln/detail/CVE-2026-96780Referencevia GitHub
- github.com/patorjk/figlet.js/pull/169Referencevia CVE List