>_toolkitbox

~/ / Articles sur l'IA / L'IA a aidé à trouver PHP2Shell : les vulnérabilités critiques de PHP d'octobre 2026

L'IA a aidé à trouver PHP2Shell : les vulnérabilités critiques de PHP d'octobre 2026

Selon la presse, des modèles d'IA ont aidé des chercheurs à trouver deux vulnérabilités critiques dans PHP lui-même, CVE-2026-109618 et CVE-2026-109619, qui peuvent permettre une exécution de code à distance (RCE) sans authentification. PHP a publié des versions corrigées le 21 octobre 2026. Cet article résume ce que disent les annonces officielles et la presse au sujet de ces failles et du rôle de l'IA, et vous permet de vérifier si le PHP que vous utilisez contient le correctif.

Vérifié par rapport aux annonces officielles le 2026-10-24. Cette page n'est pas un avis de sécurité officiel et les détails peuvent évoluer ; suivez donc les sources en bas de page.

Que faire en premier

  1. Mettez PHP à jour vers une version corrigée (8.5.12, 8.4.27, 8.3.36 ou 8.2.35), ou vers le paquet corrigé de votre distribution Linux. PHP indique qu'il n'existe aucune mesure d'atténuation complète et que la mise à jour est le seul choix sûr.
  2. Après la mise à jour, redémarrez PHP-FPM, Apache et tous les processus PHP de longue durée afin qu'ils chargent le code corrigé. Un service démarré avant la mise à jour exécute toujours l'ancien code.
  3. Si PHP provient d'un paquet de distribution, vérifiez la version complète du paquet, y compris la partie située après le premier tiret. Les distributions peuvent inclure le correctif sans modifier la première partie du numéro.
  4. Si vous ne pouvez pas mettre à jour tout de suite, consultez les mesures d'atténuation ci-dessous. PHP indique qu'elles réduisent l'exposition à certains chemins d'attaque précis, mais ne rendent pas une installation sûre.

Ce qui s'est passé

Le 21 octobre 2026, PHP a publié les versions 8.5.12, 8.4.27, 8.3.36 et 8.2.35. Elles corrigent deux vulnérabilités critiques, toutes deux notées CVSS v4.0 9.2.

CVE-2026-109618, appelée RCE via OOM corruption : la gestion d'un manque de mémoire peut interrompre PHP alors que les données internes d'une requête ne sont initialisées qu'en partie, et le nettoyage de la requête peut ensuite traiter ces données invalides comme valides.

CVE-2026-109619, appelée RCE via stale global state : un état interne propre à une requête peut subsister après la libération de la mémoire qui le soutient, et une requête ultérieure traitée par le même processus peut utiliser cet état périmé.

  • CVE-2026-109618 · CVSS 4.0 9.2
  • CVE-2026-109619 · CVSS 4.0 9.2

Le rôle de l'IA

Selon The Next Web, la société de sécurité Calif a trouvé le premier bogue en août avec l'aide d'un modèle d'OpenAI, lors d'un audit du code source de PHP financé par OpenAI. Wiz a déclaré avoir découvert les failles de façon indépendante, quelques semaines plus tard, à l'aide d'outils d'IA dont les modèles Gemini de Google.

Le site php2shell.com attribue la recherche à Wiz Research, OpenAI Codex Security et Calif. Calif a déclaré avoir utilisé des modèles disponibles publiquement, et que la connaissance de l'historique de PHP comptait plus que le modèle.

Le même article rapporte que Cloudflare a activé des règles WAF pour ses clients environ neuf heures avant la divulgation, puis qu'un exploit de preuve de concept a circulé en ligne. Le site php2shell.com indique qu'une règle WAF ou CDN ne doit pas être considérée comme un substitut à la mise à jour de PHP.

Chronologie

  1. PHP annonce une prochaine publication de sécurité critique, prévue le 21 octobre à 14:00 UTC.
  2. PHP 8.5.12, 8.4.27, 8.3.36 et 8.2.35 sont publiées avec un avis de sécurité, et Ubuntu publie USN-8948-1.
  3. PHP publie un avis d'information sur session.upload_progress.enabled, concernant un autre vecteur, peu probable, suivi sous le numéro CVE-2026-115560.

Qui est concerné

PHP indique que toutes les installations PHP qui traitent des requêtes web sont à risque, notamment PHP-FPM, Apache avec mod_php, php-cgi, FrankenPHP et LiteSpeed. Il estime le risque le plus élevé pour mod_php, où une requête non authentifiée peut déclencher l'attaque avant l'exécution de tout code applicatif.

Les avis GitHub indiquent que les versions antérieures à 8.2.35, 8.3.36, 8.4.27 et 8.5.12 sont concernées. Le site php2shell.com, présenté comme exploité par Wiz, indique que les versions concernées remontent jusqu'à PHP 5.4.

PHP 8.1 et les versions antérieures ne reçoivent plus de mises à jour du projet PHP. Certaines distributions et certains fournisseurs LTS proposent des correctifs rétroportés, et PHP a fourni des rétroportages minimaux du code source pour PHP 7.4, 8.0 et 8.1 destinés à ceux qui compilent à partir des sources.

