Ursprungligt publiceringsdatum: den 9 december 2025
KB-ID: 5074596
I den här artikeln beskrivs en ändring som främst påverkar företagsmiljöer eller IT-hanterade miljöer där PowerShell-skript används för automatisering och hämtning av webbinnehåll. Personer att använda enheter i personliga inställningar eller heminställningar behöver vanligtvis inte vidta någon åtgärd, eftersom dessa scenarier är ovanliga utanför IT-hanterade miljöer.
|
Ändra datum |
Ändra beskrivning |
|
den 20 december 2025 |
|
Sammanfattning
Windows PowerShell 5.1 visar nu en säkerhetsbekräftelsefråga när kommandot Invoke-WebRequest används för att hämta webbsidor utan särskilda parametrar.
Säkerhetsvarning: Risk för skriptkörning Invoke-WebRequest tolkar innehållet på webbsidan. Skriptkoden på webbsidan kan köras när sidan tolkas.
REKOMMENDERAD ÅTGÄRD: Använd växeln -UseBasicParsing för att undvika körning av skriptkod.
Vill du fortsätta?
Den här uppmaningen varnar för att skript på sidan kan köras under parsning och rekommenderar att du använder parametern -UseBasicParsing för att undvika körning av skript. Användarna måste välja att fortsätta eller avbryta åtgärden. Den här ändringen skyddar mot skadligt webbinnehåll genom att kräva användarens medgivande innan potentiellt riskfyllda åtgärder.
PowerShell-kommandot Invoke-WebRequest gör en HTTP- eller HTTPS-begäran till en webbserver och returnerar resultatet. I den här artikeln beskrivs en härdningsändring där Windows PowerShell 5.1 avsiktligt visar en uppmaning om säkerhetsbekräftelse när kommandot Invoke-WebRequest används för att hämta webbsidor utan särskilda parametrar. Det här beteendet inträffar efter att Windows-klienter och -servrar som stöds har installerat Windows Uppdateringar som släpptes 9 december 2025 och senare. Mer information finns i CVE-2025-54100.
Vad har ändrats?
-
Tidigare beteende
-
Dom-parsning (Full Document Object Model) med hjälp av Internet Explorer-komponenter (HTMLDocument Interface (mshtml)), som kan köra skript från nedladdat innehåll.
-
-
Nytt beteende
-
Fråga om säkerhetsbekräftelse: När du har installerat Windows-uppdateringarna som släpptes den 9 december 2025 eller senare utlöses ett säkerhetsmeddelande (när ingen särskild parameter används) när kommandot Invoke-WebRequest körs i PowerShell 5.1. Uppmaningen visas i PowerShell-konsolen med en varning om risken för körning av skript. Det innebär att PowerShell pausar för att varna dig om att webbsidans skriptinnehåll utan försiktighetsåtgärder kan köras på systemet när det bearbetas. Om du trycker på Retur (eller väljer Nej) avbryts åtgärden av säkerhetsskäl. PowerShell visar ett meddelande om att det har avbrutits på grund av säkerhetsproblem och föreslår att kommandot körs igen med parametern -UseBasicParsing för säker bearbetning. Om du väljer Ja fortsätter PowerShell att tolka sidan med den äldre metoden (fullständig HTML-tolkning), vilket innebär att innehållet och eventuella inbäddade skript läses in som det brukade. Att välja Ja innebär i princip att du accepterar risken och låter kommandot köras som det gjorde tidigare, medan du väljer Nej (standard) stoppar åtgärden för att skydda dig.
-
Interaktiv kontra skriptad användning: Införandet av den här uppmaningen påverkar främst interaktiv användning. I interaktiva sessioner visas varningen och du måste svara. För automatiserade skript (icke-interaktiva scenarier, till exempel schemalagda aktiviteter eller CI-rörledningar), kan den här uppmaningen göra att skriptet hänger sig medan du väntar på indata. För att undvika det rekommenderar vi att du uppdaterar sådana skript för att uttryckligen använda säkra parametrar (se nedan), så att de inte kräver manuell bekräftelse.
-
Vidta åtgärder
De flesta PowerShell-skript och -kommandon som använder kommandot Invoke-WebRequest fungerar fortfarande med liten eller ingen ändring. Skript som endast laddar ned innehåll eller arbetar med svarstexten som text eller data påverkas till exempel inte och kräver inga ändringar.
Om du har skript som påverkas av den här ändringen använder du någon av följande metoder.
För att hämta innehåll krävs ingen åtgärd om din vanliga användning av kommandot Invoke-WebRequest är att hämta innehåll (t.ex. ladda ned filer eller läsa statisk text) och du inte förlitar dig på avancerad webbplatsinteraktion eller HTML DOM-tolkning. Det nya standardbeteendet är säkrare – skript inbäddade i webbinnehåll körs inte utan din tillåtelse – och det här är den rekommenderade konfigurationen för de flesta scenarier.
För interaktiv användning behöver du bara svara Nej på den nya säkerhetsuppmaningsrutan (eller trycka på Retur för att acceptera standardinställningen) och köra kommandot igen med parametern -UseBasicParsing för att på ett säkert sätt hämta innehållet. På så sätt undviker du att skriptkoden körs på den hämtade sidan. Om du ofta hämtar webbinnehåll interaktivt kan du använda parametern -UseBasicParsing som standard i kommandona för att hoppa över frågan helt och hållet och garantera maximal säkerhet.
För automatiska skript eller schemalagda aktiviteter uppdaterar du dem så att parametern -UseBasicParsing ingår i Invoke-WebRequest-anrop. Då markeras det säkra beteendet så att frågan inte visas och skriptet fortsätter att köras utan avbrott. Genom att göra detta ser du till att din automation körs smidigt efter uppdateringen samtidigt som du drar nytta av den förbättrade säkerheten.
-
För skript som körs med alternativet -NoProfile: Om skriptet innehåller många förekomster av Invoke-WebRequest-anropen deklarerar du $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true högst upp i skriptet.
-
När Invoke-WebRequest används med parametern -UseBasicParsing går det inte att tolka DOM (Full Document Object Model) med hjälp av Internet Explorer-komponenter (HTMLDocument Interface (mshtml)).
För skript eller automatisering som hanterar icke-betrott eller offentligt webbinnehåll och kräver bearbetning av HTML-strukturer eller -formulär kan du överväga att göra om eller uppdatera dem för långsiktig säkerhet. I stället för att förlita dig på Att PowerShell parsar och kör potentiellt farliga webbsideskript kan du:
-
Använd alternativa tolkningsmetoder eller bibliotek (till exempel behandla webbsidans innehåll som oformaterad text eller XML, med hjälp av regex- eller XML/HTML-parsningsbibliotek som inte kör skript).
-
Modernisera din syn på webbinteraktioner, kanske med nyare PowerShell Core (version 7.x eller senare) som inte är beroende av Internet Explorers motor och undviker att köra skript, eller med hjälp av specialiserade webbskrapaverktyg som hanterar innehåll på ett säkrare sätt. Begränsa beroendet av Internet Explorer-specifika funktioner eftersom Internet Explorer är inaktuellt. Planera att skriva om delar av skripten som är beroende av dessa funktioner så att de kan fungera i en miljö där webbinnehåll hanteras på ett säkert sätt.
-
Invoke-WebRequest i PowerShell Core (version 7.x eller senare) stöder inte DOM-tolkning med Hjälp av Internet Explorer-komponenter. Standardparsningen hämtar säkert innehållet utan skriptkörning.
-
-
Målet med refaktoring är att uppnå nödvändiga funktioner utan att utsätta dig för säkerhetsrisker, och därmed omfatta de säkrare standarderna som införs genom denna ändring.
Om du har ett specifikt behov av att använda kommandot Invoke-WebRequests fullständiga HTML-tolkningsfunktioner (t.ex. interagera med formulärfält eller skrapa strukturerade data) och du litar på källan till webbinnehållet, kan du fortfarande fortsätta med det äldre tolkningsbeteendet från fall till fall. I interaktiva sessioner innebär det här bara att du väljer Ja i bekräftelsemeddelandet så att åtgärden kan fortsätta. Du får en påminnelse om säkerhetsrisken varje gång du gör det. Fortsätter utan parametern -UseBasicParsing bör begränsas till scenarier där du litar fullt ut på webbinnehållet (till exempel interna webbprogram under din kontroll eller kända säkra webbplatser).
Viktigt!: Den här metoden rekommenderas inte för skript som körs mot icke-betrott eller offentligt webbinnehåll, eftersom den återinför risken för obevakad skriptkörning som den här uppdateringen är avsedd att minimera. För icke-interaktiv automation finns det dessutom ingen inbyggd mekanism för att automatiskt samtycka till uppmaningen, så det är inte lämpligt att förlita sig på fullständig tolkning i skript (förutom att vara riskabel). Använd det här alternativet sparsamt och endast som ett tillfälligt mått.
Vanliga frågor och svar
I de flesta fall fungerar skript som laddar ned filer eller hämtar webbinnehåll som text fortfarande. Om du vill undvika uppmaningen lägger du till parametern -UseBasicParsing.
Skript med avancerad HTML-tolkning (t.ex. formulär eller DOM) kan hänga sig eller mata ut rådata i stället för strukturerade objekt. Du måste växla till grundläggande tolkning eller ändra skriptet för att hantera innehåll på ett annat sätt.
Använd alltid parametern -UseBasicParsing med kommandot Invoke-WebRequest i PowerShell-skript för att säkerställa säker, icke-interaktiv körning.
Ja. Skript beroende på äldre tolkning måste uppdateras för att registrera dig eller göra en refaktor.
Ändringen i PowerShell gäller både standarduppdateringar och snabbsändningsuppdateringar, vilket resulterar i samma beteendeändring.
Ja. PowerShell 7 använder redan säker tolkning som standard.
Kontakta modulägare för supportavtal. Använd opt-in tillfälligt för betrott innehåll vid migrering.
För att förbereda och validera den här ändringen rekommenderar vi att du:
-
Identifiera skript med DOM-funktioner.
-
Testa automatisering med den nya standardinställningen.
-
Begränsa äldre registrering till betrodda källor.
-
Planera refactoring för icke-betrott innehåll.