Le 21 octobre 2026, l'équipe de sécurité PHP a publié en urgence quatre correctifs (PHP 8.5.12, 8.4.27, 8.3.36 et 8.2.35) pour colmater deux failles critiques d'exécution de code à distance : CVE-2026-109618 (corruption mémoire lors d'un dépassement de mémoire) et CVE-2026-109619 (use-after-free dans la gestion des sessions). Classées CVSS v4.0 9.2, elles permettent à un attaquant distant d'exécuter du code sur le serveur sans authentification. Le code vulnérable remonte à PHP 5.4 : toutes les installations PHP servant des requêtes web sont concernées. Un exploit fonctionnel, baptisé php2shell, circule déjà et des tentatives d'exploitation de masse ont été observées dès le 17 octobre, avant même la publication des correctifs. Si vous administrez un VPS Linux ou un serveur dédié avec PHP, la mise à jour est à faire maintenant.
Source : annonce officielle PHP security team (20 octobre 2026, patches publiés le 21 octobre 2026 à 14h UTC).
PHP sur un VPS ou un serveur dédié : pourquoi tout le monde est concerné
PHP propulse la majorité des sites web en production. Sur un VPS typique, PHP traite les requêtes d'un site WordPress, d'une boutique PrestaShop, d'un CMS Joomla, d'un panel d'administration Pterodactyl, ou de tout script PHP personnalisé. Il tourne derrière un serveur web (NGINX via PHP-FPM, Apache avec mod_php, LiteSpeed, FrankenPHP) ou directement via php-cgi. Toute machine exposant une application PHP sur une adresse IP publique est potentiellement vulnérable aux deux CVE publiées.
Les deux failles se situent dans le coeur de PHP, pas dans un framework ou une extension tierce. Elles touchent le traitement des requêtes HTTP multipart et la gestion de l'état des sessions. Concrètement, un attaquant peut déclencher l'exploitation avant même que le code applicatif ne s'exécute. Le fichier php.ini, la configuration du serveur web et la version de PHP installée déterminent le niveau d'exposition.
Les deux CVE critiques en détail
L'équipe de sécurité PHP a attribué un score CVSS v4.0 identique de 9.2 (critique) aux deux vulnérabilités. Voici ce que chacune exploite.
CVE-2026-109618 : corruption mémoire lors d'un dépassement de mémoire (OOM)
Lorsque PHP traite une requête multipart (upload de fichier, formulaire) et que la mémoire allouée au processus atteint la limite définie par memory_limit dans php.ini, les données internes de la requête ne sont que partiellement initialisées. Le nettoyage qui suit l'erreur OOM traite ces données partielles comme valides, ce qui corrompt le tas (heap) et permet l'exécution de code arbitraire. L'attaque fonctionne sur tous les modes de déploiement : PHP-FPM, mod_php, php-cgi, FrankenPHP, LiteSpeed.
CVE-2026-109619 : use-after-free dans session.upload_progress
Cette faille exploite un état résiduel entre deux requêtes traitées par le même worker PHP. Lorsqu'une requête utilise le mécanisme session.upload_progress (activé par défaut dans php.ini), un pointeur vers de la mémoire libérée peut persister après la fin de la requête. La requête suivante, traitée par le même worker, utilise ce pointeur périmé (use-after-free), ce qui corrompt la mémoire et ouvre la porte à l'exécution de code. Sur PHP 8.5, la fonctionnalité fatal_error_backtraces aggrave le risque en exposant davantage d'état interne.
Versions affectées et versions corrigées
Le code vulnérable existe depuis PHP 5.4.0. Voici le récapitulatif des versions concernées et des correctifs disponibles :
| Branche PHP | Versions vulnérables | Version corrigée | Statut |
|---|---|---|---|
| PHP 8.5 | Toutes avant 8.5.12 | 8.5.12 | Supportée |
| PHP 8.4 | Toutes avant 8.4.27 | 8.4.27 | Supportée |
| PHP 8.3 | Toutes avant 8.3.36 | 8.3.36 | Supportée |
| PHP 8.2 | Toutes avant 8.2.35 | 8.2.35 | Supportée (sécurité uniquement) |
| PHP 8.1 et antérieur | Toutes | Aucun correctif officiel | Fin de vie |
| PHP 7.4 à 8.1 | Toutes | Backports source uniquement | Fin de vie |
| PHP 5.4 à 7.3 | Toutes | Aucun | Fin de vie |
Point important : PHP 8.1 a atteint sa fin de vie en décembre 2025. PHP 8.0 et antérieur ne reçoivent plus aucune mise à jour de sécurité depuis encore plus longtemps. Si votre VPS tourne sur l'une de ces versions, aucun correctif officiel ne sera publié. La seule solution est de migrer vers PHP 8.2 ou supérieur.
Vérifier votre version de PHP
Connectez-vous en SSH à votre VPS et vérifiez la version de PHP installée :
php -v
Le résultat affiche la version sous la forme PHP 8.3.35 (cli). Si le numéro de version est antérieur à 8.5.12, 8.4.27, 8.3.36 ou 8.2.35 (selon votre branche), votre serveur est vulnérable.
Si PHP tourne via PHP-FPM (cas le plus courant avec NGINX), vérifiez aussi la version du processus en cours :
php-fpm8.3 -v
Adaptez le numéro de version (php-fpm8.4, php-fpm8.2) à votre installation. Vous pouvez aussi vérifier la configuration de session.upload_progress :
php -i | grep session.upload_progress.enabled
Si la valeur est On (valeur par défaut), votre serveur est exposé à la CVE-2026-109619.
Mettre à jour PHP sur votre VPS
La procédure dépend de la distribution Linux et de la source d'installation de PHP. Sur la majorité des VPS sous Ubuntu ou Debian, PHP provient du dépôt d'Ondrej Sury (PPA ppa:ondrej/php) ou des dépôts officiels de la distribution.
Ubuntu et Debian (APT)
Mettez à jour la liste des paquets et installez la version corrigée pour votre branche :
sudo apt update && sudo apt upgrade -y php8.3-*
Remplacez php8.3 par votre branche (php8.4, php8.2, php8.5). Puis redémarrez PHP-FPM pour charger le nouveau binaire :
sudo systemctl restart php8.3-fpm
CentOS, Rocky Linux et Fedora (DNF)
Sur les distributions basées sur Red Hat avec le dépôt Remi :
sudo dnf upgrade -y php php-fpm php-cli
Puis redémarrez le service PHP-FPM :
sudo systemctl restart php-fpm
Vérification après mise à jour
Confirmez que la version installée correspond bien au correctif, puis vérifiez que le service fonctionne :
php -v
sudo systemctl status php8.3-fpm
Si vous utilisez Apache avec mod_php au lieu de PHP-FPM, redémarrez Apache :
sudo systemctl restart apache2
Pour automatiser les futures mises à jour de sécurité sur votre VPS Ubuntu, configurez unattended-upgrades avec le dépôt PHP inclus dans les sources autorisées.
Mitigations temporaires
Si la mise à jour immédiate n'est pas possible (tests de compatibilité en cours, dépendances applicatives), des réglages dans php.ini réduisent l'exposition en attendant.
Contre la CVE-2026-109618 (OOM corruption)
Désactivez la limite de mémoire par requête pour empêcher le déclenchement de l'erreur OOM exploitée par la faille :
; Dans php.ini
memory_limit = -1
Cette mitigation empêche le scénario d'OOM qui déclenche la corruption, mais elle supprime aussi la protection contre les scripts consommant trop de mémoire. Surveillez la RAM de votre VPS avec htop ou btop si vous appliquez ce réglage.
Contre la CVE-2026-109619 (use-after-free)
Désactivez session.upload_progress pour couper le vecteur d'attaque :
; Dans php.ini
session.upload_progress.enabled = 0
Sur PHP 8.5, désactivez également les backtraces sur erreur fatale :
; php.ini (PHP 8.5 uniquement)
zend.fatal_error_backtraces = 0
Après toute modification de php.ini, redémarrez PHP-FPM ou Apache pour appliquer les changements :
sudo systemctl restart php8.3-fpm
Ces mitigations sont des palliatifs. La mise à jour vers une version corrigée reste la seule solution définitive.
PHP 8.1 et antérieur : que faire sans correctif officiel
Si votre VPS fait tourner PHP 8.1, 8.0, 7.4 ou une version plus ancienne, l'équipe PHP ne publiera aucun correctif officiel. Ces branches ont atteint leur fin de vie. Des backports source existent pour PHP 7.4 à 8.1, mais ils nécessitent de compiler PHP soi-même, ce qui n'est pas viable pour la plupart des administrateurs.
La marche à suivre :
- Migrer vers PHP 8.2 ou supérieur. C'est la seule solution pérenne. Testez la compatibilité de votre application avec
php -lsur vos fichiers et consultez les guides de migration de la documentation PHP officielle. - Appliquer les mitigations temporaires décrites ci-dessus (
session.upload_progress.enabled = 0etmemory_limit = -1) pour réduire l'exposition en attendant la migration. - Isoler le serveur : limitez les adresses IP autorisées à accéder au service web via votre pare-feu. Utilisez Fail2ban pour détecter et bloquer les requêtes suspectes.
php2shell : l'exploit est déjà dans la nature
Un proof-of-concept fonctionnel baptisé php2shell cible les deux CVE. Selon Amazon Threat Intelligence, des tentatives d'exploitation ont été observées dès le 17 octobre 2026, quatre jours avant la publication officielle des correctifs. Cloudflare a confirmé des attaques émergentes dès le 21 octobre. L'exploitation vise toutes les méthodes de déploiement : PHP-FPM, Apache mod_php, php-cgi, FrankenPHP et LiteSpeed. mod_php présente le risque le plus élevé, car l'exploitation peut réussir avant que le code applicatif ne s'exécute.
En pratique, cela signifie que chaque heure de retard dans la mise à jour augmente le risque de compromission. Les scanners automatisés balaient les plages d'adresses IP à la recherche de serveurs PHP vulnérables. Même un VPS qui n'héberge qu'un petit site ou un panel d'administration est une cible.
Impact sur les serveurs de jeu et les panels d'administration
Si vous administrez un serveur de jeu FiveM, Minecraft ou Rust sur un VPS, vous utilisez probablement PHP pour le panel d'administration. Pterodactyl et son fork Pelican Panel tournent sur PHP 8.2+. txAdmin (FiveM) n'utilise pas PHP directement, mais si votre VPS héberge aussi un site web ou un autre service PHP (phpMyAdmin, un CMS, un script de monitoring), l'ensemble du serveur est exposé.
Les conséquences d'une compromission :
- Exécution de code à distance : l'attaquant obtient les privilèges du processus PHP (généralement
www-data). Il peut lire les fichiers de configuration (mots de passe MySQL, clés API), modifier le code applicatif, ou installer un webshell. - Élévation de privilèges : combinée à une faille locale, la compromission initiale peut mener à un accès root complet. Bases de données, fichiers de sauvegarde, clés SSH : tout le serveur est alors exposé.
- Rebond : un serveur compromis peut servir de relais pour attaquer d'autres machines sur le même réseau ou envoyer du spam.
Renforcez la sécurité globale de votre VPS : sécurisez l'accès SSH, sauvegardez vos données régulièrement, et configurez un pare-feu UFW avec Fail2ban.
Hébergement mutualisé, Plesk et infogérance
Sur un hébergement mutualisé ou un hébergement web géré, c'est l'hébergeur qui administre PHP. Vous n'avez pas d'accès SSH et ne pouvez pas changer la version. Contactez votre hébergeur pour confirmer que le correctif a été déployé.
Si votre serveur utilise Plesk, la mise à jour de PHP se fait via l'interface d'administration de Plesk (Tools & Settings > PHP). Vérifiez que la version proposée intègre le correctif. Plesk permet d'installer plusieurs versions de PHP en parallèle : vous pouvez basculer sur une version corrigée sans attendre la mise à jour de toutes les branches.
Sur un VPS ou un serveur dédié non infogéré, la mise à jour vous revient entièrement. C'est la contrepartie de l'accès root et de la liberté de configuration.
Bonnes pratiques de sécurité PHP sur VPS
Ces failles rappellent l'importance d'une hygiène de sécurité rigoureuse pour tout administrateur de serveur PHP :
- Mises à jour automatiques : configurez unattended-upgrades pour appliquer les correctifs de sécurité dès leur publication.
- Version PHP supportée : ne restez jamais sur une branche PHP en fin de vie. PHP 8.2 est la plus ancienne branche encore maintenue (sécurité uniquement). Planifiez vos migrations avant la date de fin de support.
- Configuration minimale : dans
php.ini, désactivez les fonctions inutiles (disable_functions), limitezexpose_phpàOff, et restreignezopen_basedirau répertoire de l'application. - Pare-feu : limitez les ports exposés avec UFW ou nftables. Un VPS n'a généralement besoin que des ports 22 (SSH), 80 (HTTP) et 443 (HTTPS).
- Surveillance : surveillez la RAM et le CPU de votre serveur. Des processus PHP anormaux, des pics de mémoire inexpliqués ou des redémarrages fréquents de PHP-FPM dans les logs peuvent indiquer une tentative d'exploitation.
- Sauvegardes : sauvegardez vos fichiers et bases de données avant toute mise à jour et à intervalles réguliers. En cas de compromission, une sauvegarde saine permet de restaurer le serveur.
Questions fréquentes
Retrouvez ci-dessous les réponses aux questions les plus courantes des administrateurs de serveurs concernant ces vulnérabilités PHP.
Conclusion
Les deux CVE critiques publiées le 21 octobre 2026 (CVE-2026-109618 et CVE-2026-109619) touchent toutes les installations PHP servant des requêtes web, depuis PHP 5.4 jusqu'aux versions actuelles. Les correctifs sont disponibles dans PHP 8.5.12, 8.4.27, 8.3.36 et 8.2.35. L'exploit php2shell circule déjà et l'exploitation de masse est en cours. Si vous administrez un VPS Linux ou un serveur dédié, vérifiez votre version avec php -v, mettez à jour immédiatement, et redémarrez PHP-FPM ou Apache. PHP 8.1 et antérieur ne recevront aucun correctif officiel : si vous êtes sur ces branches, migrez vers PHP 8.2+ sans attendre. Pour aller plus loin dans la sécurisation de votre serveur, consultez nos guides d'administration de VPS Linux.