Pas php.net · Pas la NVD · Pas la CISA

Suivi des vulnérabilités PHP

Note d’information non officielle sur les vulnérabilités de sécurité PHP

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

Alerte de sécurité

PHP2Shell : mettez PHP à jour. C’est le seul correctif complet.

CVE-2026-109618 et CVE-2026-109619 sont des failles critiques de PHP lui-même, permettant une exécution de code à distance sans authentification. Le projet PHP a publié des correctifs le 21 octobre 2026 pour les branches maintenues 8.2 à 8.5. Redémarrez PHP après la mise à jour. Un pare-feu ne la remplace pas.

Étapes de correction

Incident connexe · compromission de clés d’AC · 17–21 octobre 2026

Clés d’AC intermédiaires eMudhra compromises : ce que les serveurs PHP doivent vérifier

Les navigateurs ont été protégés en quelques heures. Pour PHP, c’est différent : les extensions curl et OpenSSL font confiance au paquet d’AC du serveur et ne reçoivent généralement pas les listes de révocation des navigateurs.

Dernière mise à jour

Ce qui s’est passé

Chronologie de la réponse (UTC)
DateÉvénement
17/10/2026, 18:05Le signalement parvient au Chrome Root Program
17/10, 19:45Chrome bloque les six intermédiaires TLS via CRLSet
17/10, 22:59Firefox bloque les huit via OneCRL
18/10eMudhra révoque les huit certificats
19/10Apple les bloque ; Sectigo révoque ses contre-signatures
20/10Microsoft les bloque ; NSS 3.131.1 retire emSign ECC Root CA - G3 ; cacert.pem de curl 2026-10-20 ; composer/ca-bundle 1.4.16 et 1.6.0
27/10 (prévu)Le Chrome Root Store retire emSign ECC Root CA - G3 sur tous les appareils

Mon serveur PHP est-il concerné ?

PHP n’embarque pas de liste d’AC. Les extensions openssl et curl lisent openssl.cafile / curl.cainfo s’ils sont définis, sinon les chemins par défaut d’OpenSSL, normalement le paquet ca-certificates de la distribution. Elles ne reçoivent ni CRLSet ni OneCRL. Si ce paquet contient encore emSign ECC Root CA - G3 (ou AAA Certificate Services pour les contre-signatures), votre serveur fait encore confiance à la chaîne compromise.

Étape 1 : trouver le paquet lu par PHP
# 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'
Étape 2 : tester avec les hôtes du rapporteur
# 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));'
Étape 3 : chercher la racine dans le paquet
# 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

Vérifiez chaque SAPI utile. PHP-FPM et Apache mod_php peuvent charger un autre php.ini que la CLI ; comparez php --ini avec une page phpinfo() servie par le site.

Comment corriger

Mettre à jour le paquet système et composer/ca-bundle
# 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
Piles avec leur propre paquet (XAMPP, WAMP, anciens panneaux)
; 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.

Les anciennes piles tout-en-un et les panneaux non maintenus fixent souvent curl.cainfo sur un fichier livré avec le produit et jamais renouvelé. Consultez les notes de version de l’éditeur ou pointez php.ini vers un cacert.pem à jour comme ci-dessus.

Qui a publié un correctif

Versions corrigées listées par le site de test du rapporteur (au 21–22 octobre 2026)
LogicielVersion corrigée
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

Nous avons récupéré le cacert.pem actuel de curl (Last-Modified 20 octobre 2026) : il ne contient plus ni emSign ECC Root CA - G3 ni AAA Certificate Services. composer/ca-bundle 1.4.16 et 1.6.0 ajoutent aussi CaBundle::findDistrustedCertificate.

Les versions absentes de la liste, y compris d’anciennes distributions comme Ubuntu 20.04 ou Debian 11, n’apparaissaient pas comme corrigées dans les sources consultées. Vérifiez le suivi de votre éditeur.

FAQ

Piles intégrées et panneaux d’hébergement

XAMPP et les panneaux d’hébergement embarquent leurs propres PHP ; leur bundle CA ne suit donc pas forcément les mises à jour ca-certificates du système. Voir les pages XAMPP, cPanel, Plesk, DirectAdmin, CloudLinux, aaPanel et 宝塔面板, ou la liste des produits.

Le certificat de mon site est-il touché ?

Très peu probable. eMudhra affirme que les huit intermédiaires n’ont émis aucun certificat final, et Chrome n’en a trouvé aucun dans les journaux Certificate Transparency avant le blocage. Les sites dont le certificat remonte à emSign ECC Root CA - G3 doivent toutefois en obtenir un nouveau, car cette racine est retirée.

Des dizaines de millions de certificats sont-ils compromis ?

Non. Les grands chiffres qui circulent correspondent à l’émission historique totale d’eMudhra, pas aux certificats signés par les clés compromises.

Pourquoi un serveur PHP est-il concerné si les navigateurs sont protégés ?

Les navigateurs imposent Certificate Transparency et reçoivent CRLSet ou OneCRL. curl et OpenSSL dans PHP ne font généralement ni l’un ni l’autre : ils ne sont protégés que lorsque le paquet d’AC lu ne fait plus confiance à la chaîne eMudhra (API de paiement, webhooks, SMTP sur TLS, téléchargements Composer).

Quel paquet PHP utilise-t-il ?

curl.cainfo et openssl.cafile s’ils sont définis dans php.ini, sinon les chemins par défaut compilés dans OpenSSL, en général le paquet ca-certificates de la distribution. Composer utilise composer/ca-bundle, qui préfère le paquet système et se rabat sur son propre cacert.pem.

Sources

Les liens externes quittent ce site. Nous n’hébergeons aucun code d’exploitation.

  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