
CVE-2012-1823 - Injection d'arguments CGI PHP - Exécution de code à distance (RCE)
Sévérité : Critique (CVSS 9.8)
CVE : CVE-2012-1823
Publié : 11 mai 2012
Logiciel affecté : PHP fonctionnant en mode CGI (php-cgi)
Type de vulnérabilité : Injection d'arguments / Exécution de code à distance (RCE)
Vecteur d'attaque : Réseau
Authentification requise : Aucune
CVE-2012-1823 est l'une des vulnérabilités d'exécution de code à distance les plus importantes jamais découvertes dans PHP. La vulnérabilité affecte les installations de PHP configurées pour s'exécuter via la Common Gateway Interface (CGI), permettant à un attaquant non authentifié d'exécuter du code PHP arbitraire à distance.
Contrairement aux vulnérabilités qui nécessitent des failles au sein d'une application web, ce problème existe au sein de PHP lui-même lorsqu'il est déployé avec php-cgi. Étant donné que la vulnérabilité existe au niveau de l'interpréteur, toute application PHP hébergée sur un serveur affecté devient vulnérable, indépendamment de la présence de défauts de codage dans l'application.
La vulnérabilité a été largement médiatisée en 2012 en raison de sa simplicité, de sa fiabilité et de son exploitation répandue sur Internet. Même des années après sa divulgation, des scans à l'échelle d'Internet continuent d'identifier des systèmes vulnérables, et la vulnérabilité reste incluse dans les frameworks d'exploitation et les outils de détection défensive. :contentReference[oaicite:0]{index=0}
La vulnérabilité se trouve dans l'implémentation CGI de PHP (php-cgi).
Normalement, les paramètres de requête HTTP sont destinés à être transmis aux scripts PHP en tant qu'entrée utilisateur.
Cependant, PHP traite incorrectement des chaînes de requête spécialement conçues qui ne contiennent pas de caractère égal (=).
Au lieu de traiter la chaîne de requête uniquement comme des données utilisateur, PHP interprète par erreur certaines parties de celle-ci comme des arguments de ligne de commande passés directement à l'exécutable PHP.
Étant donné que PHP prend en charge de nombreux commutateurs de ligne de commande (tels que -d), un attaquant peut remplacer les options de configuration de l'environnement d'exécution PHP pendant le traitement de la requête.
Cela permet à l'attaquant de :
La cause racine est une gestion inappropriée de php_getopt() dans :
sapi/cgi/cgi_main.c
Plus précisément, PHP ne parvenait pas à ignorer correctement l'analyse des arguments de ligne de commande lors du traitement de chaînes de requête malveillantes dépourvues de signe égal (=). :contentReference[oaicite:1]{index=1}
L'exécutable CGI accepte des paramètres de ligne de commande.
Par exemple :
php-cgi -d allow_url_include=1
Normalement, ces paramètres devraient provenir uniquement du système d'exploitation.
Au lieu de cela, PHP permettait à tort aux requêtes HTTP d'injecter ces paramètres via des URL spécialement conçues.
L'attaquant pouvait donc manipuler la configuration de l'environnement d'exécution PHP avant que le script cible ne s'exécute.
Cela transformait effectivement une simple requête HTTP en exécution de ligne de commande contre php-cgi.
Les versions de PHP suivantes sont vulnérables :
| Version | Statut |
|---|---|
| PHP < 5.3.12 | Vulnérable |
| PHP 5.4.x < 5.4.2 | Vulnérable |
Seules les installations utilisant le mode CGI (php-cgi) sont concernées.
PHP s'exécutant en tant que :
n'est généralement pas affecté par CVE-2012-1823 lui-même. :contentReference[oaicite:2]{index=2}
Un attaquant a uniquement besoin de :
La vulnérabilité est entièrement exploitable à distance.
L'attaque suit généralement ces étapes :
Une fois l'exécution de code obtenue, les attaquants procèdent couramment à :
Une exploitation réussie entraîne la compromission totale de l'application PHP.
Les conséquences potentielles incluent :
Si PHP s'exécute avec des privilèges élevés, une compromission au niveau du système peut également être possible.
| Métrique | Valeur |
|---|---|
| Score de base | 9.8 |
| Sévérité | Critique |
| Vecteur d'attaque | Réseau |
| Complexité de l'attaque | Faible |
| Privilèges requis | Aucun |
| Interaction de l'utilisateur | Aucune |
| Confidentialité | Élevée |
| Intégrité | Élevée |
| Disponibilité | Élevée |
Plusieurs caractéristiques ont rendu CVE-2012-1823 particulièrement impactant :
Sa combinaison de facilité d'exploitation et d'impact sévère a conduit à de nombreuses attaques réelles et à son inclusion dans le catalogue Known Exploited Vulnerabilities (KEV) de la CISA. :contentReference[oaicite:4]{index=4}
Les administrateurs doivent vérifier :
Les indicateurs incluent :
Les scanners de sécurité tels que Nuclei, Nessus, OpenVAS et les modules Metasploit peuvent détecter les configurations vulnérables. :contentReference[oaicite:5]{index=5}
Les mesures d'atténuation recommandées incluent :