PHP - CVE-2026-91765

Date de publication :

Il s'agit d'une vulnérabilité dans l'extension SOAP de PHP.

PHP est un langage de script généraliste, exécuté côté serveur et largement utilisé pour le développement d'applications web. Son extension SOAP est un composant qui sert à créer des serveurs et des clients de services web SOAP.

La fonction cleanup_xml_node() du parseur XML SOAP parcourt le document de manière récursive, sans limite de profondeur. Cette fonction est appelée après l'analyse par libxml2, sur le chemin emprunté par SoapServer::handle() via php://input. Une récursion identique existe dans le décodeur de valeurs SOAP master_to_zval_int(), qui suit les références href et peut être orienté vers un cycle. Elle existe aussi dans la fonction de recherche de nœuds WSDL get_node_with_attribute_recursive_ex(). Une requête HTTP POST avec des dizaines de milliers d'éléments XML imbriqués suffit à épuiser la pile. Le processus plante alors avec un SIGSEGV. Aucune authentification ni configuration particulière n'est requise. Sous PHP-FPM, le worker qui traite la requête meurt. Un flux de requêtes épuise le pool de workers et met l'endpoint hors service. Le plantage ne donne pas le contrôle de l'exécution.

Elle permet à un attaquant non authentifié, à distance, de provoquer un déni de service sur tout endpoint SoapServer.

Informations

La faille est activement exploitée : Non

Un correctif existe : Oui

Une mesure de contournement existe : Non

Risques

Déni de service (à distance)

Exploitation

La vulnérabilité exploitée est du type
CWE-674 : Uncontrolled Recursion

Détails sur l'exploitation
•   Vecteur d'attaque : Réseau
•   Complexité de l'attaque : Faible
•   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 versions 8.2.x antérieures à 8.2.34
•   PHP versions 8.3.x antérieures à 8.3.35
•   PHP versions 8.4.x antérieures à 8.4.26
•   PHP versions 8.5.x antérieures à 8.5.11

Solutions ou recommandations

•   PHP 8.2 versions 8.2.34 et supérieures
•   PHP 8.3 versions 8.3.35 et supérieures
•   PHP 8.4 versions 8.4.26 et supérieures
•   PHP 8.5 versions 8.5.11 et supérieures