Das Python-Team hat außerplanmäßige Sicherheitsupdates veröffentlicht, um eine kritische Schwachstelle im Umgang mit TLS-Zertifikaten zu beheben. Auslöser ist ein schwerwiegender Vorfall bei der Zertifizierungsstelle eMudhra, bei dem die privaten Schlüssel von acht Zwischenzertifizierungsstellen kompromittiert wurden.
Die Lücke mit der Kennung CVE-2026-115557 wird mit einem CVSS-Score von 9,4 als kritisch eingestuft und betrifft das SSL-Modul von CPython.
Was ist passiert?
Am 17. Oktober 2026 meldete ein Sicherheitsforscher, dass die privaten Schlüssel von acht eMudhra-Zwischenzertifizierungsstellen äußerst schwach waren. Es handelte sich um P-384-Schlüssel, deren private Werte jedoch winzige Ganzzahlen waren – der kleinste Wert war die Zahl 4.
Ein sicherer Schlüssel sollte eine zufällige 384-Bit-Zahl sein. Diese Schlüssel konnten daher durch einfaches Ausprobieren von weniger als hundert Möglichkeiten rekonstruiert werden.
Laut eMudhra stammen die Schlüssel aus einer im April 2025 durchgeführten Key Generation Ceremony (KGC), einer formalisierten Zeremonie zur Schlüsselerzeugung. Dabei erzeugte ein fehlerhafter Wrap-and-Unwrap-Schritt einen zweiten, schwachen Schlüsselsatz, der irrtümlich verwendet wurde. Dieser Fehler blieb über einen Zeitraum von etwa 18 Monaten und zwei Prüfzyklen hinweg unbemerkt. Die acht Zwischenzertifikate – sechs für TLS und zwei für Codesignierung – wurden schließlich am 18. Oktober 2026 widerrufen.
Warum ist das gefährlich?
Wer einen dieser privaten Schlüssel wiederherstellen kann, kann gültige Zertifikate für beliebige Domains ausstellen. In Kombination mit einer Man-in-the-Middle-Position im Netzwerk können damit TLS-Verbindungen zu eigentlich vertrauenswürdigen Zielen abgehört oder manipuliert werden.
Besonders problematisch: Viele Programme – darunter ältere Versionen von pip, uv und certifi – bringen eigene Zertifikatslisten mit, die das vertrauenswürdige eMudhra-Stammzertifikat noch enthielten. Selbst wenn das Betriebssystem das eMudhra-Wurzelzertifikat bereits aus seinem Vertrauensspeicher entfernt hatte, konnten diese Anwendungen die kompromittierten Ketten weiterhin akzeptieren.
Die Reaktion des Python-Teams
Mit den Versionen 3.15.2, 3.14.10, 3.13.18, 3.12.16 und 3.11.18 hat Python Sicherheitsupdates veröffentlicht. Kern der Behebung ist eine Denylist im ssl-Modul, die SHA-256-Digests der DER-kodierten SubjectPublicKeyInfo-Strukturen der kompromittierten Schlüssel enthält.
Zertifikatsketten, die einen dieser Schlüssel verwenden, werden nun unabhängig von der SSLContext-Richtlinie oder der Konfiguration der Widerrufsprüfung abgelehnt. Dies gilt auch für cross-signierte Zertifikate, die andernfalls einen gültigen Vertrauenspfad bewahren könnten.
Bemerkenswert: Der Schutz greift auch für pip-Operationen, ohne dass pip selbst zuerst aktualisiert werden muss. Das Python-Team empfiehlt dennoch dringend, zusätzlich auf pip 26.2.2, certifi 2026.10.19 und uv 0.13.4 oder höher zu aktualisieren. In bestehenden virtuellen Umgebungen sollten in jedem Fall pip und uv auf den aktuellen Stand gebracht werden.
Weitere behobene Schwachstellen
Neben dem eMudhra-Patch enthalten alle fünf Python-Versionen zwei weitere Sicherheitskorrekturen. Die erste betrifft das tarfile-Modul (CVE-2026-114583, CVSS 6,9): Präparierte Link-Einträge in tar-Archiven konnten den tar_filter umgehen, sodass beim Entpacken mit filter="tar" Dateien außerhalb des Zielverzeichnisses abgelegt wurden. Nach dem Update lehnt tar_filter() Link-Einträge ab, die das Zielverzeichnis selbst ersetzen.
Die zweite Korrektur betrifft http.cookiejar.DefaultCookiePolicy. Bislang wurden Cookies mit negativer Versionsnummer keiner Domain-Prüfung unterzogen. Dadurch konnte ein Server Cookies für andere Domains setzen oder überschreiben. Künftig werden solche Cookies als ungültig eingestuft und ignoriert.
Ältere Versionszweige erhalten darüber hinaus Fixes für Expat, die Windows-MIME-Typ-Konfiguration sowie die Quotierung von E-Mail-Headern.
Handlungsempfehlung
Nutzer einer der betroffenen Python-Versionen sollten umgehend aktualisieren. Binäre Installer stehen für die Versionen 3.15.2 und 3.14.10 zur Verfügung, die übrigen drei Versionen sind ausschließlich als Quellcode erhältlich. Darüber hinaus sollten containerisierte Anwendungen mit deaktiviertem Layer-Caching neu gebaut werden, um die aktuellen Systemzertifikate zu laden.
Auch operative Zertifikatsspeicher und gebündelte CA-Sammlungen sind zu aktualisieren. Der CPython-Fix ergänzt diese Maßnahmen, ersetzt sie jedoch nicht. Insbesondere Kontexte mit CERT_NONE bleiben ungeschützt und sollten ohnehin vermieden werden.
Bislang gibt es keine Hinweise auf eine aktive Ausnutzung dieser Schwachstelle. Aufgrund der trivialen Erratbarkeit der Schlüssel und der weit verbreiteten Verwendung von Python in TLS-Client-Rollen ist eine zeitnahe Aktualisierung dennoch dringend anzuraten.




