Une vulnérabilité critique de PHP sur Windows
ven, 14/06/2024 - 11:32
Une vulnérabilité critique de PHP sur Windows a été découverte sur toutes les versions de PHP de 5.x à 8.x. Sur Windows signifie qu'un server Web IIS avec le module php-cgi est vulnérable. Mais cela signifie aussi que les utilisateurs de XAMPP sont vulnérables. De plus il est important de savoir que si cette vulnérabilité est liée à php-cgi elle peut malgré tout être exploitée en dehors su mode cgi si les exécutables php.exe ou php-cgi.exe sont accessibles au serveur web.
Cette vulnérabilité est estampillée CVE-2024-4577. Elle existe sur Windows car si le système est configuré pour utiliser certaines pages de codes, il peut utiliser le comportement « Best-Fit » pour remplacer les caractères dans la ligne de commande donnée aux fonctions de l'API Win32. Le module PHP CGI peut alors interpréter à tort ces caractères comme des options PHP, ce qui peut permettre à un utilisateur malveillant de transmettre des options au binaire PHP en cours d'exécution, et ainsi de révéler le code source des scripts, d'exécuter du code PHP arbitraire sur le serveur, etc.
Cette vulnérabilité est exploitable via la simple insertion d’un caractère « Soft Hyphen » dans les paramètres d’une URL. Ce caractère est converti automatiquement en trait d’union classique via la fonctionnalité « Best-Fit » de Windows. Ce qui permet de contourner un mécanisme de vérification de PHP, et ainsi lui faire exécuter du code via l’exécutable « php.exe ».
Une URL attaquante peut-être repérée par la présence d’un caractère « Soft-Hyphen » dedans, caracère dont l'encodage est %ad.
Le site beaglesecurity.com précise qu'à l'heure actuelle, il a été confirmé qu'un attaquant non autorisé peut exécuter du code arbitraire sur des serveurs distants exécutant Windows dans les paramètres régionaux suivants :
- Chinois traditionnel (page de code 950)
- Chinois simplifié (page de codes 936)
- Japonais (page de code 932)
Pour Windows exécuté dans d'autres langues telles que l'anglais, le coréen et l'Europe occidentale, la diversité des scénarios d'utilisation de PHP rend difficile l'énumération et l'élimination de toutes les voies d'exploitation potentielles.
Pour se protéger de cette vulnérabilité, les administrateurs doivent mettre leur PHP à jour sur leurs systèmes. Mais s'ils ne peuvent pas le faire, par exemple en étant obligés de travailler avec un PHP 5.x qui n'est plus maintenu, beaglesecurity.com suggère une réécriture d'URL comme mesure d'atténuation :
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]
Commentaires
Intéressant cet article. Concernant le CVE, vous avez un site qui apporte des informations supplémentaires et qui est en constante évolution. Se basant sur diverses bases de données qui pourraient être intéressantes. Voici le site : https://www.cvefind.com/fr et voici le CVE en question : https://www.cvefind.com/fr/cve/CVE-2024-4577.html