PHP 8.5.5 : UAF 21 ans dans unserialize() exploité en RCE local et distant

🔍 Contexte Publié le 2 mai 2026 sur le blog de Calif (blog.calif.io), cet article technique détaille la découverte et l’exploitation d’une vulnérabilité use-after-free (UAF) dans la fonction unserialize() de PHP, présente depuis PHP 5.1 (2005) et toujours exploitable dans PHP 8.5.5. La découverte s’inscrit dans le cadre du projet MAD Bugs (Month of AI-Discovered Bugs), combinant modèles d’IA (Claude) et expertise humaine. 🐛 La vulnérabilité Le bug réside dans zend_user_unserialize() (fichier Zend/zend_interfaces.c), le point de dispatch pour Serializable::unserialize(). Contrairement à tous les autres points de dispatch utilisateur (__wakeup, __unserialize, __destruct), cette fonction omet d’incrémenter BG(serialize_lock), ce qui permet à un appel récursif à unserialize() de partager le var_hash externe. ...

3 mai 2026 · 3 min
Dernière mise à jour le: 4 mai 2026 📝