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/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
Triggering the exposure requires local CLI invocation by an operator; leaked pepper is test-ephemeral and cannot decrypt production files, warranting C:L not C:H.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
3DescriptionCVE.org
openssl_encrypt (pip) versions <= 1.4.7 contain an information exposure vulnerability where the 'hsm fido2-test' and 'hsm onlykey-test' diagnostic commands unconditionally print the full derived hardware pepper as hex to stdout/stderr (crypt_cli.py, handle_hsm_command). The printed value can persist in terminal scrollback, session recordings, or CI logs. Impact is limited because the pepper is derived from a random per-invocation test salt and is salt-bound, so the leaked value cannot be used to decrypt real files. A related plugin issue logged raw prf_data outside the secret-redaction path. Fixed in 1.4.8 (and 1.5.0) by removing the hex dumps and routing plugin debug output through the redaction layer.
AnalysisAI
openssl_encrypt (pip, versions <= 1.4.7) unconditionally prints a derived hardware pepper as a hex string to stdout/stderr when the 'hsm fido2-test' or 'hsm onlykey-test' diagnostic commands are invoked, with output potentially persisting in CI build logs, terminal scrollback buffers, or session recordings. A secondary exposure exists where a related plugin component logged raw prf_data values outside the library's secret-redaction pathway. No public exploit has been identified and no CISA KEV listing exists; critically, the vendor description explicitly states the leaked pepper is derived from a random per-invocation test salt and is salt-bound, meaning it cannot be used to decrypt real files, substantially constraining actual impact despite the elevated CVSS 4.0 score of 8.7.
Technical ContextAI
The affected library (CPE: cpe:2.3:a:jahlives:openssl_encrypt:*:*:*:*:*:*:*:*) is a Python pip package by jahlives that provides file encryption with hardware security module integration, supporting FIDO2 and OnlyKey devices. The root cause is CWE-532 (Insertion of Sensitive Information into Log File or Output Stream): the handle_hsm_command function in crypt_cli.py unconditionally formats and emits a derived hardware pepper as a hex string to stdout/stderr during HSM self-test execution. The pepper is produced by a key derivation step operating on a randomly generated per-invocation test salt, making the exposed material cryptographically ephemeral and isolated from production encryption keys. A secondary issue involves a plugin component writing raw prf_data values through a code path that bypasses the library's established secret-redaction layer, compounding the output exposure surface. Both issues were resolved in version 1.4.8 by removing the hex dump statements and routing plugin debug output through the redaction pipeline.
RemediationAI
Upgrade openssl_encrypt to version 1.4.8 or 1.5.0 via pip: pip install "openssl_encrypt>=1.4.8". The vendor-released patch removes the unconditional hex dump of derived pepper values from HSM diagnostic output paths and routes plugin debug output through the library's existing secret-redaction layer, as described in the advisory at https://github.com/jahlives/openssl_encrypt/security/advisories/GHSA-p9g8-wvh4-2jmx. If immediate upgrade is not feasible, avoid executing the 'hsm fido2-test' and 'hsm onlykey-test' diagnostic subcommands in any environment where stdout/stderr is captured and retained - such as CI/CD pipelines with log archiving, recorded terminal sessions, or shared shell environments. If these diagnostics must run in such contexts, implement post-execution log scrubbing to remove hex output before log storage or distribution. Note that the leaked value cannot decrypt real files, so the compensating control primarily addresses compliance and information hygiene rather than immediate cryptographic exposure.
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 technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-60089
GHSA-q9f6-q6m5-f5h2