Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessEnable --debug in 'keyserver set-token' invocation
-
DeliveryToken printed to stderr in argv dump
-
ExploitAttacker reads CI/CD or aggregated logs
-
ExecutionExtract cleartext bearer token
-
PersistAuthenticate to keyserver
-
ImpactAccess protected keyserver resources
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 | Exploitation requires both of the following: (1) the --debug flag must be explicitly passed when invoking 'keyserver set-token <token>' - the token is not exposed in normal (non-debug) operation, and the --unsafe-show-secrets guard does not govern this path; (2) an attacker must have read access to the stderr output, which could be a local terminal session, shared shell history, a CI/CD build log (e.g., GitHub Actions, Jenkins), or a centralized log aggregation system. Deployments that never use 'keyserver set-token' or never enable --debug are not affected. Limiting factors: the vulnerability does not allow remote unauthenticated access to the token without prior log access; it produces no network-reachable exposure on its own. |
| Impact | The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N, score 8.7) represents a theoretical ceiling that requires scrutiny. Practically, exploitation depends on two preconditions that substantially reduce opportunistic risk: a legitimate operator must invoke 'keyserver set-token' with --debug active, and an attacker must have read access to the resulting stderr output (CI/CD pipeline logs, centralized log aggregation, shared terminal sessions, or shell history files). The PR:N and UI:N assignments in the provided vector appear to reflect worst-case assumptions about log accessibility rather than direct network exploitability. In environments where debug output flows into shared CI platforms (GitHub Actions logs, Jenkins console, etc.), the effective attack surface becomes broader and the risk materially higher. No EPSS data was provided; no CISA KEV listing and no POC availability are confirmed. Real-world priority should be elevated for teams running this package in CI/CD pipelines where build logs are accessible to multiple users or external contributors. |
| Exploit ScenarioDerived | A developer or automated CI/CD job invokes 'keyserver set-token <BEARER_TOKEN> --debug' during a pipeline run; the token appears in cleartext in the build log output visible to all contributors with repository access. An attacker - an insider, a malicious contributor, or someone who gains read access to the CI platform - retrieves the token from the logs and uses it to authenticate to the keyserver, accessing or exfiltrating protected resources without further exploitation steps. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Credential exposure in the openssl-encrypt pip package (versions ≤ 1.4.8) leaks keyserver bearer tokens in cleartext to stderr when the --debug flag is active. The root cause is a gap in sanitize_argv_for_debug(), which fails to redact the token supplied as a positional argument to the 'keyserver set-token' subcommand, leaving it visible in terminal output, CI/CD build logs, and shell history. Fixed in version 1.4.9; no public exploit identified at time of analysis, but credential exposure is immediately actionable for any attacker with access to affected log sources.
RemediationAI
The primary fix is to upgrade openssl-encrypt to version 1.4.9 or later via pip ('pip install --upgrade openssl-encrypt'). This version patches sanitize_argv_for_debug() to redact the positional token argument. If immediate upgrade is not possible, stop passing the --debug flag to any invocation of 'keyserver set-token' as an immediate workaround - the token is only exposed when --debug is active. Additionally, rotate any keyserver bearer tokens that may have been passed to affected versions under --debug, since those credentials may already persist in logs, CI/CD artifacts, or shell history. Audit log aggregation systems and CI/CD pipeline output for any historical exposure. Restrict access to build logs and stderr outputs that may have captured prior debug runs. See the vendor advisory at https://github.com/jahlives/openssl_encrypt/security/advisories/GHSA-jqqp-pf9j-889j.
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
The openssl-encrypt package (CPE: cpe:2.3:a:jahlives:openssl_encrypt:*:*:*:*:*:*:*:*, PyPI/pip) is a Python wrapper providing CLI access to OpenSSL operations including keyserver token management. Its --debug mode serializes the full argv array to stderr for diagnostic purposes. The sanitize_argv_for_debug() function is responsible for scrubbing sensitive values from this dump, but it does not cover the positional token argument accepted by the 'keyserver set-token' subcommand - only named/flag-style arguments appear to be handled. CWE-532 (Insertion of Sensitive Information into Log File) captures this root cause precisely: a credential flowing through an argument vector reaches an insufficiently filtered logging path, bypassing the --unsafe-show-secrets guard entirely.
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
Log access requires at minimum low-privilege read rights (PR:L), and a legitimate user must trigger the debug run (UI:R); only confidentiality is impacted.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
openssl_encrypt (pip package openssl-encrypt) versions <= 1.4.8 do not redact the keyserver bearer token passed as the positional argument to 'keyserver set-token' in the --debug argv dump, because sanitize_argv_for_debug fails to sanitize it. As a result the token is printed in cleartext to stderr under --debug (even without --unsafe-show-secrets), persisting the credential in logs and terminal history. Fixed in 1.4.9.
Articles & Coverage 1
Executive ViewAI
Keyserver credentials in the openssl-encrypt package can be exposed in plain text when developers enable debug logging, creating immediate risk for organizations that have inadvertently logged these authentication tokens in CI/CD systems or terminal histories. This affects all versions 1.4.8 and earlier of this widely-used cryptographic utility. Any attacker with access to build logs or shell histories can immediately extract and abuse exposed credentials to compromise key management infrastructure.
Apply vendor patch: upgrade to openssl-encrypt version 1.4.9 or later. Until patched, disable --debug flag in all production and CI/CD environments and conduct immediate audit of logs for exposed credentials.
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-67065
GHSA-h5x2-vmqf-9934
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB