PHP - CVE-2026-109618

Date de publication :

Il s’agit d’une vulnérabilité dans la gestion des erreurs de mémoire insuffisante (OOM) du cœur de PHP.

PHP est un langage de script généraliste exécuté côté serveur. Il est largement utilisé pour développer des sites et des applications web.

Lors d’un manque de mémoire, PHP interrompt la requête avec longjmp(). Les données internes de la requête sont alors partiellement initialisées. L’arrêt de la requête traite ces données invalides comme valides. Cela provoque une corruption de la mémoire. Une requête multipart sans taille exploitable peut contourner post_max_size pour provoquer le manque de mémoire. L’attaque a lieu avant l’exécution du code applicatif. Elle est démontrée sur Apache mod_php avec la configuration par défaut. PHP-FPM, php-cgi, FrankenPHP et LiteSpeed sont aussi concernés.

La CVE-2026-109619 est une vulnérabilité indépendante dans la gestion de l’état global de PHP. Un état interne lié à une requête survit à la libération de sa mémoire (use-after-free). Une requête suivante traitée par le même worker l’utilise avant son initialisation.

Elle permet à un attaquant non authentifié, à distance, d’exécuter du code arbitraire avec les droits du processus web. La CVE-2026-109619 expose aussi la mémoire du processus.

Informations

La faille est activement exploitée : Non

Un correctif existe : Oui

Une mesure de contournement existe : Oui

Risques

Exécution de code arbitraire (à distance)

Exploitation

La vulnérabilité exploitée est du type
CWE-416 : Use After Free

Détails sur l'exploitation
•   Vecteur d'attaque : Réseau
•   Complexité de l'attaque : Élevée
•   Privilèges nécessaires pour réaliser l'attaque : Aucun
•   Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
•   L'exploitation de la faille permet d'obtenir des droits privilégiés : Non

Preuve de concept
Une preuve de concept est disponible en sources ouvertes.

Systèmes ou composants affectés

  • PHP 8.5 versions antérieures à 8.5.12

  • PHP 8.4 versions antérieures à 8.4.27
  • PHP 8.3 versions antérieures à 8.3.36
  • PHP 8.2 versions antérieures à 8.2.35
  • PHP versions 8.1 et antérieures

Contournement provisoire

•   Aucun contournement complet n’existe. Seule la mise à jour est sûre.
•   CVE-2026-109618 : définir memory_limit=-1 de façon non modifiable (php_admin_value), limiter post_max_size (8M, ou 32M avec envoi de fichiers) et limiter la taille des requêtes sur le serveur web ou le proxy. Ne pas utiliser RLIMIT_AS ni RLIMIT_DATA.
•   CVE-2026-109619 : définir session.upload_progress.enabled=0 (php.ini, pool FPM ou serveur, pas ini_set ni .user.ini) et redémarrer tous les workers.
•   PHP 8.5 : définir fatal_error_backtraces=0 et redémarrer tous les workers.
•   Ces mesures sont partielles et ne rendent pas l’installation sûre.

Solutions ou recommandations

•   PHP 8.5 versions 8.5.12 et supérieures
•   PHP 8.4 versions 8.4.27 et supérieures
•   PHP 8.3 versions 8.3.36 et supérieures
•   PHP 8.2 versions 8.2.35 et supérieures