All vulnerabilities
CVE-2026-96780GHSA-62ch-8vmq-8xm7

figlet is vulnerable to denial of service via unbounded loop when whitespaceBreak is used with a small width

patorjk figletnpmLibraries & packages
CVSS
8.2High
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.40%Chance of exploitation activity in the next 30 days, higher than 33% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in1.11.3Fixed versionGitHub
Published1 Oct 2026Updated 2 Oct 2026CVE List

What fixes it

  • 1.11.3figlet, npmGitHubnpm 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: true is set, and
  • width is 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