CVE-2026-115557 in Python
Summary
by MITRE • 10/24/2026
Python has added a denylist for known compromised certificates to the "ssl" module to ensure user safety even without certificate revocation configured. Known compromised certificates will automatically be rejected regardless of the SSLContext policy configuration.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.
Analysis
by VulDB Data Team • 10/24/2026
The Python ssl module introduces a critical security enhancement by implementing an automatic denial list for known compromised digital certificates, addressing a significant gap in default secure communication practices. This feature ensures that users are protected against certificate-based attacks even when they have not explicitly configured Certificate Revocation List (CRL) or Online Certificate Status Protocol (OCSP) checks within their SSLContext policies. Historically, Python's ssl module relied on the underlying operating system and OpenSSL libraries for revocation checking, which often defaulted to non-blocking behavior where missing or unavailable revocation data would result in accepting a certificate rather than rejecting it. This default behavior created a vulnerability surface where attackers could exploit compromised certificates issued by trusted Certificate Authorities if those authorities failed to promptly revoke them or if the client environment lacked proper connectivity to revocation endpoints.
The technical flaw addressed here is not a bug within Python itself but rather a systemic risk in how TLS handshakes are validated under default configurations. By hardcoding a denylist of known compromised certificates directly into the ssl module, Python ensures that these specific identities are rejected at the application layer before any network-based revocation checks occur. This mechanism operates independently of the SSLContext verify mode settings, meaning that even if a developer sets verification to CERT_NONE or fails to configure OCSP stapling, the connection will still be terminated if it attempts to use one of the listed compromised certificates. This approach aligns with industry best practices recommended by CWE-295 Improper Certificate Validation and mitigates risks associated with CWE-613 Insufficient Session Expiration which can occur when revoked credentials remain active in trust stores due to propagation delays or infrastructure failures.
The operational impact of this change is substantial for the security posture of applications relying on Python's standard library for secure communications, such as web clients, API consumers, and data transfer services. It prevents man-in-the-middle attacks that leverage previously compromised private keys associated with trusted root certificates. For instance, if a Certificate Authority like DigiCert or Let's Encrypt has identified a specific certificate as compromised due to key leakage or unauthorized issuance, this denylist ensures immediate termination of the TLS handshake without requiring additional configuration from the developer. This reduces the attack surface described in MITRE ATT&CK technique T1557 Adversary-in-the-Middle by blocking one common vector for intercepting encrypted traffic through fraudulent certificates that would otherwise pass standard validation checks if revocation services were unavailable or misconfigured.
Mitigation strategies beyond this built-in protection involve maintaining up-to-date Python installations to ensure the denylist remains current with newly identified compromised certificates. Developers should also continue to implement robust certificate pinning and configure explicit OCSP stapling where possible, as these provide defense in depth against future compromises not yet added to the static list. Organizations must monitor security advisories from both Python core maintainers and major Certificate Authorities to stay informed about emerging threats that may require additional policy adjustments or updates to their internal trust stores. This layered approach ensures resilience against certificate-based attacks while adhering to compliance frameworks such as NIST SP 800-52 which emphasize the importance of validating certificate status during TLS negotiations.