Versions corrigées

Une version égale ou supérieure à la version corrigée de sa branche contient le correctif. Un paquet de distribution est corrigé selon la version de son paquet ; utilisez donc le second tableau pour Ubuntu et Debian.

Versions de PHP lui-même

BranchePremière version corrigée
PHP 8.58.5.12
PHP 8.48.4.27
PHP 8.38.3.36
PHP 8.28.2.35

Paquets Ubuntu et Debian

DistributionPaquetVersion corrigée du paquetAvis
Ubuntu 26.10php8.58.5.9-0ubuntu2.1USN-8948-1
Ubuntu 26.04 LTSphp8.58.5.4-0ubuntu1.5USN-8948-1
Ubuntu 24.04 LTSphp8.38.3.6-0ubuntu0.24.04.13USN-8948-1
Ubuntu 22.04 LTSphp8.18.1.2-1ubuntu2.28USN-8948-1
Debian 12 (bookworm)php8.28.2.35-1~deb12u1DLA-4848-1
Debian 13 (trixie)php8.48.4.27-1~deb13u1DSA-6574-1

Les tableaux n'indiquent que ce que les avis officiels listent. Pour les autres distributions, consultez l'avis de sécurité de votre fournisseur.

Vérifier votre PHP

Choisissez l'origine de votre PHP, collez le texte de la version, et l'outil le compare aux versions corrigées ci-dessus. Il ne juge que le texte que vous collez. Il ne peut pas voir quelle version est en cours d'exécution ; vérifiez donc aussi que le service a été redémarré après la mise à jour.

Commandes qui affichent la version

  • php -v
  • dpkg -l 'php*' | grep ^ii
  • apt-cache policy php8.3-fpm | grep Installed

Tout s'exécute dans votre navigateur. Le texte que vous collez n'est pas envoyé.

Si vous ne pouvez pas mettre à jour tout de suite

PHP énumère ces mesures. Il indique qu'elles réduisent l'exposition à certains chemins d'attaque précis, mais ne rendent pas une installation sûre, et que seule une mise à jour constitue une solution complète.

CVE-2026-109618

  • Définissez memory_limit=-1, de préférence d'une manière que les applications ne peuvent pas contourner, par exemple avec php_admin_value dans le pool FPM ou la configuration d'Apache. Un échec d'allocation sous-jacent peut tout de même atteindre le chemin vulnérable.
  • Définissez une valeur basse pour post_max_size : 8M pour les applications qui n'ont pas besoin d'envoi de fichiers, et 32M si des envois sont nécessaires. Gardez upload_max_filesize en dessous de post_max_size.
  • Appliquez des limites au niveau du serveur web ou du proxy pour la taille décodée de la requête, le nombre de champs de saisie, le nombre de parties multipart, le nombre d'en-têtes et la profondeur d'imbrication.
  • Utilisez une limite de conteneur ou de cgroup comme frontière de disponibilité. N'utilisez pas RLIMIT_AS ni RLIMIT_DATA, car ils peuvent provoquer l'échec d'allocation vulnérable.

CVE-2026-109619

  • Définissez session.upload_progress.enabled=0 dans php.ini, dans un pool FPM ou dans la configuration du serveur, puis redémarrez chaque processus. Ne vous fiez pas à ini_set() ni à un fichier .user.ini de FPM.
  • Sur PHP 8.5, définissez fatal_error_backtraces=0 et redémarrez chaque processus.
  • Supprimez les paramètres invalides ou obsolètes appliqués à chaque requête et qui émettent des diagnostics avant l'initialisation. Masquer les diagnostics n'aide pas.
  • Corrigez les erreurs fatales et les dépassements de délai d'exécution qu'un attaquant peut atteindre.

L'avis d'information du 23 octobre

PHP suggère de définir session.upload_progress.enabled=0 jusqu'à la prochaine version régulière de correction de bogues, afin de se protéger pleinement contre un autre vecteur d'exécution de code à distance, peu probable. Si vous l'avez déjà appliqué d'après l'avis du 21 octobre, maintenez-le.

PHP indique que le problème ne peut survenir que dans une combinaison inhabituelle : une application définit session.serialize_handler sur php_binary ou php_serialize dans sa configuration, le bascule sur php à l'exécution avec ini_set() avant session_start(), et le suivi de progression d'envoi de session est toujours activé. PHP publiera un avis complet pour CVE-2026-115560 avec la prochaine version.

Ce que cette page ne fait pas

  • Ce n'est pas un avis officiel et elle ne donne aucun détail d'exploitation. Les annonces et avis officiels ci-dessous font foi.
  • Elle ne peut pas dire si un système a été attaqué. Le site php2shell.com note que l'absence d'activité suspecte n'établit pas qu'un système n'est pas concerné.
  • L'exposition dépend de la version, de la configuration et de chaque vulnérabilité. Les mesures d'atténuation peuvent affecter le fonctionnement d'une application.

Sources