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
Exploitation requires pre-existing code execution to set a process environment variable, so AV:L and PR:H; only integrity of encrypted data is lost, so C:N/I:H/A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
3DescriptionCVE.org
openssl_encrypt versions before 1.4.0 contain an authentication bypass vulnerability in CamelliaCipher that disables HMAC tag generation and verification when the PYTEST_CURRENT_TEST environment variable is set. Attackers with code execution can set this environment variable to produce unauthenticated ciphertext and bypass integrity protection on encrypted data.
AnalysisAI
Integrity-protection bypass in the jahlives openssl_encrypt Python library (all versions before 1.4.0) lets an attacker who can influence the process environment silently disable HMAC authentication in the CamelliaCipher code path. When the PYTEST_CURRENT_TEST environment variable is present, the library skips generating and verifying HMAC tags, so ciphertext is produced and accepted without integrity protection, enabling undetected tampering of encrypted data. Reported by VulnCheck with a vendor patch available; no public exploit identified at time of analysis and it is not listed in CISA KEV.
Technical ContextAI
openssl_encrypt is a small open-source Python encryption library (CPE cpe:2.3:a:jahlives:openssl_encrypt) that wraps symmetric ciphers with HMAC-based authenticated encryption. The flaw is classic CWE-345 (Insufficient Verification of Data Authenticity): a test-only guard keyed on the PYTEST_CURRENT_TEST environment variable - normally set automatically by the pytest framework during test runs - leaks into production behavior. In the CamelliaCipher implementation, presence of that variable short-circuits both HMAC tag generation on encryption and HMAC verification on decryption, degrading authenticated encryption to unauthenticated encryption. The confidentiality of the underlying Camellia encryption is unchanged; what is lost is the integrity/authenticity guarantee that would otherwise detect ciphertext modification.
RemediationAI
Primary fix: upgrade openssl_encrypt to version 1.4.0 or later, which is the vendor-released patched version per GHSA-rvc2-5jxq-gpcj. Until you can upgrade, the concrete compensating control is to ensure the PYTEST_CURRENT_TEST environment variable is never set in production runtime environments - audit process managers, container images, CI/CD promotion paths, and service unit files to confirm test variables are stripped before deployment (side effect: minimal, since this variable has no legitimate production purpose). As additional hardening, avoid running application processes in the same environment as test tooling and enforce integrity of encrypted data with an external MAC/signature layer you control, rather than trusting the library's internal HMAC, until 1.4.0 is deployed. Review advisory details at https://github.com/jahlives/openssl_encrypt/security/advisories/GHSA-rvc2-5jxq-gpcj and https://www.vulncheck.com/advisories/openssl-encrypt-before-hmac-authentication-bypass-via-environment-variable.
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 Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-60109
GHSA-8p4p-w6mq-4grq