Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft filenames with ANSI erase/cursor bytes
-
DeliveryPlant them on a tampered drive
-
ExploitVictim runs verify-usb (<=1.4.8)
-
ExecutionControl bytes repaint terminal output
-
ImpactForged PASSED verdict masks tamper detection
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A09:2025 - Security Logging & Alerting Failures
ASVS 5.0
V16 - Security Logging and Error Handling Log output neutralization
|
| Exploitation Conditions | Exploitation requires all of the following concrete conditions: (1) the attacker can control filenames on a drive that the victim will scan - these names live outside the AES-GCM authenticated manifest and are not integrity-protected; (2) the victim runs the specific verify-usb command of openssl-encrypt version <= 1.4.8 against that attacker-influenced drive; and (3) the victim views the command's output in a terminal emulator that interprets ANSI/VT100 cursor-movement and erase-line control bytes. Limiting factors: the attack is a display-spoofing deception only (no code execution, no data disclosure), it depends on the victim actively running verify-usb and reading interactive terminal output, and it fails if output is captured to a plain log, piped through a control-character sanitizer, or viewed in a non-interpreting viewer. Despite the provided vector's PR:N/UI:N, the described mechanics imply attacker-supplied drive data plus victim action, so the practical prerequisites are narrower than a remote unauthenticated attack. |
| Impact | The supplied CVSS 4.0 score of 9.3 (VC:H/VI:H/VA:H, AV:N) substantially overstates the real technical impact of this bug and should be treated with caution. The actual weakness is CWE-117 output injection whose sole effect is to repaint a forged verdict on a terminal - there is no confidentiality loss, no availability loss, and no code execution, so high C/I/A ratings are not supported by the description. The 'AV:N/PR:N/UI:N' portion of the vector also conflicts with the described mechanics: exploitation requires the victim to run verify-usb against attacker-supplied drive data and to view the result in an escape-sequence-interpreting terminal, which is closer to local delivery with user interaction than to remote unauthenticated attack - verify with the vendor. There is no CISA KEV listing, no EPSS value supplied, and no POC referenced, so this is a low-probability, targeted deception scenario rather than a mass-exploitation threat. That said, the consequence class matters for anyone who relies on verify-usb as a security control: a spoofed PASSED verdict could cause an operator to trust a tampered drive, so teams using this tool for integrity attestation should still patch promptly even though the raw 9.3 headline number overstates the danger. Net assessment: high-severity-on-paper, moderate-real-risk, narrow prerequisites. |
| Exploit ScenarioDerived | An attacker prepares a USB drive (or other removable medium) whose files carry names embedding terminal cursor-movement and erase-line escape sequences alongside real tampering of the drive's contents. When a victim runs 'verify-usb' on that drive with a version <= 1.4.8, the tool's genuine tamper-detection output is visually overwritten by a forged 'PASSED' line, so the operator accepts a compromised drive as authentic. No public POC is referenced, and exploitation depends on local delivery of the malicious drive plus the victim viewing output in an ANSI-interpreting terminal. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Verdict spoofing in the openssl-encrypt pip package (versions <= 1.4.8) lets an attacker who controls the contents of a scanned drive forge a PASSED tamper-check result. Because filenames read from untrusted drive data are printed by the verify-usb command without neutralizing terminal control bytes, crafted names containing cursor-movement and erase-line sequences can repaint the screen to hide genuine tamper detection. There is no public exploit identified at time of analysis and it is not in CISA KEV; the issue is fixed in 1.4.9, which routes drive-derived names through sanitize_for_display().
RemediationAI
Upgrade to openssl-encrypt 1.4.9 or later, which is the vendor-released patch and neutralizes the issue by passing drive-derived filenames through sanitize_for_display() before printing (pip install --upgrade openssl-encrypt). Until you can upgrade, avoid running the verify-usb command against untrusted or attacker-reachable drives, and if you must inspect an untrusted drive, pipe the command output through a control-character stripper (for example 'cat -v' or 'sed' to strip ESC 0x1b sequences) or redirect output to a plain file and review it in an editor that renders escape bytes literally rather than in an interactive terminal - the trade-off is reduced readability and manual review overhead. Do not treat a PASSED verdict from an unpatched version as trustworthy for any drive whose filenames you do not control. Refer to the GitHub advisory GHSA-c793-rj9w-r3wg and the VulnCheck advisory for authoritative guidance.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
openssl-encrypt is a Python file-encryption utility (CPE cpe:2.3:a:jahlives:openssl_encrypt) that offers a verify-usb command to check whether files on a drive match an AES-GCM authenticated manifest. The flaw is a classic CWE-117 (Improper Output Neutralization) issue: filenames are read from the drive filesystem, which lives OUTSIDE the AES-GCM authenticated manifest and is therefore fully attacker-controllable, and are then echoed to the terminal verbatim. ANSI/VT100 escape sequences embedded in those filenames (e.g. cursor-up, carriage-return, erase-line) are interpreted by the terminal emulator rather than displayed literally, allowing the output stream itself to overwrite prior lines. This is an output-integrity / display-spoofing weakness, not a memory-safety or code-execution bug - the cryptographic verification still works correctly under the hood; only the human-readable rendering of its result is subverted.
Know when OpenSSL 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:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Attacker-supplied local drive data (AV:L) plus a victim who must run verify-usb and view terminal output (UI:R); impact is defeating the integrity verdict (I:H) with no confidentiality or availability effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
openssl-encrypt (pip package, versions <= 1.4.8) fails to sanitize filenames read from untrusted drive data (outside the AES-GCM authenticated manifest) before printing them in the verify-usb command's output. An attacker can plant filenames containing terminal cursor-movement and erase-line control bytes that repaint a forged PASSED verdict on screen, masking actual tamper detection. Fixed in 1.4.9 by routing drive-derived names through sanitize_for_display().
Articles & Coverage 2
Executive ViewAI
The openssl-encrypt package (versions 1.4.8 and earlier) permits attackers with control of USB drive contents to forge successful tamper-verification results, directly undermining the integrity of the organization's drive-scanning security controls. Any systems using this package for USB verification are accepting forged tamper checks, creating a blind spot for contaminated media.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe
In order to decrypt SM2 encrypted data an application is expected to call the API function EVP_PKEY_decrypt(). Rated cri
The dtls1_reassemble_fragment function in d1_both.c in OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
The SSLv2 protocol, as used in OpenSSL before 1.0.1s and 1.0.2 before 1.0.2g and other products, requires a server to se
The ssl3_get_key_exchange function in s3_clnt.c in OpenSSL before 0.9.8zd, 1.0.0 before 1.0.0p, and 1.0.1 before 1.0.1k
In addition to the c_rehash shell command injection identified in CVE-2022-1292, further circumstances where the c_rehas
The TLS protocol 1.2 and earlier, when a DHE_EXPORT ciphersuite is enabled on a server but not on a client, does not pro
The SSL protocol 3.0, as used in OpenSSL through 1.0.1i and other products, uses nondeterministic CBC padding, which mak
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
The X509_verify_cert function in crypto/x509/x509_vfy.c in OpenSSL 1.0.1n, 1.0.1o, 1.0.2b, and 1.0.2c does not properly
A buffer overrun can be triggered in X.509 certificate verification, specifically in name constraint checking. Rated hig
EUVD-2026-67050
GHSA-9grr-c5h5-3w4h
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB