Retour au blog
PHPRCEPHP-FPMmod_phpCVE-2026-109618

PHP2Shell : deux RCE sans authentification dans PHP (CVE-2026-109618 et 109619), et une troisième faille sans patch

Publié le 2026-10-22 · Mis à jour le 2026-10-247 min de lectureCleanIssue

> En bref : Le 21 octobre 2026, le projet PHP a publié des versions d'urgence pour deux failles critiques surnommées PHP2Shell. CVE-2026-109618 corrompt la mémoire lors d'un manque de mémoire (OOM), CVE-2026-109619 réutilise un état libéré entre deux requêtes. Les deux permettent une exécution de code à distance sans authentification, avec les droits du worker web (CVSS v4 : 9.2). Versions corrigées : 8.5.12, 8.4.27, 8.3.36 et 8.2.35. Le 23 octobre, une troisième faille, CVE-2026-115560, a été publiée sans correctif.

Qui est concerné

Toute installation PHP qui sert des requêtes web : PHP-FPM, Apache mod_php, php-cgi, FrankenPHP et LiteSpeed. Selon Rapid7, l'éditeur considère mod_php comme le plus exposé, car l'exploitation peut réussir avant même que le code de l'application ne s'exécute.

PHP 8.1 et les versions antérieures ne reçoivent plus de correctifs réguliers. Pour cet incident, PHP a fourni des rétroportages source limités pour 7.4, 8.0 et 8.1. Si vous êtes sur une de ces branches, passez par le correctif de votre distribution ou montez de version.

Comment fonctionnent les deux failles

  • CVE-2026-109618 : des requêtes multipart construites (formulaires, uploads) peuvent épuiser la mémoire même en respectant les limites configurées. PHP abandonne alors la requête avec des données partiellement initialisées, que le nettoyage réutilise. Sous mod_php, ce nettoyage tourne même si le démarrage de la requête échoue, ce qui permet l'attaque avant le code applicatif.
  • CVE-2026-109619 : un worker qui traite plusieurs requêtes peut garder un pointeur vers de la mémoire libérée à la fin d'une requête précédente. Une erreur fatale (manque de mémoire, timeout) interrompt le nettoyage, et la requête suivante lit cet état périmé. La progression d'upload de session, activée par défaut, sert de déclencheur.
  • Où en est l'exploitation

    Plusieurs preuves de concept publiques existent. Rapid7 les a analysées : chacune ne marche que sur une combinaison précise de système, de version de PHP et de serveur web, et aucune n'est fiable à grande échelle. Des tentatives d'exploitation sont signalées. Cette difficulté est une fenêtre pour patcher, pas une raison d'attendre.

    Ce qu'il faut faire maintenant

  • Mettez à jour vers 8.5.12, 8.4.27, 8.3.36 ou 8.2.35, ou vers le paquet de votre distribution qui contient les deux correctifs. Redémarrez tous les workers.
  • En attendant le patch, appliquez les mesures temporaires de PHP au niveau serveur (pas via ini_set()) :
  • session.upload_progress.enabled=0 dans php.ini ou dans le pool FPM ;
  • sur PHP 8.5, fatal_error_backtraces=0 ;
  • limitez la taille des requêtes en amont et bloquez le multipart sur les routes qui n'en ont pas besoin.
  • CVE-2026-115560 : pas de correctif publié au 23 octobre. Une mesure d'atténuation existe et, selon Rapid7, l'exploitation repose sur une configuration non standard. Surveillez l'annonce de PHP.
  • Ce que ça change pour un agent IA

    Beaucoup d'agents appellent des outils hébergés sur des backends PHP : un plugin WordPress, une API Laravel, un CRM maison. Si ce backend tombe, l'attaquant contrôle ce que l'outil répond à l'agent, et donc ce que l'agent lit et fait ensuite. Patcher le backend fait partie de la sécurité de l'agent.

    La leçon

    Ces failles existent dans PHP depuis 2004. Une technologie mature n'est pas une technologie auditée. Inventoriez où PHP tourne chez vous, y compris dans les outils que personne ne considère comme critiques.

    Vous éditez un logiciel ? CleanIssue réalise des audits de sécurité pour votre produit en conditions réelles, sans accès au code. Pour une première lecture de votre exposition, commencez par une revue externe de votre application.

    Besoin de savoir ce que votre agent IA peut faire ?

    Expliquez votre agent, ses tools et votre contexte client. Nous revenons vers vous avec le bon niveau de revue.

    Parler de votre audit