PHP 8.5.12 : ce que corrigent (et ne corrigent pas) les derniers correctifs

Dans notre précédent article, nous détaillions deux vulnérabilités critiques de PHP, **CVE-2026-109618** et **CVE-2026-109619** (surnommées « PHP2Shell »), permettant à un attaquant distant non authentifié d'exécuter du code sur un serveur vulnérable. Depuis, la situation a évolué : les correctifs officiels sont sortis, et de nouvelles démonstrations circulent. Voici un point de clarification.

PHP 8.5.12 : ce que corrigent (et ne corrigent pas) les derniers correctifs
← Tous les articles

Mise à jour de notre article précédent sur CVE-2026-109618 et CVE-2026-109619. Situation au 23 octobre 2026.

Dans notre précédent article, nous détaillions deux vulnérabilités critiques de PHP, CVE-2026-109618 et CVE-2026-109619 (surnommées « PHP2Shell »), permettant à un attaquant distant non authentifié d'exécuter du code sur un serveur vulnérable.Depuis, la situation a évolué : les correctifs officiels sont sortis, et de nouvelles démonstrations circulent. Voici un point de clarification.

Ce qui est corrigé

Le projet PHP a publié le 21 octobre les versions qui corrigent les deux CVE :

Branche Version corrigée
PHP 8.5 8.5.12
PHP 8.4 8.4.27
PHP 8.3 8.3.36
PHP 8.2 8.2.35

Si vous avez appliqué ces mises à jour (ou le paquet équivalent de votre distribution), les deux failles initiales sont traitées. Cela reste la priorité numéro un.

Ce qui a changé depuis le 22 octobre

Depuis le 22 octobre, des chercheurs partagent des démonstrations d'un autre vecteur d'attaque, distinct des deux CVE ci-dessus. Il s'agit d'un bug logique de type « mismatch » lié à session.serialize_handler (parfois désigné sous le nom de session-gaps).

Ce vecteur peut encore fonctionner sur PHP 8.5.12, mais uniquement si deux conditions sont réunies :

  1. Un mismatch de handler de sérialisation des sessions : différentes parties de l'application (ou différents scripts, répertoires, pools) utilisent des valeurs différentes de session.serialize_handler pour lire et écrire les sessions.
  2. Un gadget de destructeur dans l'application : une classe dont le destructeur (__destruct) peut être détourné lors de la désérialisation d'un objet contrôlé par l'attaquant.

Ce que cela signifie réellement

  • Ce n'est pas un contournement généralisé des correctifs officiels.
  • Un serveur à jour dont la configuration des sessions est cohérente n'est pas exposé par cette voie.
  • À la date du 23 octobre, aucun nouvel advisory de sécurité n'a été publié par le projet PHP concernant ce vecteur.

Il n'y a donc pas lieu de paniquer, mais c'est une bonne occasion de revoir la configuration de vos sessions.

Ce qu'il faut faire

1. Mettre à jour PHP (prioritaire)

Si ce n'est pas déjà fait, appliquez les correctifs comme décrit dans notre article précédent :

sudo apt update
sudo apt upgrade

Rappel : sur Debian, le numéro de version affiché par php -v n'est pas toujours suffisant pour savoir si le correctif est présent, car la distribution peut rétroporter les correctifs. Consultez les avis de sécurité Debian correspondant à votre version (par exemple 8.4.27-1~deb13u1 pour Debian 13 ou 8.2.35-1~deb12u1 pour Debian 12), puis redémarrez les services PHP concernés (php-fpm, Apache avec mod_php, etc.).

2. Unifier session.serialize_handler sur toute l'application

Le mismatch est la condition nécessaire au nouveau vecteur : supprimez-la. Vérifiez la valeur utilisée :

php -i | grep session.serialize_handler

Puis assurez-vous qu'elle est identique partout :

  • dans le php.ini principal ;
  • dans les configurations de pools PHP-FPM ;
  • dans les fichiers .user.ini et les configurations par répertoire ou par hôte virtuel ;
  • dans les appels à ini_set('session.serialize_handler', ...) présents dans le code.

Si plusieurs applications partagent le même stockage de sessions, elles doivent toutes utiliser le même handler.

3. Désactiver session.upload_progress.enabled si vous ne l'utilisez pas

Cette fonctionnalité élargit la surface d'attaque liée aux sessions. Si votre application n'affiche pas de barre de progression pour les téléversements :

session.upload_progress.enabled = Off

Appliquez cette directive dans php.ini ou la configuration du pool PHP-FPM (pas via ini_set() ni .user.ini), puis redémarrez les workers.

4. Activer session.use_strict_mode

session.use_strict_mode = 1

Ce mode empêche l'acceptation d'identifiants de session non initialisés par le serveur. Vérifiez aussi que cette valeur n'est pas écrasée par des configurations par répertoire.

5. Auditer les gadgets de destructeur

La seconde condition dépend de votre code. Si vous maintenez une application qui désérialise des données de session ou d'autres sources, passez en revue les classes disposant de __destruct, __wakeup ou de méthodes magiques réalisant des opérations sensibles (écriture de fichiers, appels système, requêtes réseau). Mettez également à jour vos dépendances (frameworks, bibliothèques) : de nombreux gadgets proviennent de composants tiers.

En résumé

Action Priorité
Mettre à jour vers 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 (ou paquet patché) Haute
Unifier session.serialize_handler Haute
Désactiver session.upload_progress.enabled si inutilisé Moyenne
Activer session.use_strict_mode et vérifier les configs par répertoire Moyenne
Auditer les gadgets de destructeur Moyenne

Conclusion

Les correctifs officiels de PHP 8.5.12 (et des versions équivalentes) traitent bien CVE-2026-109618 et CVE-2026-109619. Le vecteur apparu depuis le 22 octobre repose sur des conditions spécifiques (mismatch de handler de sessions et gadget de destructeur) et ne constitue pas un contournement généralisé. Appliquez la mise à jour, harmonisez votre configuration de sessions, et suivez les sources officielles (annonces du projet PHP et avis de sécurité de votre distribution) : nous mettrons cet article à jour si un nouvel advisory est publié.

#PHP #Sécurité #CyberSécurité

Audit gratuit

Discutons de votre projet d'automatisation

Réservez 30 minutes avec nos ingénieurs. Nous identifions vos quick wins et chiffrons votre ROI potentiel — sans jargon, orienté résultats.