CVE-2026-74878Critical▾ Midnightopenssl-encrypt: TOTP rate limiter is in-memory only — not shared across workers, lost on restart
▾ Midnight zone — Critical, or high with PoC / in-the-wild
impact 52.3 · likelihood 0.1 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Aug 18.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
0.4%
0.4% → 0.4%
The TOTP brute-force rate limiter in openssl_encrypt_server/modules/pepper/totp.py at lines 47-98 uses an in-memory defaultdict(list) as a class variable.
class TOTPRateLimiter:
def __init__(self, ...):
self.attempts: Dict[str, List[datetime]] = defaultdict(list)
self.lockouts: Dict[str, datetime] = {}
class TOTPService:
_rate_limiter = TOTPRateLimiter() # Class variable, in-memory only
Fixed in commit 2749bc0 on branch releases/1.4.x — added abstract RateLimitBackend with InMemoryBackend and DatabaseBackend implementations; defaults to DatabaseBackend when DB available.
openssl-encrypt < 1.4.0Upgrade to a patched release:
openssl-encrypt 1.4.0Connected by shared product, vendor, weakness, or advisory.
CVE-2026-74874Mediumopenssl-encrypt has non-cryptographic PRNG used for steganography pixel selection
CVE-2026-74872Mediumopenssl-encrypt: Dynamic .so loading for Whirlpool uses broad glob pattern without integrity verification
CVE-2026-74877Mediumopenssl-encrypt has no owner verification on key revocation — any client can revoke any key
CVE-2026-74873Mediumopenssl-encrypt has visible password in process list via --password CLI argument
CVE-2026-74876Mediumopenssl-encrypt's unverified key bundle from_dict() + to_identity() path allows encryption to attacker keys
CVE-2026-74880Mediumopenssl-encrypt accepts refresh tokens as URL query parameters causing token leakage