Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessTarget runs openssl-encrypt --debug with bundled/abbreviated password arg
-
DeliverySanitizer fails to match non-canonical argument form
-
ExploitCleartext password written to stderr debug dump
-
ExecutionDebug output captured in CI log or persistent log file
-
PersistAttacker reads log without special privileges
-
ImpactAttacker recovers cleartext encryption password
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A09:2025 - Security Logging & Alerting Failures
ASVS 5.0
V16 - Security Logging and Error Handling Log data sanitization
|
| Exploitation Conditions | Two conditions must both be true for exploitation: (1) the user invokes openssl-encrypt with the --debug flag enabled, and (2) the file password is supplied via a bundled short-option spelling (e.g., -apPassword, where the password immediately follows -p without a space as part of a bundled option token) or an abbreviated long-option spelling (e.g., --passw=Password or --pass=Password accepted as prefixes of --password). The attacker must additionally have read access to the debug output - via public CI job log, terminal scrollback, merged 2>&1 redirect to a shared file, or the GUI's persistent debug log. Passwords supplied via the exact canonical forms --password=value or -p value are correctly redacted and are not exposed. Deployments that do not use --debug mode are entirely unaffected. The vulnerability does not exist in default invocations without the debug flag. |
| Impact | The CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H) reflects the scenario in which debug output is aggregated into network-accessible logs - most critically, public CI pipeline job logs where any internet user can read the output without authentication. In that context the score is defensible: no special conditions are imposed on the attacker beyond the target having run the tool with --debug and a vulnerable argument form. However, in environments where log access is restricted (private CI, local-only stderr), effective exploitability is substantially lower and closer to an AV:L/PR:L profile. EPSS data is not provided. The vulnerability is not listed in the CISA KEV catalog, and no public exploit code has been identified at time of analysis. The primary real-world risk is credential exposure in CI/CD pipelines encrypting artifacts or secrets with openssl-encrypt while debug logging is active. Because the tool is a niche wrapper with limited enterprise footprint, the population of affected deployments is small, though within that population the impact of a recovered encryption password is full confidentiality compromise of the protected files. |
| Exploit ScenarioDerived | An attacker monitoring the public job logs of a GitHub Actions pipeline sees that openssl-encrypt is invoked with --debug and the argument -apS3cr3tKey (a bundled short-option supplying the password inline). Because the sanitizer does not recognize this form, the string S3cr3tKey appears in cleartext in the stderr debug dump captured in the log. The attacker records the password and uses it to decrypt any intercepted or publicly accessible encrypted output artifacts from the same pipeline. No exploit tooling is required beyond log access and basic argument parsing knowledge. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Cleartext password leakage in openssl-encrypt before 1.4.9 exposes file encryption credentials in debug output when passwords are supplied via bundled short-option or abbreviated long-option argument forms. The tool's sanitizer, which is designed to redact sensitive arguments before writing the argv dump to stderr, fails to recognize spellings like -apHunter2 (bundled short option) or --passw (abbreviated long option), causing the raw password to appear in terminal scrollback, CI job logs, and persistent GUI debug logs. No public exploit identified at time of analysis; the vulnerability is trivially exploitable by any party with read access to the affected log output.
RemediationAI
Upgrade to openssl-encrypt version 1.4.9 or later, which addresses the sanitizer gap per GitHub Security Advisory GHSA-jgvm-7jxv-cgcc (https://github.com/jahlives/openssl_encrypt/security/advisories/GHSA-jgvm-7jxv-cgcc). Before patching, enforce the use of only canonical argument forms (--password=value or -p value) when --debug mode is active, as these forms are correctly redacted by the existing sanitizer - note that this is an operational control requiring pipeline discipline and cannot be enforced by the tool itself in its vulnerable state. Alternatively, disable --debug entirely in any environment where log output is not strictly access-controlled; this trades troubleshooting capability for credential safety. Restrict stderr output and CI log visibility to authorized personnel to reduce the exposure window regardless of patch status. Immediately rotate any encryption passwords that may have been exposed in past CI job logs, terminal scrollback, or GUI debug log files.
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 (CPE: cpe:2.3:a:jahlives:openssl_encrypt:*:*:*:*:*:*:*:*) is a shell-level wrapper around the OpenSSL CLI, maintained by jahlives on GitHub. It provides a --debug flag that dumps the full argv array to stderr for troubleshooting purposes. The sanitizer responsible for redacting sensitive values before that dump is written handles only three argument forms: exact option names (e.g., --password), --option=value notation, and tokens whose string representation begins with -p. CWE-532 (Insertion of Sensitive Information into Log File) precisely characterizes the root cause: the logging path fails to sanitize all semantically equivalent representations of a sensitive option. POSIX-style short-option bundling allows multiple single-character flags to be concatenated (e.g., -ap where -a is one flag and -p introduces the password inline), and many option-parsing libraries support abbreviated long-option prefix matching, meaning --passw is accepted as equivalent to --password. Neither of these forms is recognized by the sanitizer, so the password token reaches the stderr dump unredacted.
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:N/VA:N/SC:N/SI:N/SA:N
Network vector applies because CI job logs are the primary risk surface and may be publicly readable; no privileges required to read public logs; confidentiality only.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
openssl-encrypt before 1.4.9 fails to redact the file password in its --debug argv dump when the password is supplied via bundled short-option spellings (e.g. -apHunter2) or abbreviated long-option spellings (e.g. --passw). The sanitizer only recognized exact option names, --option=value forms, and tokens starting with -p, so these spellings bypass the redaction chokepoint and the cleartext password is written to stderr. Anyone with access to that output (terminal scrollback, merged 2>&1 output, CI job logs, or the GUI's persistent debug log) can recover the password.
Articles & Coverage 1
Executive ViewAI
openssl-encrypt versions before 1.4.9 leak plaintext encryption passwords into debug logs and CI outputs due to a sanitizer bypass affecting abbreviated argument forms. No public exploit identified at time of analysis, but the vulnerability is trivially exploitable by any party with read access to affected logs, creating immediate risk for credential and file access compromise at any organization using this tool.
Disable debug output and verbose logging flags in all openssl-encrypt invocations; restrict file system and CI log access to only authorized personnel; rotate encryption keys and passwords that may have been exposed in logs; audit historical log access for suspicious activity; implement data loss prevention controls around encrypted file stores; consider discontinuing use of openssl-encrypt pending patch availability.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
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-67061
GHSA-qvh5-87jf-4g7p
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB