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
Exploiting the race needs in-process code and precise timing (AV:L, AC:H, PR:L); impact is limited to bypassing a security control and corrupting audit integrity (I:L), with no confidentiality or availability loss.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
3DescriptionCVE.org
openssl_encrypt versions before 1.4.0 contain a logging bug in restore_hidden_modules() that logs module counts after clearing, always showing zero restored modules and corrupting audit trails. Additionally, a race condition exists between module hiding and import hook installation where another thread could re-import blocked modules in multi-threaded environments.
AnalysisAI
Audit-trail corruption and a security-control race condition in the Python library openssl_encrypt (by jahlives) before version 1.4.0 undermine its module-hiding defenses. The restore_hidden_modules() function logs module counts after clearing them, so it always records zero restored modules and produces misleading audit logs (CWE-117), while a separate time-of-check/time-of-use race between module hiding and import-hook installation lets a concurrent thread re-import modules that were meant to be blocked. Reported by VulnCheck with a vendor patch available; no public exploit identified at time of analysis and it is not on CISA KEV.
Technical ContextAI
openssl_encrypt is a Python encryption utility package (CPE cpe:2.3:a:jahlives:openssl_encrypt) that implements a defensive feature to hide/block specific modules and install an import hook to prevent their reloading. The first issue is a CWE-117 (Improper Output Neutralization / incorrect logging) defect: restore_hidden_modules() emits the count of modules only after the internal collection has been cleared, so the log statement always reports zero, defeating the audit trail that would otherwise show what was restored. The second issue is a classic race condition (TOCTOU) in a multi-threaded context: there is a window between when modules are hidden and when the import hook is fully installed during which another thread can perform an import and reload a module that was supposed to remain blocked, bypassing the intended restriction.
RemediationAI
Upgrade openssl_encrypt to version 1.4.0 or later (Vendor-released patch: 1.4.0), which corrects both the restore_hidden_modules() log-count ordering and the module-hiding/import-hook race; follow the vendor advisory at https://github.com/jahlives/openssl_encrypt/security/advisories/GHSA-43r4-3hf9-m84q. If you cannot upgrade immediately, reduce exposure to the race condition by avoiding concurrent imports during the module-hiding phase - perform module hiding and import-hook installation before spawning worker threads or under a global lock so no other thread runs imports in the window, accepting the trade-off of serialized startup. For the audit-trail defect, do not rely on the restored-module count emitted by restore_hidden_modules() as an accurate control until patched, and corroborate module-restore events with independent logging; there is no functional workaround that restores correct counts short of the patch.
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-117 – Improper Output Neutralization for Logs
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-60104
GHSA-9j5f-pjwj-62r3