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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Deterministic key derivation weakens confidentiality against multi-target attacks (C:H), but requires collected ciphertexts and cryptanalysis (AC:H); no direct integrity or availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
3DescriptionCVE.org
openssl_encrypt versions before 1.4.0 use HKDF with no salt and static info parameter in key normalization functions, reducing entropy extraction and determinism. Attackers can exploit predictable key derivation with identical inputs to weaken cryptographic security against multi-target attacks.
AnalysisAI
Weak cryptographic key derivation in the openssl_encrypt Python library (all versions before 1.4.0) stems from its key-normalization routines invoking HKDF with no salt and a static info parameter, making derived keys deterministic for identical inputs. This reduces effective entropy and weakens resistance to multi-target (batch) attacks, letting an adversary who collects ciphertexts or derived-key material amortize cryptanalytic effort across many victims. No public exploit identified at time of analysis; the flaw was reported by VulnCheck and a vendor patch is available in 1.4.0.
Technical ContextAI
openssl_encrypt is a Python encryption utility/library (PyPI project 'jahlives:openssl_encrypt') that wraps symmetric encryption workflows. HKDF (HMAC-based Key Derivation Function, RFC 5869) is designed as extract-then-expand: the extract step is meant to be seeded with a random, per-operation salt to bind derived keys to unique contexts, and the info parameter provides domain separation. By calling HKDF with an empty/absent salt and a fixed static info string, the library collapses these protections so that the same input key material always maps to the same output key. This is the classic CWE-326 (Inadequate Encryption Strength) failure mode - the primitive is sound but is configured to remove randomization, undermining the entropy-extraction guarantees HKDF normally provides.
RemediationAI
Upgrade to openssl_encrypt 1.4.0 or later, which is the vendor-released patched version fixing the HKDF key-derivation weakness; consult the GitHub Security Advisory GHSA-j9mh-57cc-665x (https://github.com/jahlives/openssl_encrypt/security/advisories/GHSA-j9mh-57cc-665x) and the VulnCheck advisory for confirmation. Because the defect is in how keys are derived, patching alone does not retroactively secure data already encrypted with weak keys - plan to re-encrypt or rotate any keys/ciphertexts produced by versions before 1.4.0, accepting the operational cost of a re-encryption pass. If an immediate upgrade is not possible, a compensating control is to supply your own randomly generated per-operation salt to HKDF (rather than relying on the library's default empty salt) and unique info values where the API permits, and to avoid reusing identical input key material across targets; the trade-off is that this requires code changes at every call site and careful key-management discipline.
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
Same weakness CWE-326 – Inadequate Encryption Strength
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-60108
GHSA-fxcp-mjj5-v58w