Date de publication d’origine : 9 décembre 2025
ID de la base de connaissances : 5074596
Cet article décrit une modification qui affecte principalement les environnements d’entreprise ou gérés par l’informatique où les scripts PowerShell sont utilisés pour l’automatisation et la récupération de contenu web. Personnes l’utilisation d’appareils dans des paramètres personnels ou domestiques n’ont généralement pas besoin d’effectuer d’action, car ces scénarios sont rares en dehors des environnements gérés par le service informatique.
|
Modifier la date |
Modifier la description |
|
20 décembre 2025 |
|
Résumé
Windows PowerShell 5.1 affiche désormais une invite de confirmation de sécurité lors de l’utilisation de la commande Invoke-WebRequest pour extraire des pages web sans paramètres spéciaux.
Avertissement de sécurité : Le risque d’exécution de script Invoke-WebRequest analyse le contenu de la page web. Le code de script dans la page web peut être exécuté lorsque la page est analysée.
ACTION RECOMMANDÉE : utilisez le commutateur -UseBasicParsing pour éviter l’exécution de code de script.
Voulez-vous continuer ?
Cette invite avertit que les scripts de la page peuvent s’exécuter pendant l’analyse et recommande d’utiliser le paramètre -UseBasicParsing pour éviter toute exécution de script. Les utilisateurs doivent choisir de continuer ou d’annuler l’opération. Cette modification permet de se protéger contre le contenu web malveillant en exigeant le consentement de l’utilisateur avant les actions potentiellement risquées.
La commande Invoke-WebRequest de PowerShell envoie une requête HTTP ou HTTPS à un serveur web et retourne les résultats. Cet article décrit un changement de renforcement dans lequel Windows PowerShell 5.1 affiche intentionnellement une invite de confirmation de sécurité lors de l’utilisation de la commande Invoke-WebRequest pour extraire des pages web sans paramètres spéciaux. Ce comportement se produit après que les clients et serveurs Windows pris en charge ont installé Windows Mises à jour publié le et après le 9 décembre 2025. Pour plus d’informations, consultez CVE-2025-54100.
Qu’est-ce qui a changé ?
-
Comportement précédent
-
Analyse DOM (Document Object Model) complète à l’aide de composants Internet Explorer (interface HTMLDocument (mshtml)), qui peut exécuter des scripts à partir de contenu téléchargé.
-
-
Nouveau comportement
-
Invite de confirmation de sécurité : Après avoir installé les mises à jour Windows publiées le ou après le 9 décembre 2025, l’exécution de la commande Invoke-WebRequest (également appelée curl) dans PowerShell 5.1 déclenche une invite de sécurité (lorsqu’aucun paramètre spécial n’est utilisé). L’invite s’affiche dans la console PowerShell avec un avertissement concernant le risque d’exécution de script. Cela signifie que PowerShell s’interrompt pour vous avertir que sans précautions, le contenu du script de page web peut s’exécuter sur votre système lorsqu’il est traité. Par défaut, si vous appuyez sur Entrée (ou choisissez Non), l’opération est annulée pour des motifs de sécurité. PowerShell affiche un message indiquant qu’il a été annulé en raison de problèmes de sécurité et suggère de réexécuter la commande à l’aide du paramètre -UseBasicParsing pour un traitement sécurisé. Si vous choisissez Oui, PowerShell procède à l’analyse de la page à l’aide de l’ancienne méthode (analyse HTML complète), ce qui signifie qu’il charge le contenu et les scripts incorporés comme il le fait. Essentiellement, choisir Oui signifie que vous acceptez le risque et que vous autorisez la commande à s’exécuter comme avant, tandis que le choix de Non (la valeur par défaut) arrête l’action pour vous protéger.
-
Utilisation interactive ou scriptée : L’introduction de cette invite affecte principalement l’utilisation interactive. Dans les sessions interactives, vous verrez l’avertissement et vous devez répondre. Pour les scripts automatisés (scénarios non interactifs tels que les tâches planifiées ou les pipelines CI), cette invite peut entraîner le blocage du script en attendant l’entrée. Pour éviter cela, nous vous recommandons de mettre à jour ces scripts pour utiliser explicitement des paramètres sécurisés (voir ci-dessous), en veillant à ce qu’ils ne nécessitent pas de confirmation manuelle.
-
Procédure à suivre
La plupart des scripts et commandes PowerShell qui utilisent la commande Invoke-WebRequest continueront de fonctionner avec peu ou pas de modifications. Par exemple, les scripts qui téléchargent uniquement du contenu ou qui fonctionnent avec le corps de la réponse sous forme de texte ou de données ne sont pas affectés et ne nécessitent aucune modification.
Si vous avez des scripts affectés par cette modification, utilisez l’une des approches suivantes.
Pour extraire du contenu, aucune action n’est nécessaire si vous utilisez généralement la commande Invoke-WebRequest pour extraire du contenu (comme le téléchargement de fichiers ou la lecture de texte statique) et que vous ne vous fiez pas à l’interaction de site avancée ou à l’analyse DOM HTML. Le nouveau comportement par défaut est plus sécurisé : les scripts incorporés dans le contenu web ne s’exécutent pas sans votre autorisation, et il s’agit de la configuration recommandée pour la plupart des scénarios.
Pour une utilisation interactive, répondez simplement Non à la nouvelle invite de sécurité (ou appuyez sur Entrée pour accepter la valeur par défaut) et réexécutez votre commande avec le paramètre -UseBasicParsing pour récupérer le contenu en toute sécurité. Cela évite d’exécuter du code de script dans la page récupérée. Si vous récupérez fréquemment du contenu web de manière interactive, envisagez d’utiliser le paramètre -UseBasicParsing par défaut dans vos commandes pour ignorer complètement l’invite et garantir une sécurité maximale.
Pour les scripts automatisés ou les tâches planifiées, mettez-les à jour pour inclure le paramètre -UseBasicParsing sur les appels Invoke-WebRequest. Cela présélectionne le comportement sécurisé afin que l’invite n’apparaisse pas et que votre script continue à s’exécuter sans interruption. En procédant ainsi, vous vous assurez que votre automatisation s’exécute en toute transparence après la mise à jour tout en tirant parti de l’amélioration de la sécurité.
-
Pour les scripts qui s’exécutent avec l’option -NoProfile : si le script a de nombreuses occurrences des appels Invoke-WebRequest, déclarez $PSDefaultParameterValues['Invoke-WebRequest :UseBasicParsing'] = $true en haut du script.
-
Lorsque Invoke-WebRequest est utilisé avec le paramètre -UseBasicParsing, l’analyse DOM (Full Document Object Model) à l’aide de composants Internet Explorer (interface HTMLDocument (mshtml)) n’est pas possible.
Pour les scripts ou l’automatisation qui traitent du contenu web non approuvé ou public et nécessitent le traitement de structures ou de formulaires HTML, envisagez de les refactoriser ou de les mettre à jour pour une sécurité à long terme. Au lieu de vous appuyer sur PowerShell pour analyser et exécuter des scripts de page web potentiellement dangereux, vous pouvez :
-
Utilisez d’autres méthodes ou bibliothèques d’analyse (par exemple, traitez le contenu de la page web en tant que texte brut ou XML, à l’aide de bibliothèques d’expression régulière ou d’analyse XML/HTML qui n’exécutent pas de scripts).
-
Modernisez votre approche des interactions web, peut-être en utilisant une version plus récente de PowerShell Core (version 7.x ou ultérieure) qui ne dépend pas du moteur d’Internet Explorer et évite d’exécuter des scripts, ou en utilisant des outils de scraping web spécialisés qui gèrent le contenu de manière plus sécurisée. Limitez la dépendance vis-à-vis des fonctionnalités propres à Internet Explorer, car l’Explorer Internet est déconseillée. Prévoyez de réécrire des parties de vos scripts qui dépendent de ces fonctionnalités afin qu’elles puissent fonctionner dans un environnement où le contenu web est géré en toute sécurité.
-
Invoke-WebRequest dans PowerShell Core (version 7.x ou ultérieure) ne prend pas en charge l’analyse DOM à l’aide de composants Internet Explorer. Son analyse par défaut récupère en toute sécurité le contenu sans exécution de script.
-
-
L’objectif de la refactorisation est d’atteindre les fonctionnalités dont vous avez besoin sans vous exposer aux risques de sécurité, en adoptant ainsi les valeurs par défaut plus sûres introduites par cette modification.
Si vous avez un besoin spécifique d’utiliser les fonctionnalités d’analyse HTML complètes de la commande Invoke-WebRequest (telles que l’interaction avec les champs de formulaire ou la récupération de données structurées) et que vous faites confiance à la source du contenu web, vous pouvez toujours poursuivre le comportement d’analyse hérité au cas par cas. Dans les sessions interactives, cela signifie simplement choisir Oui à l’invite de confirmation pour permettre la poursuite de l’opération. Vous recevrez un rappel du risque de sécurité chaque fois que vous le faites. La procédure sans le paramètre -UseBasicParsing doit être limitée aux scénarios où vous faites entièrement confiance au contenu web (par exemple, des applications web internes sous votre contrôle ou des sites web fiables connus).
Important : Cette approche n’est pas recommandée pour les scripts s’exécutant sur du contenu web non approuvé ou public, car elle réintroduit le risque d’exécution de script silencieux que cette mise à jour est destinée à atténuer. En outre, pour l’automatisation non interactive, il n’existe aucun mécanisme intégré permettant de donner automatiquement son consentement à l’invite. Il n’est donc pas conseillé de s’appuyer sur l’analyse complète dans les scripts (en plus d’être risqué). Utilisez cette option avec parcimonie et uniquement comme mesure temporaire.
Forum aux questions
Dans la plupart des cas, les scripts qui téléchargent des fichiers ou extraient du contenu web sous forme de texte fonctionnent toujours. Pour éviter l’invite, ajoutez le paramètre -UseBasicParsing.
Les scripts utilisant l’analyse HTML avancée (comme les formulaires ou DOM) peuvent bloquer ou générer des données brutes au lieu d’objets structurés . Vous devez passer à l’analyse de base ou modifier votre script pour gérer le contenu différemment.
Utilisez toujours le paramètre -UseBasicParsing avec la commande Invoke-WebRequest dans les scripts PowerShell pour garantir une exécution sûre et non interactive.
Oui. Les scripts en fonction de l’analyse héritée doivent être mis à jour pour accepter ou refactoriser.
Le changement dans PowerShell s’applique à la fois aux mises à jour standard et aux mises à jour à chaud, ce qui entraîne le même changement de comportement.
Oui. PowerShell 7 utilise déjà l’analyse sécurisée par défaut.
Contactez les propriétaires de modules pour obtenir des plans de support. Utilisez l’option d’adhésion temporairement pour le contenu approuvé lors de la migration.
Pour préparer et valider cette modification, nous vous recommandons d’effectuer les opérations suivantes :
-
Identifier les scripts à l’aide des fonctionnalités DOM.
-
Testez l’automatisation avec la nouvelle valeur par défaut.
-
Limitez l’adhésion héritée aux sources approuvées.
-
Planifier la refactorisation du contenu non approuvé.