Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker publishes malicious npm package with escape sequences in homepage/repo fields
-
DeliveryDeveloper adds or audits package as a project dependency
-
ExploitDeveloper runs ncu --format homepage (non-default flag)
-
Executionnpm-check-updates reads unfiltered homepage metadata
-
PersistEscape sequences written directly to terminal output
-
ImpactTerminal processes OSC/CR sequences, manipulating display or setting attacker-controlled window title
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Escape character neutralization
|
| Exploitation Conditions | Exploitation requires all three of the following conditions: (1) the developer or CI pipeline explicitly invokes npm-check-updates with the |
| Impact | The CVSS 4.0 score of 5.3 (Medium) is broadly appropriate but may overstate complexity: the provided vector AV:N/AC:L/AT:N/PR:N/UI:P reflects that attack complexity is assessed as low, though exploitation in practice requires a developer to explicitly invoke two non-default flags ( |
| Exploit ScenarioDerived | A threat actor publishes a malicious npm package to the public registry and embeds an OSC terminal escape sequence such as |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 10, 2026
Terminal escape sequence injection in npm-check-updates through 23.0.2 enables a supply-chain attacker who controls a malicious npm package's metadata to embed arbitrary VT100/OSC control sequences in the homepage or repository URL fields of package.json. When developers run ncu --format homepage or --format repo, these unfiltered sequences are written directly to the terminal, allowing output overwriting via bare carriage returns, terminal title hijacking via OSC sequences, and other display manipulation on developer workstations or CI runners. No public exploit has been identified at time of analysis and no CISA KEV listing exists, but the fix PR's test suite demonstrates the exact attack pattern using OSC title-setting sequences and CR overwrites.
RemediationAI
Upgrade npm-check-updates to a version that includes commit b554b84848fc0b08a9d2b3d3db15e351387168cf; verify the installed version includes this commit by checking the package changelog or running npm info npm-check-updates to confirm the latest published version post-fix, as an exact patched release number is not confirmed in the available intelligence. The upstream patch is at https://github.com/raineorshine/npm-check-updates/commit/b554b84848fc0b08a9d2b3d3db15e351387168cf. If immediate upgrade is not possible, the primary compensating control is to omit the --format homepage and --format repo flags from all ncu invocations - doing so prevents the vulnerable code path from executing entirely, since the injection only occurs through those output formatters. CI pipelines and developer scripts using ncu should be audited for these flags. Note that removing the flags reduces output verbosity, which is the only operational trade-off.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability resides in src/lib/logging.ts of npm-check-updates (CPE: cpe:2.3:a:raineorshine:npm-check-updates:*:*:*:*:*:*:*:*), a Node.js CLI tool for auditing and upgrading npm dependency versions. CWE-150 (Improper Neutralization of Escape, Meta, or Control Sequences) describes the root cause: package-registry-supplied strings from homepage and repository fields were interpolated directly into terminal output via toDependencyTable() without sanitization. Node.js terminal emulators process ANSI/VT100 escape sequences, OSC sequences (e.g., ESC]0;title\x07 sets the terminal window title), and bare C0 control characters like CR (0x0D) which can overwrite rendered lines. The patch in commit b554b84 introduces a sanitizeForDisplay() function combining Node.js's built-in stripVTControlCharacters() from node:util with a regex stripping all C0 and C1 control characters (U+0000-U+001F, U+007F-U+009F). The fix was applied to multiple output paths: homepage/repo URL display, peer dependency error messages in printIgnoredUpdatesDueToPeerDeps, engine constraint messages in printIgnoredUpdatesDueToEnginesNode, and the general error table renderer.
Know when Npm Check Updates 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:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
High complexity because exploitation requires both non-default --format flags and a malicious package in scope; UI:R since the developer must actively invoke those flags; I:L only for terminal display manipulation.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
npm-check-updates through 23.0.2, fixed in commit b554b84, contains a terminal escape sequence injection vulnerability that allows an attacker to embed arbitrary terminal control characters in a dependency's package.json homepage or repository URL fields. When a developer runs ncu with the --format homepage or --format repo option, unfiltered escape sequences are written directly to the terminal, enabling malicious output manipulation or other terminal-dependent effects.
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
EUVD-2026-55804
GHSA-xm8c-hvjf-c5q9
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB