Niet php.net · Niet NVD · Niet CISA

PHP-kwetsbaarhedentracker

Onofficiële briefing over beveiligingslekken in PHP

English简体中文日本語DeutschFrançaisNederlandsEspañol

Beveiligingswaarschuwing

PHP2Shell: werk PHP bij. Dat is de enige volledige oplossing.

CVE-2026-109618 en CVE-2026-109619 zijn kritieke kwetsbaarheden in PHP zelf die uitvoering van code op afstand zonder authenticatie mogelijk maken. Het PHP-project bracht op 21 oktober 2026 fixes uit voor de ondersteunde takken 8.2 tot en met 8.5. Herstart PHP na de update. Een firewall is geen vervanging.

Stappen om te patchen

Aanverwant incident · CA-sleutelcompromittering · 17–21 oktober 2026

Gecompromitteerde eMudhra-tussen-CA-sleutels: wat PHP-servers moeten controleren

Browsers waren binnen enkele uren beschermd. Bij PHP ligt dat anders: de curl- en OpenSSL-extensies vertrouwen de CA-bundel van de server en ontvangen meestal geen intrekkingslijsten van browsers.

Laatst bijgewerkt

Wat er gebeurde

Tijdlijn van de reactie (UTC)
DatumGebeurtenis
17-10-2026, 18:05Melding bereikt het Chrome Root Program
17-10, 19:45Chrome blokkeert de zes TLS-tussencertificaten via CRLSet
17-10, 22:59Firefox blokkeert alle acht via OneCRL
18-10eMudhra trekt de acht certificaten in
19-10Apple blokkeert ze; Sectigo trekt de kruisondertekeningen in
20-10Microsoft blokkeert ze; NSS 3.131.1 verwijdert emSign ECC Root CA - G3; curl cacert.pem 2026-10-20; composer/ca-bundle 1.4.16 en 1.6.0
27-10 (gepland)Chrome Root Store verwijdert emSign ECC Root CA - G3 op alle apparaten

Is mijn PHP-server geraakt?

PHP heeft geen eigen CA-lijst. De extensies openssl en curl lezen openssl.cafile / curl.cainfo als die zijn ingesteld, anders de standaardpaden van OpenSSL, normaal de ca-certificates-bundel van de distributie. CRLSet of OneCRL ontvangen ze niet. Staat emSign ECC Root CA - G3 (of AAA Certificate Services voor de kruisondertekeningen) nog in die bundel, dan vertrouwt uw server de gecompromitteerde keten nog.

Stap 1: de bundel vinden die PHP leest
# 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'
Stap 2: testen tegen de hosts van de melder
# 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));'
Stap 3: de root in de bundel zoeken
# 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 versions

Controleer elke relevante SAPI. PHP-FPM en Apache mod_php kunnen een andere php.ini laden dan de CLI; vergelijk php --ini met een phpinfo()-pagina van de site.

Zo lost u het op

Systeembundel en Composers ca-bundle bijwerken
# 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
Stacks met een eigen bundel (XAMPP, WAMP, oudere panelen)
; 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.

Oudere alles-in-één-stacks en lang niet onderhouden panelen zetten curl.cainfo vaak op een meegeleverd bestand dat nooit wordt vernieuwd. Bekijk de releasenotes van de leverancier of laat php.ini zoals hierboven naar een actuele cacert.pem verwijzen.

Wie al een fix heeft uitgebracht

Gepatchte versies volgens de testsite van de melder (stand 21–22 oktober 2026)
SoftwareOpgeloste versie
Mozilla NSS3.131.1 (Bug 2084101)
curl CA bundle (cacert.pem)2026-10-20
composer/ca-bundle1.4.16, 1.6.0 (2026-10-20)
Debian ca-certificates20250419~deb12u2, 20250419+deb13u1, 20260816+nmu1
Ubuntu ca-certificates20260816ubuntu0.22.04.1, 0.24.04.1, 0.26.04.1, 0.26.10.1
Fedora ca-certificates2026.2.92_v9.0.319
Alpine ca-certificates20261020-r0
Arch ca-certificates-mozilla3.131.1-1
FreeBSD ca_root_nss1.131.1

