Accueil - tuto - Faille PHP2Shell : PHP publie un correctif d’urgence Zast La faille PHP2Shell oblige tous les propriétaires de sites PHP à mettre à jour leur serveur sans attendre. Derrière ce nom se cachent deux vulnérabilités critiques, CVE-2026-109618 et CVE-2026-109619, notées 9.2 sur 10. Elles permettent d’exécuter du code à distance sur un serveur, sans compte et sans mot de passe. Les détails ont fuité le 20 octobre, avant la publication du correctif. PHP a sorti ses versions corrigées le 21 octobre en milieu d’après-midi et les premières attaques avaient déjà été repérées le matin même. On vous propose ici l’essentiel : qui est concerné, quelles versions installer et les commandes exactes pour patcher un serveur Debian, avec les pièges que l’installation réserve. Faille PHP2Shell : tous les sites PHP sont concernés Le problème se trouve dans le cœur de PHP, pas dans un CMS ou un plugin. Les deux bugs touchent la gestion de la mémoire pendant le traitement des requêtes, notamment quand un visiteur envoie un formulaire avec fichier. Un attaquant peut en profiter pour prendre la main sur le serveur avant même que le code du site ne s’exécute. Conséquence directe : WordPress, Drupal, Joomla, Magento, Laravel et tous les sites écrits en PHP sont exposés s’ils tournent sur une version non corrigée. Un plugin de sécurité, une page de connexion ou un mode maintenance ne protègent pas, puisque l’attaque passe avant. PHP-FPM, le module Apache, php-cgi, FrankenPHP et LiteSpeed sont tous concernés. Selon les chercheurs qui ont signalé le problème, les versions remontent jusqu’à PHP 5.4. Concrètement, un pirate qui exploite la faille PHP2Shell peut lire vos fichiers et les identifiants de votre base de données, voler les comptes de vos utilisateurs, créer un administrateur caché, injecter des redirections ou des pages de spam dans votre site et installer une porte dérobée pour revenir plus tard. Votre serveur peut aussi servir à attaquer d’autres sites ou à envoyer du spam, avec à la clé un blacklistage par Google et les hébergeurs de mails. Les versions de PHP corrigées contre PHP2Shell Le correctif PHP2Shell est disponible dans quatre versions, détaillées dans l’annonce officielle publiée sur php.net : PHP 8.2.35 PHP 8.3.36 PHP 8.4.27 PHP 8.5.12 Les branches 8.1 et plus anciennes ne reçoivent pas de nouvelle version officielle. L’équipe de PHP a publié des correctifs à compiler soi-même pour 7.4, 8.0 et 8.1, mais la seule vraie solution reste de passer à une version supportée. Attention aussi à PHP 8.2 : il ne recevra plus aucun correctif de sécurité après le 31 décembre 2026. Si vous êtes dessus, prévoyez dès maintenant le passage à PHP 8.4. Vérifier la version de PHP de votre site Sur un hébergement mutualisé, c’est l’hébergeur qui gère PHP. Pour la sécurité WordPress, le premier réflexe est de contrôler la version utilisée par votre site. Dans WordPress, allez dans Outils, puis Santé du site, onglet Infos, rubrique Serveur : la version de PHP y est indiquée. Si elle est inférieure aux versions ci-dessus, changez de version dans le panneau de votre hébergeur ou contactez son support. Sur un serveur dédié ou un VPS, connectez-vous en SSH et tapez : php -v Cette commande donne la version utilisée en ligne de commande. Vos sites passent souvent par PHP-FPM, qu’il faut vérifier à part (remplacez 8.2 par votre version) : php-fpm8.2 -v Mettre à jour PHP sur Debian 13 Debian 13 a déjà publié son correctif contre PHP2Shell dans les dépôts de sécurité, avec PHP 8.4.27. Une mise à jour classique suffit : apt update apt upgrade systemctl restart php8.4-fpm Mettre à jour PHP sur Debian 12 avec le dépôt sury.org Sur Debian 12, au moment où nous écrivons ces lignes, le paquet officiel PHP 8.2.35 n’est pas encore publié. Un apt update ne propose donc aucune mise à jour de PHP. La solution la plus rapide passe par le dépôt sury.org. Il est tenu par Ondřej Surý, le mainteneur des paquets PHP chez Debian, et propose déjà la version corrigée. En root : apt install -y lsb-release ca-certificates curl curl -sSLo /tmp/sury.deb https://packages.sury.org/debsuryorg-archive-keyring.deb dpkg -i /tmp/sury.deb echo "deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ bookworm main" | tee /etc/apt/sources.list.d/php.list apt update apt install --only-upgrade 'php8.2*' systemctl restart php8.2-fpm Gardez bien les guillemets autour de php8.2*. La commande ne met à jour que les paquets PHP 8.2 déjà installés, pas tout le système. Vous restez en PHP 8.2 : vos sites ne changent pas de version, ils reçoivent juste le correctif. Ajouter ce dépôt a deux conséquences à connaître. Vos futures mises à jour de PHP viendront de sury et non plus de Debian, en général plus rapidement. Il peut aussi mettre à jour quelques bibliothèques liées à PHP. Sur un serveur WordPress classique, ça ne pose pas de problème, mais testez vos sites juste après l’opération. Les pièges à éviter pendant l’installation Apt va vous demander quoi faire de vos fichiers php.ini et php-fpm.conf, parce qu’ils ont été modifiés. Choisissez toujours de garder votre version actuelle (touche N ou option keep the local version). Sinon, vous perdez vos réglages. Le dépôt sury installe parfois quelques paquets PHP 8.4 en plus, et la commande php peut basculer dessus. Vérifiez avec php -v. Si elle affiche 8.4, revenez en 8.2 pour que WP-CLI et vos tâches cron continuent de fonctionner : update-alternatives --set php /usr/bin/php8.2 Un PHP 8.4-FPM peut aussi démarrer à côté de votre 8.2. Il ne sert à rien si vos sites sont configurés sur la 8.2. Vous pouvez le couper : systemctl disable --now php8.4-fpm Enfin, n’oubliez pas le redémarrage de PHP-FPM. Tant qu’il n’a pas redémarré, l’ancienne version reste chargée en mémoire et votre site reste vulnérable, même si les nouveaux paquets sont installés. Un dernier php-fpm8.2 -v doit afficher 8.2.35. Ubuntu et Red Hat Sur Ubuntu, les paquets corrigés arrivent par les mises à jour habituelles et par le dépôt ppa:ondrej/php. Ubuntu garde souvent l’ancien numéro de version en ajoutant le correctif dedans : fiez-vous à la version du paquet plutôt qu’à celle affichée par php -v. Côté Red Hat, AlmaLinux et Rocky Linux, le dépôt de Remi n’a pas publié le correctif le jour de sa sortie. Surveillez les mises à jour de votre distribution avec dnf upgrade ‘php*’.Voir aussiZasttuto 23 août 2026Injection de prompt : comment j’ai piégé ChatGPT avec un devis à 14 800 € Pas de mise à jour possible tout de suite ? Si vous ne pouvez pas patcher immédiatement, un réglage réduit le risque. Les deux failles passent par la fonction qui suit la progression des envois de fichiers. On peut la désactiver avec un petit fichier de configuration (exemple pour PHP 8.2) : echo "session.upload_progress.enabled = 0" | tee /etc/php/8.2/fpm/conf.d/99-disable-upload-progress.ini systemctl reload php8.2-fpm Ce réglage ne casse rien sur un site WordPress classique et peut rester en place après la mise à jour. Mais PHP est clair : il n’existe aucune protection complète contre la faille PHP2Shell en dehors du correctif. C’est une solution d’attente, pas une alternative. Sécurité WordPress : vérifier que votre site n’a pas été piraté Les attaques PHP2Shell ont commencé avant la sortie du correctif. Une fois le serveur à jour, quelques contrôles rapides permettent de s’assurer que personne n’est entré. Remplacez /var/www par le dossier de vos sites. Aucun fichier PHP ne doit se trouver dans les dossiers uploads de WordPress, à part quelques index.php vides posés par certains plugins : find /var/www -path "*uploads*" -name "*.php" -ls Repérez les fichiers PHP récents en dehors des plugins et des traductions, que WordPress met à jour tout seul : find /var/www -name "*.php" -newermt "2026-10-20" | grep -v -e "/plugins/" -e "/languages/" L’utilisateur du serveur web ne doit faire tourner que PHP-FPM et le serveur web, sans tâche planifiée : ps -u www-data -f crontab -u www-data -l Contrôlez aussi la liste des administrateurs de chaque site WordPress, dans le dossier du site : wp user list --role=administrator Un compte inconnu, un fichier au nom bizarre dans uploads ou un processus qui n’a rien à faire là doivent vous alerter. Dans ce cas, changez tous les mots de passe, restaurez une sauvegarde antérieure au 20 octobre et faites analyser le site par un outil de sécurité.