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

CVE-2026-109618 · GHSA-w8hw-w9fx-j79w

CVE-2026-109618 : exécution de code à distance dans PHP par corruption en cas de manque de mémoire

L’équipe sécurité de PHP décrit CVE-2026-109618 comme une vulnérabilité critique du cœur de PHP : la gestion du manque de mémoire peut interrompre PHP alors que des données internes de requête ne sont que partiellement initialisées, et le nettoyage qui suit peut traiter ces données invalides comme valides. L’équipe lui attribue un CVSS v4.0 de 9.2 et indique que seule une mise à jour est une remédiation complète.

Dernière mise à jour

Identifiants selon le projet PHP et des avis secondaires.
ChampDonnée des sources citées
CVECVE-2026-109618
Avis GitHubGHSA-w8hw-w9fx-j79w
GravitéCritique. Score de base CVSS v4.0 9.2, indiqué par Jakub Zelenka sur oss-security pour l’équipe sécurité de PHP.
Score NVDCVSS v3.1 9.8 Critique (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H), score Primary de la NVD, consulté le 22 octobre 2026 via l’API NVD.
VecteurAV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H selon l’avis de l’Université de Toronto. Le message oss-security consulté donne le score 9.2, pas ce vecteur.
Versions correctives8.2.35, 8.3.36, 8.4.27, 8.5.12 et versions ultérieures de ces branches.
CWELe Centre canadien pour la cybersécurité classe les deux CVE PHP2Shell comme use-after-free (CWE-416). Le projet PHP lui-même qualifie cette CVE de corruption en cas de manque de mémoire ; c’est le terme que nous retenons.

Ce qui se passe mal, au niveau des informations de l’éditeur

Sur oss-security, Jakub Zelenka a écrit que PHP interrompt le traitement des requêtes via longjmp() en cas d’erreur de manque de mémoire ; une allocation échouée peut interrompre l’initialisation alors qu’un état de requête incomplet est déjà accessible, et l’arrêt de la requête peut alors accéder à cet état invalide, permettant potentiellement une exécution de code à distance. La présentation de la PHP Foundation concorde : si une requête atteignait memory_limit au mauvais moment, des données partiellement initialisées pouvaient subsister et être ensuite considérées comme valides.

Nous ne publions rien au-delà de ce mécanisme. Nous ne décrivons pas comment provoquer l’erreur mémoire.

Ce qui a été démontré

Impact

Une exploitation réussie signifie une exécution de code à distance sans authentification avec les droits du compte système du worker PHP. Wiz et Cloudflare citent aussi des plantages et la divulgation de mémoire du processus. La portée dépend du build, des extensions et de l’architecture du serveur ; selon l’Université de Toronto, la fiabilité varie, et PHP a validé une RCE complète. Les sources examinées ne contiennent aucune affirmation fiable du type « fonctionne partout » – et aucune raison d’attendre pour corriger.

Correction

Mettez à jour vers 8.2.35, 8.3.36, 8.4.27 ou 8.5.12 ou plus récent et redémarrez les workers qui servent le trafic. Selon oss-security, la mise à jour est la seule remédiation complète. Les réglages provisoires de PHP, dont memory_limit=-1 et un post_max_size bas, sont incomplets : même sans limite mémoire contrôlable, une erreur d’allocation sous-jacente peut atteindre le chemin vulnérable. Selon Tanium, l’entrée NVD a été publiée le 21 octobre 2026 avec le statut « Undergoing Analysis ». Utilisez l’avis PHP comme source opérationnelle tant que la NVD n’a pas rattrapé son retard.

Exposition selon le type de serveur, d’après l’avis complet de PHP

L’avis GitHub explique pourquoi le risque varie selon le SAPI. Le point décisif : PHP exécute-t-il encore le nettoyage de fin de requête quand le démarrage de la requête a échoué ?

Résumé de GHSA-w8hw-w9fx-j79w. « Analyse du code » signifie que l’équipe PHP a lu le code ; ce n’est pas un exploit démontré.
SAPIPourquoiÉvaluation de l’équipe PHP
Apache mod_phpLe nettoyage s’exécute toujours, même après un démarrage raté. L’analyse automatique du corps de requête a lieu au démarrage, avant tout code applicatif.Exécution de code à distance démontrée, sans rôle de l’application.
PHP-FPMUn worker dont le démarrage échoue est écarté, ce qui ferme ce chemin précoce. Un manque de mémoire plus tard, pendant l’application, peut encore laisser un état invalide.Vulnérable selon l’analyse du code. Aucun exploit FPM complet montré.
FrankenPHPSe comporte comme mod_php : le nettoyage s’exécute sans condition.Probablement attaquable sans faille applicative (analyse du code).
LiteSpeed (LSAPI)Conçu sur le modèle de FPM.Exploitation via l’application probable, non validée.

Pourquoi les limites d’upload ne plafonnent pas la mémoire

Selon l’avis, une requête de formulaire multipart peut épuiser la mémoire de PHP tout en semblant rester sous les limites configurées. En résumé : un corps sans longueur exploitable peut passer le contrôle post_max_size ; le nombre d’en-têtes dans une partie n’est pas limité et ils occupent plus de place en mémoire que sur le réseau ; les champs de fichier vides ne comptent pas dans max_file_uploads, mais PHP crée quand même leurs tableaux d’upload. Le code applicatif peut aussi atteindre cet état si une saisie utilisateur pilote une grosse allocation. Nous restons au niveau publié par PHP et ne décrivons pas comment fabriquer une telle requête.

Ce que le correctif change dans PHP

En cas de manque de mémoire, PHP ne saute plus hors du chemin de code en cours. Une erreur « douce » est levée au prochain point sûr du moteur ; si la consommation atteint un second seuil plus élevé, le processus se termine immédiatement. memory_limit continue de fonctionner et le nettoyage ne voit plus d’état à moitié construit.

Durcissement toujours utile après le correctif

Selon PHP, ces mesures réduisent le risque d’arrêts brutaux et de déni de service même sur une version corrigée. Elles ne remplacent pas la mise à jour.

Sources

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

  1. News archive 2026: security advisory, 21 October 2026 — PHP project (php.net)
  2. Today’s PHP security release, and how we’re strengthening PHP security — The PHP Foundation
  3. CVE-2026-109618: PHP 8.2–8.5 RCE via OOM corruption — oss-security (Jakub Zelenka, PHP security team)
  4. GHSA-w8hw-w9fx-j79w — CVE-2026-109618 — PHP (GitHub Security Advisory)
  5. Security advisory: critical unauthenticated RCE in PHP (“php2shell”) — University of Toronto Information Security
  6. Notice: php2shell, critical PHP vulnerabilities (status as of 21 October 2026, 20:00 UTC) — Expel
  7. Critical vulnerabilities in PHP require immediate patching (21 October 2026) — CISA
  8. Responding to core PHP vulnerabilities CVE-2026-109618 and CVE-2026-109619 — Google Cloud
  9. CVE-2026-109618 — NVD
  10. PHP2Shell: AI uncovers critical RCE vulnerabilities affecting 70% of the Internet — Wiz Research
  11. PHP vulnerability CVE-2026-109618 (reproduces PHP’s advisory) — Inphinit (PHP framework documentation)