Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft repo manifest with ANSI/OSC escapes in name/version
-
ExploitVictim clones and runs onefetch
-
ExecutionFields written to terminal unsanitized
-
ImpactEscape sequences manipulate terminal output/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 the victim to run the onefetch CLI (version through 2.28.1) against a repository whose project manifest name or version fields have been populated with attacker-supplied ANSI/OSC terminal escape sequences; the attacker must therefore control the manifest contents of a repo the victim inspects. Impact is limited by the local attack vector (victim must execute the tool), the required user interaction, and the terminal emulator's own handling of escape sequences - the concrete effect (title rewrite, hidden/spoofed text, emulator-specific behavior) varies by terminal and there is no code execution within onefetch itself. |
| Impact | This is a genuinely low-to-medium real-world risk despite being a valid injection flaw. The vendor CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N) scores 4.8 (medium) and is internally consistent with the description: exploitation is local (the victim must run onefetch against attacker-controlled repository data), requires passive user interaction, and yields only limited integrity impact (VI:L) with no confidentiality or availability loss. There is no EPSS score, no CISA KEV listing, and no public exploit code identified at time of analysis, so exploitation status is 'no public exploit identified at time of analysis.' The signals do not conflict: a local vector plus required user interaction plus integrity-only impact all point to a low-severity, opportunistic issue rather than a mass-exploitation priority. The only mild tension is the 'Code Injection' tag, which overstates the flaw - CWE-150 (improper neutralization of escape/meta characters) describes terminal escape-sequence injection, not arbitrary code execution in onefetch itself. Note that terminal-escape injection can occasionally escalate on specific emulators (window-title rewrite, clipboard/paste tricks), which is why residual risk is not zero, but the vendor conservatively rated integrity as Low. |
| Exploit ScenarioDerived | An attacker publishes or contributes a Git repository whose project manifest (e.g. name or version field) contains embedded ANSI/OSC escape sequences. When a victim clones the repo and runs onefetch (2.28.1 or earlier) to display its summary, onefetch writes those field values to the terminal without stripping control characters, letting the attacker rewrite the window title, hide or spoof text, or trigger emulator-specific behavior. No public exploit code has been identified, and success depends on the victim voluntarily running the tool against the malicious repository. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 27, 2026
Terminal escape sequence injection in the onefetch CLI (through version 2.28.1) lets an attacker who controls a repository's project manifest metadata manipulate the victim's terminal when the victim runs onefetch against that repository. Because the tool writes manifest name and version field values directly to the terminal without neutralizing control characters, embedded ANSI/OSC sequences can rewrite window titles, hide or spoof displayed text, or trigger emulator-specific behavior; the concrete effect depends on the terminal emulator in use. There is no public exploit code identified at time of analysis and no confirmed active exploitation, CVSS is 4.8, and the assessed real-world risk is low-to-medium: the attacker must first get the victim to inspect a repository containing poisoned manifest fields, and exploitation yields display manipulation rather than code execution within onefetch itself.
RemediationAI
No vendor-released patch identified at time of analysis, so there is no fixed version to cite; track https://github.com/o2sh/onefetch/issues/1828 and the project repository at https://github.com/o2sh/onefetch for a release that sanitizes or escapes control characters in info_field.rs and version.rs, and upgrade as soon as a patched build is published (the affected range is all releases through 2.28.1). Until then, the most effective compensating control is simply not running onefetch against repositories whose manifest contents you do not trust, including freshly cloned or contributor-supplied forks, since the injection only triggers when the tool reads the poisoned field. If untrusted repositories must be inspected, run onefetch inside a disposable container or VM and pipe its output through a filter that strips C0 control bytes and escape sequences (for example tr or sed removing \x1b and \x00-\x1f) before the bytes reach the terminal, accepting that this sanitization can also mangle legitimate colored output and Unicode rendering. Harden the terminal itself by disabling window-title setting, OSC 8 hyperlinks, and clipboard sequences where the emulator allows it, which neutralizes the highest-visibility effects (title rewrite and spoofed links) but does not stop every emulator-specific sequence, and note that plain-text capture of the raw output for later inspection preserves the malicious bytes, so review such captures with an editor that does not interpret escapes.
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 flaw is a classic CWE-150 (Improper Neutralization of Escape, Meta, or Control Sequences) instance in a Rust command-line tool. onefetch gathers repository statistics and renders them to a terminal; the affected code paths in src/info/utils/info_field.rs (lines 43-55) and src/info/version.rs (lines 33-35) emit field values verbatim, so any C0 control bytes or escape sequences carried inside a manifest value (for example the version or name string in a Cargo.toml, package.json, or comparable project manifest) are interpreted by the terminal emulator rather than displayed literally. ANSI CSI/SGR sequences can hide or reposition text, while OSC sequences (such as OSC 0/2 window-title setting or OSC 8 hyperlinking) allow output redirection or clickable-link spoofing; some emulators also implement OSC 52 clipboard writes or vendor-specific sequences, which broadens the observable impact. The assessed vector (CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N, consistent with the supplied CVSS 4.0 rating of 4.8) confirms a local attack path requiring user interaction, no integrity or availability impact beyond the spoofed display, and no code execution inside onefetch - the escape sequences are interpreted by the terminal, not executed by the application, so the severity ceiling is set by what the victim's emulator permits.
Know when Rust 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:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Victim must run the tool locally against attacker-controlled repo data (AV:L, UI:R); no auth needed (PR:N); only limited integrity/output manipulation (I:L), no confidentiality or availability loss.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
onefetch through 2.28.1 writes repository information field values to the terminal without removing control characters, allowing terminal escape sequence injection. Attackers can embed ANSI/OSC escape sequences in project manifest version and name fields to manipulate terminal output, rewrite window titles, hide text, or trigger emulator-specific behavior when victims run onefetch.
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.
Command injection via Windows CreateProcess argument parsing affects multiple language runtimes and tooling (Node.js, PH
In the standard library in Rust before 1.52.0, a double free can occur in the Vec::from_iter function if freeing the ele
In the standard library in Rust before 1.52.0, the Zip implementation can report an incorrect size due to an integer ove
Stored cross-site scripting and open redirect in Warpgate's SSO endpoints (versions prior to 0.25.5) allow an unauthenti
library/std/src/net/parser.rs in Rust before 1.53.0 does not properly consider extraneous zero characters at the beginni
Denial of service in the Vector observability pipeline's `logstash` source (versions 0.15.0 through 0.56.x) allows a rem
The Rust Programming Language Standard Library 1.34.x before 1.34.2 contains a stabilized method which, if overridden, c
In the standard library in Rust before 1.52.0, the Zip implementation calls __iterator_get_unchecked() more than once fo
In the standard library in Rust before 1.50.0, read_to_end() does not validate the return value from Read in an unsafe c
Cargo prior to Rust 1.26.0 may download the wrong dependency if your package.toml file uses the `package` configuration
Rust is a programming language. Rated critical severity (CVSS 10.0), this vulnerability is remotely exploitable, no auth
The Rust Programming Language Standard Library version 1.29.0, 1.28.0, 1.27.2, 1.27.1, 127.0, 126.2, 126.1, 126.0 contai
EUVD-2026-87938
GHSA-fp7q-m5xh-3ggj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB