Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPrecompute colliding 32-bit GPG key id
-
DeliveryDeliver malicious signing key to operator
-
ExploitOperator confirms short key id
-
ExecutionAttacker key enrolled as trust anchor
-
PersistSign malicious plugins with trusted key
-
ImpactPlugins pass ENFORCE policy and execute
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Requires openssl_encrypt <= 1.4.8 with the plugin-signing feature in use, and specifically an operator invoking enroll_trust_key and confirming a trust anchor by a short (~32-bit) GPG key id instead of the full primary-key fingerprint; the ENFORCE signature policy must be active for the forged anchor to translate into accepted malicious plugins. The attacker must precompute a GPG key whose short key id collides under the suffix-tolerant match and must get that key in front of the operator during enrollment. Limiting factors: exploitation depends on operator interaction and a specific insecure verification habit (trusting short ids), on the attacker performing 32-bit collision/brute-force work, and on a plugin delivery path - it is not a hands-off remote attack against a default configuration despite the input vector's PR:N/UI:N. |
| Impact | The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N, VC:H/VI:H/VA:H, score 9.3 'critical') overstates ease of exploitation relative to the description: the flaw is only triggered when an operator actively runs enroll_trust_key and confirms a short key id, which is real user interaction and non-trivial attack complexity, not the AC:L/UI:N the vector claims - verify this discrepancy against the vendor advisory. No EPSS score, no CISA KEV entry, and no public proof-of-concept were provided, so there is no evidence of active or automated exploitation; the realistic risk is a targeted supply-chain/trust attack requiring attacker collision work plus operator error rather than mass exploitation. That said, the outcome is severe (malicious code execution via trusted plugins bypassing the ENFORCE policy), so any team running openssl_encrypt with plugin signing should treat upgrading to 1.4.9 as a priority even though the practical bar is higher than the 9.3 headline suggests. |
| Exploit ScenarioDerived | An attacker precomputes a GPG key whose short 32-bit key id collides with (or shares the matched suffix of) a key an operator intends to trust, and distributes it through the plugin/key channel. When the operator runs enroll_trust_key and confirms the short id, the attacker's colliding key is bound as a trusted anchor; the attacker then ships plugins signed by that key which pass the ENFORCE signature policy and execute in the application's context. No public exploit code was identified, but generating a 32-bit key-id collision is computationally feasible. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Signature-trust bypass in the openssl_encrypt Python library (PyPI 'openssl-encrypt') versions 1.4.8 and earlier lets an attacker get a forged GPG key enrolled as a plugin-signing trust anchor. Because enroll_trust_key matches key fingerprints with a suffix-tolerant comparison, an operator who verifies only a short (~32-bit, forgeable) GPG key id can be tricked into trusting an attacker-controlled colliding key, which then validly signs malicious plugins even under the strict ENFORCE signature policy. No CISA KEV listing and no public exploit identified at time of analysis; the fix is in 1.4.9.
RemediationAI
Vendor-released patch: upgrade openssl_encrypt to 1.4.9 or later, which enforces exact full-fingerprint matching during trust-anchor enrollment (pip install --upgrade openssl-encrypt). If you cannot upgrade immediately, the specific compensating control is to never confirm or enroll a plugin-signing trust anchor by its short GPG key id: require operators to compare the complete 40-character primary-key fingerprint out-of-band before enrolling, and audit any already-enrolled trust anchors to confirm each maps to the intended full fingerprint rather than just a matching suffix (side effect: manual verification slows enrollment and must be enforced procedurally since the vulnerable code will still accept a suffix match). Where feasible, temporarily disable dynamic plugin loading or restrict enrollment to an offline, tightly controlled process until patched. Refer to GHSA-xg52-638v-jc5m 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 encryption utility (PyPI package 'openssl-encrypt', CPE cpe:2.3:a:jahlives:openssl_encrypt) that supports a plugin system whose plugins must be signed and validated against enrolled GPG trust anchors. The root cause is CWE-347 (Improper Verification of Cryptographic Signature): enroll_trust_key compared the operator-confirmed identifier against key material using suffix-tolerant matching rather than a full-fingerprint equality check. GPG short key ids are only 32 bits, a keyspace small enough to brute-force a collision, so a partial/suffix match against a short id allows a different (attacker) key to satisfy the trust-anchor binding. Version 1.4.9 remediates this by requiring the confirmed value to exactly equal the full primary-key fingerprint (case-insensitive, whitespace-stripped).
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
AC:H and UI:R because exploitation needs a precomputed 32-bit key-id collision plus an operator actively enrolling/confirming the key; PR:N as the attacker needs no target privileges; C/I/A:H from malicious plugin code execution.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
openssl_encrypt (pip: openssl-encrypt) versions <= 1.4.8 use suffix-tolerant fingerprint matching in enroll_trust_key when binding a plugin-signing trust anchor. An operator who confirms a short (forgeable, ~32-bit) GPG key id could unknowingly enroll an attacker's colliding key as a trusted anchor, which then vouches for malicious plugins under the ENFORCE signature policy. Version 1.4.9 fixes this by requiring the confirmed value to exactly match the full primary-key fingerprint (case-insensitive, whitespace-stripped).
Articles & Coverage 2
Executive ViewAI
The openssl_encrypt Python library (versions 1.4.8 and earlier) contains a signature trust bypass vulnerability that allows attackers to forge GPG signing keys and enroll them as trusted plugin signers. An operator relying on short GPG key identifiers can be deceived into trusting an attacker-controlled key, enabling malicious plugins to be validly signed even under strict enforcement policies. This creates a critical supply chain risk for any organization using this library for plugin verification.
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-67064
GHSA-xrf2-fg77-9588
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB