Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach figlet endpoint with whitespaceBreak enabled
-
DeliverySubmit tiny attacker-controlled width value
-
ExploitbreakWord() finds no valid break point
-
ExecutiongenerateFigTextLines() loops without consuming input
-
ImpactCPU/memory exhaustion denies service
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Loop termination conditions
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Two concrete prerequisites must both be met in the consuming application: (1) the non-default whitespaceBreak option must be explicitly enabled on the text()/textSync() call, and (2) an attacker must control (or influence) the width parameter and set it smaller than the rendered width of a single FIGlet character in the chosen font. Exploitation is LIMITED by the fact that whitespaceBreak is off by default and width is frequently a fixed server-side constant; applications that hardcode width or never enable whitespaceBreak are not exploitable. No authentication or user interaction is required by the library itself (PR:N/UI:N), but the AT:P metric reflects this required configuration/input condition. |
| Impact | This is a CWE-835 uncontrolled-loop denial-of-service flaw in figlet.js with a vendor CVSS 4.0 base score of 8.2 (AV:N/AC:L/AT:P/PR:N/UI:N) whose only impact is availability (VA:H); confidentiality and integrity are explicitly N, so there is no code execution or data exposure. The headline 8.2 overstates real-world priority because the AT:P (attack requirements present) metric and the description both make clear exploitation is conditional: the non-default whitespaceBreak option must be enabled AND an attacker-controlled width smaller than a single FIGlet character's rendered width must both reach the vulnerable text()/textSync() call. No EPSS score, SSVC decision, KEV listing, or POC was provided in the input - there is no public exploit identified at time of analysis and no evidence of active exploitation. Signals are internally consistent (network DoS gated by a specific configuration), so this is a genuine but situational availability issue rather than a broadly exploitable critical: realistic risk is limited to services that expose figlet rendering with attacker-influenced width and whitespaceBreak turned on. Patch is confirmed available (v1.11.3), lowering residual risk for maintained deployments. |
| Exploit ScenarioDerived | A web service or API that renders user-supplied text with figlet.js enables the non-default whitespaceBreak option and passes an attacker-controlled width value. The attacker submits a request specifying width=1 (smaller than any single character), causing breakWord() to never find a valid break point so generateFigTextLines() loops indefinitely, pinning CPU and growing memory until the Node.js process is exhausted. No public exploit code was identified, but the fix PR includes trivial reproducer test cases (e.g. text('AB', {width:1, whitespaceBreak:true})). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 01, 2026
Unbounded CPU and memory consumption in figlet.js versions prior to 1.11.3 allows remote, unauthenticated attackers to exhaust server resources by driving text() or textSync() into a non-terminating loop. Exploitation requires two conditions in the consuming application: the non-default whitespaceBreak option must be enabled, and the attacker must control or influence the width parameter and set it narrower than the rendered width of a single FIGlet character - the root cause is CWE-835, where breakWord() cannot find a valid break point, returns without consuming any character, and generateFigTextLines() reprocesses the same input indefinitely. Impact is availability-only (CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H; vendor CVSS 4.0 base 8.2 with VA:H and VC/VI:N), with no code execution, file access, or data exposure; exploitability is limited because whitespaceBreak is off by default and width is often hardcoded server-side. No public exploit code has been identified at time of analysis, and there is no evidence of active exploitation (no CISA KEV listing).
RemediationAI
Upgrade figlet.js to 1.11.3 or later - vendor-released patch: 1.11.3, per advisory GHSA-62ch-8vmq-8xm7 (fix PR #169 / commit cb2839d0e53aeafbd361e9587abc72e49e41cbb3). Because both prerequisites must be present, the fastest compensating control is to stop enabling the non-default whitespaceBreak option in any code path that processes untrusted text; this completely removes the vulnerable code path, at the cost of losing whitespace-preferring line breaks in rendered banners. Where whitespaceBreak must stay on, never pass a user-supplied width directly - clamp or hardcode width to a value at least as large as the widest glyph in the configured font (narrow widths are exactly the trigger), and validate/reject values below that floor, accepting that very narrow layouts are no longer supported. Additionally, run rendering inside a worker thread or subprocess with a hard execution timeout and memory cap so a looping call is killed rather than blocking the Node.js event loop, applying request timeouts and per-client rate limiting at the API gateway as a further backstop; these are defence-in-depth measures and do not substitute for the upgrade. Note that the same 1.11.3 release also rejects malformed FIGlet font headers with negative or zero height, baseline, maxLength, or comment-line counts, so any pipeline loading third-party .flf fonts should be updated as well.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
figlet.js (the patorjk/node-figlet package, CPE cpe:2.3:a:patorjk:figlet.js) is a JavaScript implementation of the FIGfont specification that renders ASCII/Unicode banner text. The flaw is an uncontrolled loop (CWE-835) in the word-wrapping pipeline: when a caller enables the non-default whitespaceBreak option together with a width smaller than the rendered width of a single FIGlet character in the selected font, breakWord() cannot locate a legal break point and returns without consuming a character from the input. generateFigTextLines() then loops over the same unconsumed input, burning CPU and growing memory until the process is exhausted - a particularly severe availability issue in Node.js because rendering runs on the single-threaded event loop, so a single request can stall the entire process rather than just one connection. The upstream fix in version 1.11.3 (PR #169, commit cb2839d0e53aeafbd361e9587abc72e49e41cbb3) adds a guard that emits the first character on its own line when no break point fits within opts.width, guaranteeing forward progress. The same commit hardens font parsing by rejecting FIGlet headers with non-positive height, negative baseline, negative maxLength, or negative comment-line counts, preventing related malformed-header conditions.
Know when Figlet Js gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable DoS but gated by non-default whitespaceBreak plus an attacker-controlled undersized width, so AC:H; only availability is affected, C/I:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
figlet.js is a FIG driver written in JavaScript that aims to implement the FIGfont specification. Prior to 1.11.3, text() and textSync() can enter an unbounded loop when whitespaceBreak is enabled and width is smaller than the rendered width of a single FIGlet character. Under these conditions, breakWord() cannot find a valid break point and returns without consuming a character, so generateFigTextLines() repeatedly processes the same input while consuming CPU and growing memory. The non-default option and attacker-controlled width must both reach an affected call. This issue is fixed in version 1.11.3.
Blast Radius
ecosystem impact- 8 npm packages depend on figlet (7 direct, 1 indirect)
Ecosystem-wide dependent count for version 1.11.3.
Technical POC Analysis
CWE-835 (Loop with Unreachable Exit Condition).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
figlet.js, a text-rendering library embedded in several of our JavaScript services, contains a resource-exhaustion flaw that can send a rendering call into a non-terminating loop, consuming CPU and memory until the affected process or host stops responding to legitimate traffic. Exploitation is restricted to unauthenticated attackers who hit a deployment that has enabled the non-default whitespaceBreak option and that lets client input influence the width parameter - no public exploit identified at time of analysis - so exposure is narrower than the headline severity suggests, but any internet-facing service meeting both conditions can be taken offline without credentials. Leadership should treat this as a service-availability and uptime risk and drive it through our standard dependency-patching process rather than as an application redesign.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
EUVD-2026-91058
GHSA-62ch-8vmq-8xm7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB