jobsphp

ActualitéIngénierie Web

PHP 8.4.25 et 8.5.10 : le renforcement de la pile contre les attaques DoS

Selon Linux Compatible, le projet PHP a publié le 11 août 2026 les release candidates PHP 8.4.25 RC1 (tagguée par Calvin Buckley) et PHP 8.5.10 RC1 (Daniel Scherzer), totalisant environ 5 000 lignes de modifications sur près de 200 fichiers.

PHP 8.4.25 et 8.5.10 : le renforcement de la pile contre les attaques DoS

Le patch set cible en priorité les débordements de pile (stack overflow) provoqués par des fonctions récursives non bornées — un vecteur de DoS trivial via JSON ou XML profondément imbriqué qui saturent les workers PHP-FPM. Pour les architectes et exploitants, c'est une vague de hardening coordonné qui convertit une classe entière de crashes silencieux en erreurs récupérables et prévisibles.

Fonctions récursives bornées, DOM refermé

Les RC ajoutent un compteur de profondeur explicite aux fonctions les plus exposées en production:

  • array_walk_recursive et array_replace_recursive: arrêt propre avant overflow de la pile C.
  • compact et count(..., COUNT_RECURSIVE): même garde-fou contre les appels imbriqués.
  • DOMNode::normalize et autres comparaisons DOM: fin des boucles silencieuses sur documents malformés.

Concrètement, un array_walk_recursive sur un payload JSON à 50 niveaux de nesting ne tue plus le worker FPM: il lève une erreur interceptable. Le gain direct concerne les APIs qui absorbent de l'upload utilisateur; les générateurs PDF et feuilles XSLT sont aussi couverts via les correctifs UAF détaillés plus bas.

Mémoire, UAF et tracing JIT

Trois classes de bugs use-after-free sont colmatées en parallèle:

  • implode: UAF quand le callback de conversion détruit l'argument en cours d'itération.
  • Filtres de streams utilisateurs et extension XSL — typiquement sollicités par les pipelines PDF et XSLT alimentés par entrée externe.
  • Sessions mod_mm qui corrompaient le heap manager sur callbacks réentrants.

Côté tracing JIT, le bogue de préservation de registres dans le deoptimizer est corrigé: les défauts de correction JIT n'émettent plus de bytecode invalide et ne figent plus les hot loops. Les suites de régression opcache passent, ce qui sécurise les rolling restarts sur les charges à fort trafic.

Écosystème: Pest 5.1.0 aligné sur PHPUnit 13.3

Dans le même mouvement, GitHub signale la publication de Pest v5.1.0, compatible PHPUnit 13.3, avec des corrections sur le plugin de mutation et les composants Livewire SFC. Pour les équipes qui montent en version le runner de tests en même temps que le runtime, c'est le créneau idéal pour aligner les deux chaînes.

Verdict: RC1 stables et cohérentes, à déployer en staging cette semaine pour valider la suite de tests sur PHP 8.4.25 et 8.5.10. Pas de bascule prod avant la GA.