Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain local user access on target host
-
DeliveryLocate world-readable SharedPreferences file written by openssl-encrypt GUI
-
ExploitRead cleartext mTLS private key PEM
-
ExecutionExtract key and associated certificate
-
ImpactAuthenticate to mTLS-protected backend service as impersonated client
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V14 - Data Protection Encrypted storage of sensitive data
|
| Exploitation Conditions | The vulnerable condition requires: (1) the openssl-encrypt desktop GUI must have been run and the Settings screen used to configure a combined certificate and private key PEM, creating the world-readable SharedPreferences file; (2) the attacker must have local filesystem read access to the machine where the application is installed - remote exploitation is not possible. No elevated privileges are required because the file is world-readable (0644), meaning any unprivileged local user can read it. Exploitation is further constrained to systems running openssl-encrypt versions 1.4.8 or earlier. There is no network-facing attack surface; this is a purely local, passive information disclosure requiring filesystem access only. |
| Impact | The CVSS 4.0 base score of 8.6 with AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H reflects trivially low exploitation complexity for any local user: reading a 0644 file requires no special tools, no privileges, and no user interaction. However, VA:H in the supplied vector is potentially inflated - direct availability impact from a passive credential exposure vulnerability is not inherent; availability harm would only materialize if the stolen key were actively weaponized downstream. EPSS data is not provided in the intelligence set; no CISA KEV listing and no POC code are noted, indicating no confirmed active exploitation. The SSVC signals suggest a low-urgency priority for most organizations given the narrow deployment footprint of this niche pip package, the requirement for local filesystem access, and the fact that exploitation is opportunistic rather than remotely triggerable. That said, the impact of a successfully stolen mTLS private key is severe and persistent - the attacker gains indefinite impersonation capability against mTLS-protected services until the certificate is rotated. |
| Exploit ScenarioDerived | A local user on a shared system - such as a developer workstation, build server, or CI environment - runs a simple file read command against the known or discoverable SharedPreferences path left by the openssl-encrypt GUI. Because the file carries 0644 permissions, no privilege escalation is required. The attacker extracts the cleartext PEM private key and uses it alongside the stored certificate to authenticate as the legitimate mTLS client to any backend service that trusts that certificate, bypassing authentication silently. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Cleartext private key exposure in openssl-encrypt (pip package by jahlives) versions 1.4.8 and earlier allows any local user to read a stored mTLS client private key from a world-readable SharedPreferences file. The desktop GUI's Settings screen writes the combined certificate and private key PEM directly into a 0644-permissioned file, making it accessible to all local users on the system without elevated privileges. No public exploit or CISA KEV listing exists at time of analysis, but the trivial exploitation path (read a world-readable file) means any local user on an affected host can silently exfiltrate the private key and use it to impersonate the legitimate mTLS client.
RemediationAI
Upgrade to openssl-encrypt version 1.4.9 or later, which is the vendor-released patched version. The 1.4.9 release writes the PEM to a dedicated file with 0600 permissions, stores only the file path in SharedPreferences, and automatically migrates and scrubs any pre-existing cleartext private key values - meaning the upgrade actively remediates residual exposure from prior usage. The vendor advisory is available at https://github.com/jahlives/openssl_encrypt/security/advisories/GHSA-r8gw-6hfj-98jw and the VulnCheck advisory at https://www.vulncheck.com/advisories/openssl-encrypt-before-1.4.9-plaintext-private-key-storage. If immediate upgrade is not possible, as a compensating control restrict access to the affected SharedPreferences file by manually changing its permissions to 0600 ('chmod 0600 <path-to-SharedPreferences-file>') and ensure the mTLS private key is considered compromised: revoke and reissue the client certificate with a new key pair, as the exposure window for the old key is unknown.
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
CWE-312 (Cleartext Storage of Sensitive Information) describes the root cause: sensitive cryptographic material persisted in a storage location with insufficient access controls. Specifically, the desktop GUI writes the combined certificate and private key PEM - configured via the Settings screen - into a SharedPreferences file with OS permissions 0644, meaning all users on the system have read access. The affected package is 'openssl-encrypt' on PyPI, attributed to vendor 'jahlives' (CPE: cpe:2.3:a:jahlives:openssl_encrypt:*:*:*:*:*:*:*:*). The stored material is an mTLS (mutual TLS) client private key, which is a long-term credential used for client authentication in mutual TLS handshakes; its exposure allows indefinite impersonation of the legitimate client until the certificate is revoked and reissued. Version 1.4.9 corrects this by writing the PEM to a dedicated file with 0600 permissions, storing only the file path in SharedPreferences, and migrating/scrubbing any pre-existing cleartext values.
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:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Local vector, no privileges needed (world-readable file), high C and I for private key theft enabling impersonation; no direct availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
openssl_encrypt (pip package openssl-encrypt) versions 1.4.8 and earlier store an mTLS client private key in cleartext within a world-readable (0644) SharedPreferences file via the desktop GUI's Settings screen 'combined certificate and private key' PEM field. A local attacker with file system access can read the exposed private key. Version 1.4.9 writes the PEM to a dedicated 0600 file, keeps only its path in SharedPreferences, and migrates/scrubs existing cleartext values.
Articles & Coverage 1
Executive ViewAI
The openssl-encrypt pip package (versions ≤1.4.8) stores mTLS private keys in world-readable files, allowing any local system user to silently exfiltrate authentication credentials without elevated privileges. This compromise enables unauthorized users to impersonate legitimate mTLS clients and access protected APIs and services. Any organization using this package should treat affected systems as having compromised identity and authentication infrastructure.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Immediately restrict SharedPreferences file permissions to 0600 to block local user read access; (2) Restrict shell access to affected systems and audit local user accounts; (3) Rotate mTLS credentials post-remediation and monitor for misuse; (4) Enable filesystem audit logging for key storage directories; (5) Consider migrating to external key management solutions (HashiCorp Vault, AWS Secrets Manager) that enforce encrypted storage and access controls.
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-67039
GHSA-p8vp-h9v2-m833
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB