Du point de vue d'un auditeur, PHP n'est finalement qu'un vecteur d'entrée parmi d'autres. Un attaquant vise, une fois l'exécution de code PHP arbitraire obtenue, à progresser dans le système d'information (vers le noyau pour élever ses privilèges, vers d'autres applications, vers le réseau interne, ...). Pour cette raison, le moteur PHP s'est doté au fil des ans de divers moyens de protection et de cloisonnement. Pour peu qu'elles soient correctement configurées, ces options peuvent empêcher toute progression vers le système d'exploitation sous-jacent. Cependant, le moteur PHP contient une classe de vulnérabilités inhérente à son architecture. Pire, exploiter ces vulnérabilités permet de s'affranchir de toutes ces protections...
1. Introduction / Contexte
1.1. Vulnérabilités d'interruption
Concernant la sécurité du moteur PHP, Stefan Esser est une référence incontestable. En charge du Hardened PHP Project [HPP], auteur du patch Suhosin [SUHOSIN] (qui renforce la sécurité du moteur PHP) et initiateur du Month Of PHP Bugs [MOPB], Stefan Esser repousse constamment les limites de la sécurité de PHP. Dans une récente présentation intitulée « State of the Art Post Exploitation in Hardened PHP Environment », Stefan détaille une classe de vulnérabilités à part entière, qu'il a nommée « Interruption Vulnerabilities » et qui peut se traduire par « vulnérabilités induites par les interruptions ».
Ce type de vulnérabilités provient des oscillations qu'il est possible de faire, entre le code compilé du moteur PHP et le code PHP interprété. Ces oscillations peuvent se faire de plusieurs manières :
- Définir un gestionnaire d'erreurs, puis provoquer une erreur ;
- Utiliser...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première