Wij hebben de actuele cacert.pem van curl opgehaald (Last-Modified 20 oktober 2026): die bevat geen emSign ECC Root CA - G3 en geen AAA Certificate Services meer. composer/ca-bundle 1.4.16 en 1.6.0 voegen ook CaBundle::findDistrustedCertificate toe.

Releases die niet in de lijst staan, waaronder oudere distributies zoals Ubuntu 20.04 of Debian 11, stonden in de geraadpleegde bronnen niet als gepatcht. Controleer de tracker van uw leverancier.

FAQ

Bundels en hostingpanelen

XAMPP en hostingpanelen leveren eigen PHP-builds, dus hun CA-bundel volgt niet per se de ca-certificates-updates van het besturingssysteem. Zie de productpagina’s van XAMPP, cPanel, Plesk, DirectAdmin, CloudLinux, aaPanel en 宝塔面板, of de productlijst.

Is het certificaat van mijn site geraakt?

Zeer onwaarschijnlijk. eMudhra zegt dat de acht tussencertificaten geen eindcertificaten hebben uitgegeven, en Chrome vond vóór de blokkade geen gekoppelde TLS-certificaten in Certificate Transparency-logs. Sites met certificaten onder emSign ECC Root CA - G3 hebben wel een nieuw certificaat nodig, omdat die root wordt verwijderd.

Zijn tientallen miljoenen certificaten onveilig geworden?

Nee. De grote getallen die rondgaan zijn de totale historische uitgifte van eMudhra, niet certificaten die met de gecompromitteerde sleutels zijn ondertekend.

Waarom maakt het voor een PHP-server uit als browsers veilig zijn?

Browsers dwingen Certificate Transparency af en ontvangen CRLSet of OneCRL. curl en OpenSSL in PHP doen meestal geen van beide en zijn pas beschermd als de gelezen CA-bundel de eMudhra-keten niet meer vertrouwt, bijvoorbeeld bij betaal-API’s, webhooks, SMTP via TLS en Composer-downloads.

Welke bundel gebruikt PHP?

curl.cainfo en openssl.cafile als die in php.ini staan, anders de standaardpaden van OpenSSL, meestal de ca-certificates-bundel van de distributie. Composer gebruikt composer/ca-bundle, dat de systeembundel verkiest en anders een eigen cacert.pem gebruikt.

Bronnen

Externe links verlaten deze site. Wij hosten geen exploitcode.

  1. Protecting Firefox users following the compromise of eMudhra intermediate certificates (20 October 2026) — Mozilla Security Blog
  2. Protecting Chrome and Android users from compromised eMudhra intermediate CA certificates — Google (Chrome and Android Security)
  3. eMudhra statement on recent certificate security incident (updated 21 October 2026) — eMudhra
  4. eMudhra Intermediate CA Compromise: client check and patched-software list — we-have-a-problem.com (reporter’s test site)
  5. Bug 2083449 — eMudhra: Private key compromise of Intermediate Certificates — Mozilla Bugzilla
  6. Bug 2084101 — Remove eMudhra emSign Root CA - G3 from NSS — Mozilla Bugzilla
  7. Compromised eMudhra Intermediate Certificates (guidance for trust store operators) — Mozilla dev-security-policy
  8. Indian certification authority eMudhra’s private keys compromised – one of them was the number 4 (20 October 2026) — The Register
  9. eMudhra’s weak P-384 CA keys: testing curl, Node.js and uv (21 October 2026) — lilting channel
  10. CA certificates extracted from Mozilla (cacert.pem) — curl project
  11. composer/ca-bundle 1.6.0 and 1.4.16: distrust compromised eMudhra intermediates — Composer (GitHub)
  12. OpenSSL runtime configuration (openssl.cafile, openssl.capath) — PHP manual
  13. cURL runtime configuration (curl.cainfo) — PHP manual