Introduction : Quand le "couteau suisse" vous coupe
Le 9 décembre 2025, le Microsoft Security Response Center (MSRC) a lâché une bombe lors de son "Patch Tuesday" mensuel : un problème critique de sécurité est apparu. Vulnérabilité de 0 jour dans Windows PowerShell, suivi comme CVE-2025-54100.
Avec un Score CVSS de 7.8 (élevé)Cette vulnérabilité affecte une grande partie de l'écosystème Windows, depuis les anciens serveurs jusqu'aux dernières versions de Windows 11. PowerShell étant profondément intégré dans la structure du système d'exploitation, cette faille offre aux attaquants une dangereuse opportunité de "vivre sur place" (LotL), leur permettant d'exécuter un code malveillant à l'aide d'outils système natifs de confiance.
Que vous soyez un administrateur système gérant une ferme de serveurs ou un chercheur en sécurité, ignorer ce correctif n'est pas une option. Ce guide fournit une analyse technique de la faille, la matrice officielle des correctifs et le remaniement de code nécessaire pour que vos scripts fonctionnent en toute sécurité.
Windows PowerShell 0-Day CVE-2025-54100
Plongée technique : Les mécanismes de CVE-2025-54100
Pour comprendre la gravité de ce problème, nous devons examiner la faiblesse sous-jacente : CWE-77 (neutralisation inappropriée d'éléments spéciaux utilisés dans un commandement).
La logique de la vulnérabilité
Le problème principal réside dans la manière dont Windows PowerShell assainit les entrées des utilisateurs avant de les transmettre à l'interpréteur de ligne de commande. Lorsqu'une application ou un script construit une commande PowerShell en utilisant des données non fiables sans filtrage approprié, cela ouvre la porte aux attaques suivantes Injection de commande.
Scénario d'attaque (preuve de concept)
Clause de non-responsabilité : Le code suivant est uniquement destiné à des fins éducatives.
Imaginez un script administratif légitime conçu pour lire les fichiers journaux en fonction des entrées de l'utilisateur :
PowerShell
`# VULNERABLE PATTERN $UserInput = Read-Host "Enter log fileename" (Entrez le nom du fichier journal)
Windows PowerShell 0-Day CVE-2025-54100 PoC
L'entrée est directement concaténée dans la chaîne de commande
Dans un scénario standard, un utilisateur entre dans app.log.
Cependant, si un attaquant exploite CVE-2025-54100 sur un système non corrigé, il peut entrer :
app.log ; Démarrer-Processus calc.exe
L'analyseur syntaxique n'a pas réussi à neutraliser le point-virgule (;), l'interprète comme deux commandes distinctes :
Lire le journal :Get-Content C:\NLogs\Napp.log
Exécuter la charge utile :Démarrer le processus calc.exe (Dans une attaque réelle, il s'agirait d'un téléchargeur de ransomware ou d'une balise C2).
Le vecteur d'attaque : "Local" mais mortel
Microsoft considère qu'il s'agit d'un vecteur d'attaque "local". Cela signifie qu'un attaquant a généralement besoin de :
Accès de bas niveau au système, OU
Convaincre un utilisateur d'exécuter un fichier malveillant (ingénierie sociale/hameçonnage).
Une fois qu'ils ont réussi, ils peuvent tirer parti de cette injection pour augmenter leurs privilèges ou se déplacer latéralement sur le réseau.
Windows PowerShell 0-Day CVE-2025-54100 PoC
La matrice des correctifs : Identifiez vos mises à jour critiques
Microsoft a publié des mises à jour de sécurité d'urgence. Les administrateurs informatiques doivent donner la priorité aux KB suivantes immédiatement via WSUS, SCCM, ou par téléchargement manuel.
Version OS
Sévérité
ID du correctif KB critique
Notes sur le déploiement
Serveur Windows 2025
Haut
KB5072033
Requiert un redémarrage
Windows 11 (24H2 / 25H2)
Haut
KB5074204
Mise à jour cumulative
Serveur Windows 2022
Haut
KB5074204
Installation prioritaire
Windows Server 2019
Haut
KB5074353
–
Windows 10 (22H2)
Haut
KB5071546
Mise à jour de sécurité disponible
Windows Server 2012 R2
Moyen
KB5071544
ESU (Extended Support) uniquement
Avertissement critique : Étant donné que ce correctif modifie les binaires de base de PowerShell, un redémarrage du système est obligatoire. Veillez à planifier les fenêtres de maintenance en conséquence pour éviter les interruptions de service.
Le "Gotcha" : Réparer les scripts cassés après l'application d'un correctif
La sécurité se fait généralement au détriment de la commodité. Les mises à jour pour CVE-2025-54100 (spécifiquement à l'intérieur de KB5074204 et KB5074353) introduisent des contrôles de sécurité plus stricts sur les requêtes web.
Le problème : Invoke-WebRequest Défaillances
Après l'application du correctif, vous pouvez constater que vos scripts d'automatisation échouent avec l'erreur suivante :
"Le contenu de la réponse ne peut pas être analysé car le moteur Internet Explorer n'est pas disponible ou la configuration du premier lancement d'Internet Explorer n'est pas complète".
Cela s'explique par le fait que Microsoft rompt enfin le lien entre PowerShell et l'ancien moteur d'analyse d'Internet Explorer afin de réduire la surface d'attaque.
La solution : Refonte du code
Vous devez mettre à jour vos scripts pour ne plus dépendre d'IE pour l'analyse du DOM. La solution consiste à forcer l'utilisation de l'élément L'analyse syntaxique de base mode.
Le code brisé (héritage)
PowerShell
# Ceci repose sur le moteur IE, qui est maintenant restreint ou supprimé $response = Invoke-WebRequest -Uri "" Écriture-sortie $response.Content
Le code sécurisé (meilleure pratique)
PowerShell
# Ajoute l'option -UseBasicParsing pour plus de rapidité, de sécurité et de compatibilité $response = Invoke-WebRequest -Uri "" -UseBasicParsing Write-Output $response.Content
Conseil pour les administrateurs :
Utilisez une recherche par expressions rationnelles dans votre IDE (VS Code / ISE) pour analyser votre dépôt de scripts :
Les correctifs sont réactifs. Pour se prémunir contre les futurs 0-days, il faut adopter une stratégie de "défense en profondeur" pour PowerShell.
A. Appliquer le mode linguistique contraint
Pour les utilisateurs non administrateurs, PowerShell doit être exécuté dans le dossier Mode linguistique contraint. Cela limite considérablement la possibilité d'appeler les API Windows ou de compiler un code .NET arbitraire.
Sortie cible pour les utilisateurs standard : ConstrainedLanguage`
B. Activer l'enregistrement des blocs de script
Les attaquants adorent PowerShell parce qu'il s'exécute en mémoire (sans fichier). Pour les arrêter, vous devez enregistrer le code exécuté.
Chemin d'accès au GPO :Configuration de l'ordinateur > Modèles d'administration > Composants Windows > Windows PowerShell > Activer la journalisation du blocage des scripts PowerShell.
C. Règles de détection SIEM
Mettez à jour les règles de surveillance de votre SOC pour signaler les tentatives d'exploitation potentielles :
Hiérarchie des processus : Alerte si powershell.exe est née des applications Office (Word, Excel).
Arguments suspects : Recherchez les commandes fortement obscurcies ou l'utilisation de Commande codée.
ID d'événement 4104 : Recherchez dans les journaux des blocs de scripts des mots-clés tels que Invoke-Expression ou IEX combinés à des appels de réseau.
La divulgation de CVE-2025-54100 nous le rappelle brutalement : L'identité et la configuration constituent le nouveau périmètre. Si la solution immédiate consiste à appliquer les KB de décembre (KB5072033/KB5074204), la solution à long terme consiste à renforcer votre environnement contre l'utilisation abusive d'outils natifs.
Votre plan d'action :
Audit : Recherchez sur votre réseau les terminaux Windows non corrigés.
Rustine : Déployez immédiatement les mises à jour de sécurité de décembre.
Refactoriser : Mettez à jour vos scripts d'automatisation pour utiliser UseBasicParsing.