CVE-2026-69247: Bleichenbacher Oracle in pyca/cryptography PKCS#7 Decryption
Vulnerability ID: CVE-2026-69247
CVSS Score: 8.2
Published: 2026-08-03
A side-channel vulnerability in pyca/cryptography (versions 44.0.0 through 49.9.9) allows unauthenticated remote attackers to expose a Bleichenbacher oracle. This flaw exists within the PKCS#7 decryption module (specifically pkcs7_decrypt_der, pkcs7_decrypt_pem, and pkcs7_decrypt_smime) during Content Encryption Key (CEK) decryption when using RSA PKCS#1 v1.5 padding. Differences in error classification and symmetric execution timing allow an attacker to reconstruct plaintext keys.
TL;DR
A Bleichenbacher side-channel timing and error oracle in pyca/cryptography before version 50.0.0 allows unauthenticated remote attackers to recover Content Encryption Keys (CEK) and decrypt sensitive S/MIME messages by submitting crafted PKCS#7 ciphertexts and observing decryption responses.
⚠️ Exploit Status: POC
Technical Details
- CWE ID: CWE-208: Observable Timing Discrepancy
- Attack Vector: Network (AV:N)
- CVSS v4.0 Score: 8.2 (High)
- Exploit Status: Proof of concept code exists in library test suites; no public weaponized exploits.
- CISA KEV Status: Not listed
- Mitigation Standard: RFC 3218 (Key substitution on failure)
- Affected Functionality: pkcs7_decrypt_der, pkcs7_decrypt_pem, pkcs7_decrypt_smime
Affected Systems
- pyca/cryptography Python libraries (versions 44.0.0 through 49.9.9)
- S/MIME processing gateways relying on affected cryptography versions
- Email processing filters and document ingestion pipelines handling PKCS#7 EnvelopedData
-
cryptography: >= 44.0.0, < 50.0.0 (Fixed in:
50.0.0)
Code Analysis
Commit: 53fccd9
Fix PKCS7 decryption Bleichenbacher oracle by ensuring symmetric decryption occurs with a random key upon RSA decryption failure.
Mitigation Strategies
- Upgrade the pyca/cryptography package to version 50.0.0 or higher.
- Design S/MIME and mail-processing applications to handle decryption asynchronously in background queues with uniform execution times.
- Sanitize application error messages to ensure that decryption failures always return a generic error code without leaking padding or size metrics.
- Implement strict rate-limiting on endpoints that accept and decrypt encrypted PKCS#7 payloads.
Remediation Steps:
- Identify all Python execution environments and containerized applications utilizing the pyca/cryptography library.
- Execute
pip install --upgrade cryptography>=50.0.0in your deployment pipelines and update requirements.txt/poetry.lock files. - Re-build and redeploy application containers to integrate the updated binary wheel.
- Review application-level error handlers to verify that ValueError exceptions from pkcs7_decrypt functions are caught and mapped to unified, safe error responses.
References
- GitHub Security Advisory GHSA-g6cj-pr64-35w5
- Fix Commit 53fccd93
- GitHub Pull Request 15369
- CVE-2026-69247 Record on CVE.org
Read the full report for CVE-2026-69247 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)