Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain write or supply control of identity.json
-
DeliveryReplace victim's public key, keep claimed fingerprint
-
ExploitLibrary loads identity without re-deriving fingerprint
-
ExecutionEncryption targets attacker key / forged signatures accepted
-
ImpactSilent disclosure and integrity compromise
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
|
| Exploitation Conditions | Exploitation requires the attacker to substitute public keys inside an identity store loaded from identity.json - that is, the ability to modify, replace, or supply the identity.json file that the victim's openssl_encrypt instance loads. The specific enabling condition is that vulnerable versions (before 1.4.9) do not re-derive and validate the fingerprint on load, so a swapped key that keeps the original claimed fingerprint is accepted silently. Exploitation is limited by the need to reach the identity store: environments where identity.json is a local file writable only by a trusted user are far harder to attack than those where the store is shared, network-synced, or fetched from an untrusted source. There is no user interaction beyond normal identity loading and no authentication to the library itself required by design. |
| Impact | The published CVSS 4.0 score of 9.3 with vector AV:N/AC:L/PR:N/UI:N/VC:H/VI:H/VA:H reflects a worst-case, network-unauthenticated framing, but the concrete prerequisite - the ability to modify or supply a malicious identity.json - is not clearly a pure remote-no-privilege condition, so the network/no-privilege metrics likely overstate reachability for typical local-file identity stores; verify the deployment's identity-distribution model with the vendor. I also disagree with the availability impact (VA:H): this is a confidentiality/integrity trust-bypass, not a denial-of-service, so availability impact is realistically none. There is no EPSS score, no CISA KEV listing, and no evidence of a public proof-of-concept in the provided data, indicating this is currently a high-severity design flaw rather than a demonstrated mass-exploitation event. The real-world danger is high where the identity store is shared, synced, or fetched over an untrusted channel, because exploitation is silent and defeats the very fingerprint check operators rely on to detect tampering. |
| Exploit ScenarioDerived | An attacker gains write access to (or controls the distribution of) a victim's identity.json and replaces a legitimate contact's public key with their own, leaving the stored fingerprint unchanged. The victim's openssl_encrypt then encrypts sensitive data to the attacker's key and validates attacker-forged signatures as genuine, all without any warning. No public proof-of-concept is currently identified, but the technique is straightforward given control of the identity store. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Silent cryptographic key substitution affects openssl_encrypt (the jahlives Python encryption library) before 1.4.9, which loads identities from identity.json without re-deriving and validating their fingerprints. An attacker who can tamper with an identity store can swap in their own public keys while preserving the claimed fingerprint, so the library encrypts data to attacker-controlled keys and treats attacker signatures as valid without any visible warning. No public exploit has been identified at time of analysis, and the flaw is not listed in CISA KEV.
RemediationAI
Vendor-released patch: 1.4.9 - upgrade openssl_encrypt to 1.4.9 or later, which restores re-derivation and validation of fingerprints when identities are loaded from identity.json (see GHSA-q8p3-7h6h-ghfr). Until the upgrade is applied, treat every identity.json as untrusted input: restrict write access to the identity store to a single trusted owner and use filesystem permissions plus integrity monitoring (for example a signed hash of the store checked before use) so unexpected modifications are detected, accepting that this adds an operational verification step. If identity stores are distributed or synchronized between hosts, move that distribution onto an authenticated, integrity-protected channel and re-verify each key's fingerprint out-of-band before trusting it, since the library itself will not catch a substituted key on affected versions. Reference advisories: https://github.com/jahlives/openssl_encrypt/security/advisories/GHSA-q8p3-7h6h-ghfr and https://www.vulncheck.com/advisories/openssl-encrypt-before-1.4.9-key-substitution-via-identity-load.
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 library that wraps OpenSSL primitives and manages cryptographic identities (keypairs and their fingerprints) persisted in an identity.json store. The root cause is CWE-345 (Insufficient Verification of Data Authenticity): fingerprints are meant to bind a public key to a trusted identity, but the vulnerable versions trust the fingerprint value stored alongside the key instead of recomputing it from the key material on load. Because the fingerprint is never re-derived and compared to the actual key, the integrity check that should detect a swapped key is effectively absent, breaking the trust anchor for both encryption target selection and signature verification. The single affected package is identified by CPE cpe:2.3:a:jahlives:openssl_encrypt:*:*:*:*:*:*:*:* for all versions prior to 1.4.9.
Know when Openssl Encrypt 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 supplies a tampered identity store whose fingerprint is never re-derived, so the check is trivially bypassed (AC:L); high confidentiality and integrity impact from silent key substitution, but no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
openssl_encrypt before 1.4.9 fails to re-derive and validate fingerprints when loading identities from identity.json, allowing attackers to substitute public keys in identity stores. Attackers can replace legitimate public keys with their own while maintaining the claimed fingerprint, enabling silent key substitution where encryption uses attacker keys and signature verification appears valid.
Executive ViewAI
A critical vulnerability in the jahlives Python encryption library allows attackers with access to identity stores to silently substitute cryptographic keys while preserving fingerprints, enabling unauthorized decryption of sensitive data and forging of digital signatures without detection. All organizations using this library for encryption or authentication face complete compromise of data confidentiality and authenticity.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict file system permissions on identity.json and key stores to authorized application processes only; implement file integrity monitoring and checksums to detect key substitution attempts; monitor system and filesystem access logs for unauthorized modifications to identity stores; segment affected systems on isolated networks; review backup access controls to prevent identity store tampering via restore operations.
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.
More in Openssl Encrypt
View allArbitrary native code execution in the jahlives openssl_encrypt Python package (all versions before 1.4.0) arises from i
Fingerprint-verification spoofing in jahlives openssl_encrypt before 1.4.9 lets attackers embed ANSI escape sequences in
Sandbox escape in the openssl_encrypt Python library (jahlives) before 1.4.0 allows attacker-supplied plugins to run wit
Arbitrary code execution in jahlives openssl_encrypt before 1.4.0 stems from an inconsistent sandbox: the runtime Plugin
Authentication bypass in the jahlives openssl_encrypt library (all versions before 1.4.0) lets remote unauthenticated at
Authentication brute-force protection can be bypassed in jahlives openssl_encrypt before 1.4.0 because the TOTP rate lim
Sandbox escape in the openssl_encrypt Python library (jahlives) before 1.4.0 lets attacker-supplied plugin code break ou
Cryptographic shared-secret disclosure in the openssl_encrypt Python library (maintainer 'jahlives') before 1.4.0 lets a
Sandbox escape leading to remote code execution affects openssl_encrypt (the jahlives Python package) in all versions be
Arbitrary code execution in openssl_encrypt (the jahlives Python encryption utility) before 1.4.9 allows an attacker-sup
Arbitrary code execution in jahlives openssl_encrypt before 1.4.9 stems from a flawed plugin trust model that uses a den
Sensitive-token exposure in openssl_encrypt (the jahlives Python package, pip 'openssl-encrypt') before 1.4.0 stems from
EUVD-2026-67058
GHSA-m2gh-w3fj-x92v
NVD
CVE.org
EPSS
Exploit-DB