Verwandter Vorfall · CA-Schlüsselkompromittierung · 17.–21. Oktober 2026
Kompromittierte eMudhra-Zwischen-CA-Schlüssel: Was PHP-Server prüfen müssen
Browser waren binnen Stunden geschützt. Bei PHP ist das anders: Die curl- und OpenSSL-Erweiterungen vertrauen dem CA-Bündel des Servers und beziehen in der Regel keine Browser-Sperrlisten. Veraltete Bündel sind daher das Problem.
Zuletzt aktualisiert
Was passiert ist
- Am 17. Oktober 2026 meldete ein Forscher, dass acht eMudhra-Zwischenzertifikate (sechs TLS, zwei Codesignatur) P-384-Schlüssel hatten, die ganze Zahlen unter 256 waren: 4, 56, 66, 115, 155, 156, 230 und 237. Mozilla bestätigte, dass jeder Schlüssel bis auf das letzte Byte aus Nullen bestand (Bugzilla 2083449).
- Laut eMudhra stammen die Schlüssel aus einer Schlüsselzeremonie am 30. April 2025 auf HSMs nach FIPS 140-2 Level 3, bei der ein Wrap/Unwrap-Schritt einen zweiten, schwachen Schlüsselsatz erzeugte, der versehentlich veröffentlicht wurde.
- Die TLS-Zwischenzertifikate verketten zu emSign ECC Root CA - G3. Sectigos AAA Certificate Services hatte dieselben Schlüssel quersigniert; Sectigo widerrief diese am 19. Oktober.
| Datum | Ereignis |
|---|---|
| 17.10.2026, 18:05 | Meldung erreicht das Chrome Root Program |
| 17.10., 19:45 | Chrome sperrt die sechs TLS-Zwischenzertifikate per CRLSet |
| 17.10., 22:59 | Firefox sperrt alle acht per OneCRL |
| 18.10. | eMudhra widerruft die acht Zertifikate |
| 19.10. | Apple sperrt sie; Sectigo widerruft die Quersignaturen |
| 20.10. | Microsoft sperrt sie; NSS 3.131.1 entfernt emSign ECC Root CA - G3; curl cacert.pem 2026-10-20; composer/ca-bundle 1.4.16 und 1.6.0 |
| 27.10. (geplant) | Chrome Root Store entfernt emSign ECC Root CA - G3 auf allen Geräten |
Ist mein PHP-Server betroffen?
PHP bringt keine eigene CA-Liste mit. Die Erweiterungen openssl und curl lesen openssl.cafile / curl.cainfo, wenn gesetzt, sonst die Standardpfade von OpenSSL, normalerweise das ca-certificates-Bündel der Distribution. CRLSet oder OneCRL beziehen sie nicht. Enthält dieses Bündel noch emSign ECC Root CA - G3 (bei den Quersignaturen AAA Certificate Services), vertraut Ihr Server der kompromittierten Kette weiterhin.
# Which CA file does PHP use? Run as the same user/SAPI as the site if you can.
php -r 'print_r(openssl_get_cert_locations());'
php -i | grep -E 'openssl.cafile|openssl.capath|curl.cainfo'# Does PHP still trust the compromised eMudhra intermediates?
# Good result: bool(false) plus a "certificate verify failed" warning.
# Bad result: the page body is printed (the chain was trusted).
php -r 'var_dump(file_get_contents("https://dv-g3b-emudhra.we-have-a-problem.com/"));'
php -r 'var_dump(file_get_contents("https://dv-g3b-aaa-emudhra.we-have-a-problem.com/"));'
# Same check through the curl extension
php -r '$c = curl_init("https://dv-g3b-emudhra.we-have-a-problem.com/");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
var_dump(curl_exec($c), curl_error($c));'# Is the eMudhra root still in the bundle?
ls /etc/ssl/certs | grep -i emsign # Debian/Ubuntu symlinks
grep -n "emSign ECC Root CA - G3" /path/to/cacert.pem # curl/Mozilla-format bundle
# composer/ca-bundle version inside a project
composer show composer/ca-bundle | grep versionsPrüfen Sie jede relevante SAPI. PHP-FPM und Apache mod_php können eine andere php.ini laden als die CLI; vergleichen Sie php --ini mit einer phpinfo()-Seite der Website.
So beheben Sie es
# Debian / Ubuntu (and Debian-based php:* Docker images)
sudo apt-get update && sudo apt-get install --only-upgrade ca-certificates
dpkg -l ca-certificates
# RHEL / Fedora / AlmaLinux / Rocky
sudo dnf upgrade ca-certificates
# Alpine (php:*-alpine images)
apk upgrade --no-cache ca-certificates
# Composer projects that ship composer/ca-bundle
composer update composer/ca-bundle # 1.4.16+ or 1.6.0+
# Restart long-running PHP processes afterwards
sudo systemctl restart php8.3-fpm # or apache2 / httpd / your queue workers; php.ini — for stacks with their own stale bundle (XAMPP, WAMP, old panels)
; Download a current Mozilla-derived bundle from https://curl.se/ca/cacert.pem
; (the 2026-10-20 release or later), then point both settings at it:
curl.cainfo = "/path/to/cacert.pem"
openssl.cafile = "/path/to/cacert.pem"
; Restart Apache / PHP-FPM so the new values load.Ältere All-in-one-Stacks und lange nicht gepflegte Panels setzen curl.cainfo oft auf eine mitgelieferte Datei, die nie erneuert wird. Prüfen Sie die Versionshinweise des Herstellers oder verweisen Sie wie oben auf eine aktuelle cacert.pem.
Wer bereits einen Fix ausgeliefert hat
| Software | Behobene Version |
|---|---|
| Mozilla NSS | 3.131.1 (Bug 2084101) |
| curl CA bundle (cacert.pem) | 2026-10-20 |
| composer/ca-bundle | 1.4.16, 1.6.0 (2026-10-20) |
| Debian ca-certificates | 20250419~deb12u2, 20250419+deb13u1, 20260816+nmu1 |
| Ubuntu ca-certificates | 20260816ubuntu0.22.04.1, 0.24.04.1, 0.26.04.1, 0.26.10.1 |
| Fedora ca-certificates | 2026.2.92_v9.0.319 |
| Alpine ca-certificates | 20261020-r0 |
| Arch ca-certificates-mozilla | 3.131.1-1 |
| FreeBSD ca_root_nss | 1.131.1 |
Wir haben curls aktuelle cacert.pem (Last-Modified 20. Oktober 2026) abgerufen: Sie enthält weder emSign ECC Root CA - G3 noch AAA Certificate Services. composer/ca-bundle 1.4.16 und 1.6.0 ergänzen außerdem CaBundle::findDistrustedCertificate.
Nicht gelistete Releases, darunter ältere Distributionen wie Ubuntu 20.04 oder Debian 11, waren in den geprüften Quellen nicht als gepatcht aufgeführt. Prüfen Sie den Tracker Ihres Anbieters.
FAQ
Bundles und Hosting-Panels
XAMPP und Hosting-Panels liefern eigene PHP-Builds; ihr CA-Bundle folgt deshalb nicht unbedingt den ca-certificates-Updates des Betriebssystems. Siehe die Produktseiten zu XAMPP, cPanel, Plesk, DirectAdmin, CloudLinux, aaPanel und 宝塔面板 oder die Produktliste.
Ist das Zertifikat meiner Website betroffen?
Sehr unwahrscheinlich. eMudhra gibt an, dass die acht Zwischenzertifikate keine Endzertifikate ausgestellt haben, und Chrome fand vor der Sperre keine verketteten TLS-Zertifikate in Certificate-Transparency-Logs. Websites mit Zertifikaten unter emSign ECC Root CA - G3 brauchen aber neue Zertifikate, weil diese Wurzel entfernt wird.
Wurden zig Millionen Zertifikate unsicher?
Nein. Die kursierenden großen Zahlen beziehen sich auf eMudhras gesamte historische Ausstellung, nicht auf Zertifikate, die mit den kompromittierten Schlüsseln signiert wurden.
Warum betrifft das PHP-Server, wenn Browser sicher sind?
Browser erzwingen Certificate Transparency und erhalten CRLSet- oder OneCRL-Updates. curl und OpenSSL in PHP tun meist beides nicht. Geschützt sind sie erst, wenn das gelesene CA-Bündel der eMudhra-Kette nicht mehr vertraut, etwa bei Zahlungs-APIs, Webhooks, SMTP über TLS und Composer-Downloads.
Welches Bündel nutzt PHP?
curl.cainfo und openssl.cafile, wenn sie in der php.ini gesetzt sind, sonst die in OpenSSL einkompilierten Standardpfade, meist das ca-certificates-Bündel der Distribution. Composer nutzt composer/ca-bundle, das das Systembündel bevorzugt und sonst die eigene cacert.pem verwendet.
Quellen
Externe Links verlassen diese Website. Wir hosten keinen Exploit-Code.
- Protecting Firefox users following the compromise of eMudhra intermediate certificates (20 October 2026) — Mozilla Security Blog
- Protecting Chrome and Android users from compromised eMudhra intermediate CA certificates — Google (Chrome and Android Security)
- eMudhra statement on recent certificate security incident (updated 21 October 2026) — eMudhra
- eMudhra Intermediate CA Compromise: client check and patched-software list — we-have-a-problem.com (reporter’s test site)
- Bug 2083449 — eMudhra: Private key compromise of Intermediate Certificates — Mozilla Bugzilla
- Bug 2084101 — Remove eMudhra emSign Root CA - G3 from NSS — Mozilla Bugzilla
- Compromised eMudhra Intermediate Certificates (guidance for trust store operators) — Mozilla dev-security-policy
- Indian certification authority eMudhra’s private keys compromised – one of them was the number 4 (20 October 2026) — The Register
- eMudhra’s weak P-384 CA keys: testing curl, Node.js and uv (21 October 2026) — lilting channel
- CA certificates extracted from Mozilla (cacert.pem) — curl project
- composer/ca-bundle 1.6.0 and 1.4.16: distrust compromised eMudhra intermediates — Composer (GitHub)
- OpenSSL runtime configuration (openssl.cafile, openssl.capath) — PHP manual
- cURL runtime configuration (curl.cainfo) — PHP manual