Poznámka
- Původní datum vydání: 9 prosince, 2025
- KB ID: 5074596
Poznámka
Tento článek popisuje změnu, která má dopad především na podniková prostředí nebo prostředí spravovaná IT, kde se skripty PowerShellu používají k automatizaci a načítání webového obsahu. People using devices in personal or home settings obvykle nemusí provádět žádnou akci, protože tyto scénáře jsou neobvyklé mimo prostředí spravovaná IT.
Změnový protokol
| Změnit datum | Popis změny |
|---|---|
| 20 prosince, 2025 |
|
Souhrn
Windows PowerShell 5.1 teď při použití příkazu Invoke-WebRequest k načtení webových stránek bez zvláštních parametrů zobrazí výzvu k potvrzení zabezpečení.
Poznámka
- Upozornění zabezpečení: Riziko spuštění skriptu Invoke-WebRequest analyzuje obsah webové stránky. Kód skriptu na webové stránce se může spustit při analýze stránky.
- DOPORUČENÁ AKCE: Pomocí přepínače -UseBasicParsing se můžete vyhnout spuštění kódu skriptu.
- Chcete pokračovat?
Tato výzva varuje, že skripty na stránce se mohou spustit během analýzy, a doporučuje použít
-UseBasicParsing parametr, aby se zabránilo spuštění skriptu. Uživatelé se musí rozhodnout, jestli budou v operaci pokračovat, nebo ji zruší. Tato změna pomáhá chránit před škodlivým webovým obsahem tím, že před potenciálně rizikovými akcemi vyžaduje souhlas uživatele.
Příkaz PowerShellu Invoke-WebRequest vytvoří požadavek HTTP nebo HTTPS na webový server a vrátí výsledky. Tento článek dokumentuje změnu posílení zabezpečení, kde Windows PowerShell 5.1 záměrně zobrazuje výzvu k potvrzení zabezpečení při použití příkazu Invoke-WebRequest k načtení webových stránek bez speciálních parametrů. K tomuto chování dochází poté, co podporovaní klienti a servery Windows nainstalovali Windows Aktualizace vydané 9. prosince 2025 a později. Další informace najdete v článku CVE-2025-54100.
Co se změnilo?
Předchozí chování
- Analýza modelu DOM (Full Document Object Model) pomocí komponent aplikace Internet Explorer (HTMLDocument Interface (mshtml)), které mohou spouštět skripty ze staženého obsahu.
Nové chování
Výzva k potvrzení zabezpečení: Po instalaci aktualizací Windows vydaných 9. prosince 2025 nebo později se spuštěním příkazu Invoke-WebRequest (označovaného také jako curl) v PowerShellu 5.1 spustí výzva k zabezpečení (pokud se nepoužije žádný speciální parametr). V konzoli PowerShellu se zobrazí výzva s upozorněním na riziko spuštění skriptu.
To znamená, že PowerShell se pozastavuje, aby vás upozornil, že bez preventivních opatření by se obsah skriptu webové stránky mohl při zpracování spustit ve vašem systému. Pokud stisknete klávesu Enter (nebo zvolíte Ne), operace se ve výchozím nastavení z důvodu bezpečnosti zruší. PowerShell zobrazí zprávu, že byl zrušen z důvodu obav o zabezpečení, a navrhne opětovné spuštění příkazu pomocí
-UseBasicParsing parametr pro bezpečné zpracování. Pokud zvolíte Ano, PowerShell bude pokračovat v analýze stránky pomocí starší metody (úplná analýza HTML), což znamená, že načte obsah a všechny vložené skripty jako dříve. Volba Yes v podstatě znamená, že přijímáte riziko a povolujete spuštění příkazu jako předtím, zatímco volba Ne (výchozí) zastaví akci, která vás chrání.Interaktivní vs. skriptované použití: Zavedení této výzvy má vliv především na interaktivní využití. V interaktivních relacích se zobrazí upozornění a musíte reagovat. U automatizovaných skriptů (neinteraktivních scénářů, jako jsou naplánované úlohy nebo kanály CI) může tato výzva způsobit, že skript při čekání na vstup přestane reagovat. Abyste tomu předešli, doporučujeme takové skripty aktualizovat tak, aby explicitně používaly bezpečné parametry (viz níže), a zajistit, aby nevyžadovaly ruční potvrzení.
Akční přístup
Většina skriptů a příkazů PowerShellu, které používají příkaz Invoke-WebRequest , bude i nadále fungovat s malými nebo žádnými úpravami. Například skripty, které pouze stahují obsah nebo pracují s textem odpovědi jako s textem nebo daty, nejsou ovlivněny a nevyžadují žádné změny.
Pokud máte skripty, které jsou touto změnou ovlivněny, použijte jeden z následujících přístupů.
Možnost 1: Použijte nové bezpečné výchozí nastavení
Pro načtení obsahu se nevyžaduje žádná akce, pokud je vaším typickým použitím příkazu Invoke-WebRequest načtení obsahu (například stažení souborů nebo čtení statického textu) a nespoléháte se na pokročilou interakci s webem nebo analýzu HTML DOM. Nové výchozí chování je bezpečnější – skripty vložené do webového obsahu se nespustí bez vašeho svolení – a je to doporučená konfigurace pro většinu scénářů.
Pro interaktivní použití jednoduše odpovězte Ne na novou výzvu zabezpečení (nebo stisknutím klávesy Enter přijměte výchozí nastavení) a znovu spusťte příkaz s parametrem -UseBasicParsing pro bezpečné načtení obsahu. Tím se zabrání spuštění kódu skriptu na načtené stránce. Pokud často načítáte webový obsah interaktivně, zvažte použití parametru - UseBasicParsing ve výchozím nastavení ve vašich příkazech, abyste výzvu úplně přeskočili a zajistili maximální bezpečnost.
U automatizovaných skriptů nebo naplánovaných úloh je aktualizujte tak, aby zahrnovaly parametr -UseBasicParsing ve voláních Invoke-WebRequest . Tím se předem vybere bezpečné chování, takže se výzva nezobrazí a skript bude dál běžet bez přerušení. Tímto způsobem zajistíte, že vaše automatizace poběží hladce i po aktualizaci a zároveň využijete vylepšené zabezpečení.
- Pro skripty, které běží s -NoProfile možností: Pokud má skript mnoho výskytů volání Invoke-WebRequest , deklarujte $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true v horní části skriptu.
- Při použití Invoke-WebRequest s parametrem -UseBasicParsing není analýza modelu DOM (Full Document Object Model) pomocí komponent Internet Exploreru (rozhraní HTMLDocument (mshtml)) možná.
Možnost 2: Refaktorování skriptů pro dlouhodobou bezpečnost
U skriptů nebo automatizace, které zpracovávají nedůvěryhodný nebo veřejný webový obsah a vyžadují zpracování struktur nebo formulářů HTML, zvažte z důvodu dlouhodobé bezpečnosti jejich refaktoring nebo aktualizaci. Místo toho, abyste se při analýze a spouštění potenciálně nebezpečných skriptů webových stránek spoléhali na PowerShell, můžete:
Používejte alternativní metody nebo knihovny analýzy (například zacházejte s obsahem webové stránky jako s prostým textem nebo XML, pomocí knihoven pro analýzu regulárních výrazů nebo XML/HTML, které nespouštějí skripty).
Modernizujte svůj přístup k webovým interakcím, třeba použitím novějšího PowerShell Core (verze 7.x nebo novějšího), které nezávisí na modulu Internet Exploreru a vyhýbá se spouštění skriptů, nebo používáním specializovaných nástrojů pro škrabání webu, které zpracovávají obsah bezpečněji. Omezte závislost na funkcích specifických pro Internet Explorer, protože Internet Explorer je zastaralý. Naplánujte si, že části skriptů, které závisí na těchto funkcích, přepíšete, aby fungovaly v prostředí, kde se webový obsah zpracovává bezpečně.
- Invoke-WebRequest v PowerShell Core (verze 7.x nebo novější) nepodporuje analýzu modelu DOM pomocí komponent Internet Exploreru. Jeho výchozí analýza bezpečně načte obsah bez spuštění skriptu.
Cílem refaktoringu je dosáhnout potřebných funkcí, aniž byste se vystavovali bezpečnostním rizikům, a přijmout tak bezpečnější výchozí hodnoty, které tato změna zavádí.
Možnost 3: Souhlaste se starším chováním (jenom důvěryhodné scénáře)
Pokud máte konkrétní potřebu použít úplné možnosti analýzy HTML příkazu Invoke-WebRequest (například interakci s poli formuláře nebo scraping strukturovaných dat) a důvěřujete zdroji webového obsahu, můžete pokračovat ve starší analýze chování případ od případu. V interaktivních relacích to jednoduše znamená, že v potvrzovací výzvě vyberete Ano , aby operace mohla pokračovat. Pokaždé, když tak učiníte, obdržíte připomenutí bezpečnostního rizika. Pokračování bez parametru -UseBasicParsing by mělo být omezeno na scénáře, kdy webovému obsahu plně důvěřujete (například interním webovým aplikacím pod vaší kontrolou nebo známým bezpečným webům).
Důležité
Tento přístup se nedoporučuje u skriptů spouštěných proti nedůvěryhodnému nebo veřejnému webovému obsahu, protože znovu přináší riziko bezobslužného spuštění skriptu, které má tato aktualizace zmírnit. Také pro neinteraktivní automatizaci neexistuje žádný vestavěný mechanismus, který by automaticky souhlasil s výzvou, takže spoléhání se na úplnou analýzu ve skriptech se nedoporučuje (kromě toho, že je riskantní). Tuto možnost používejte střídmě a jenom jako dočasné opatření.
Časté otázky
Má tato změna vliv na mé skripty?
Ve většině případů budou skripty, které stahují soubory nebo načítají webový obsah jako text, dál fungovat. Pokud se chcete výzvě vyhnout, přidejte -UseBasicParsing parametr.
Skripty používající pokročilou analýzu HTML (jako jsou formuláře nebo DOM) mohou přestat reagovat nebo vypisovat nezpracovaná data místo strukturovaných objektů; Budete muset přepnout na základní analýzu nebo upravit skript tak, aby zpracovával obsah jiným způsobem.
Jak se můžu vyhnout nové potvrzovací výzvě ve svých skriptech?
Vždy používejte parametr -UseBasicParsing s příkazem Invoke-WebRequest ve skriptech PowerShellu, abyste zajistili bezpečné a neinteraktivní spuštění.
Vyžaduje tato změna nějakou akci pro starší skripty?
Ano. Skripty závislé na starší analýze musí být aktualizovány, aby se daly vyjádřit výslovný souhlas nebo refaktorovat.
Jak se tato změna projeví v aktualizacích hotpatch a standardních aktualizacích?
Změna PowerShellu platí pro standardní aktualizace i aktualizace hotpatch, což vede ke stejné změně chování.
Je tato změna v souladu s PowerShellem 7?
Ano. PowerShell 7 už ve výchozím nastavení používá zabezpečenou analýzu.
Co mám dělat se skripty nebo moduly třetích stran?
Požádejte o plány podpory vlastníky modulů. Při migraci použijte dočasný výslovný souhlas s důvěryhodným obsahem.
Návody ověřit, jestli je moje prostředí připravené?
Při přípravě a ověřování této změny doporučujeme:
- Identifikovat skripty pomocí funkcí modelu DOM
- Otestujte automatizaci s novým výchozím nastavením.
- Omezte starší přihlášení na důvěryhodné zdroje.
- Naplánujte refaktoring nedůvěryhodného obsahu.