PowerShell 5.1: Invoke-WebRequest: Zabránenie spusteniu skriptu z webového obsahu

Vzťahuje sa na
Win 10 Ent LTSB 2016 Win 10 Ent LTSC 2019 Windows 10 IoT Enterprise LTSC 2021 Windows 10, version 22H2, all editions Windows 11 Home and Pro, version 22H2 Windows 11 Enterprise Multi-Session, version 22H2 Windows 11 Enterprise and Education, version 22H2 Windows 11 IoT Enterprise, version 22H2 Windows 11 SE, version 23H2 Windows 11 Home and Pro, version 23H2 Windows 11 Enterprise and Education, version 23H2 Windows 11 Enterprise Multi-Session, version 23H2 Windows 11 version 24H2, all editions Windows 11 version 25H2, all editions Windows Server 2008 Premium Assurance Windows Server 2008 R2 Premium Assurance Windows Server 2012 ESU Windows Server 2012 R2 ESU Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server 2025

Poznámka

  • Pôvodný dátum publikovania: Decembra 9, 2025
  • ID KB: 5074596

Poznámka

Tento článok popisuje zmenu, ktorá ovplyvňuje predovšetkým podnikové prostredia alebo prostredia spravované IT oddelením, v ktorých sa skripty prostredia PowerShell používajú na automatizáciu a načítanie webového obsahu. People používanie zariadení v osobných alebo domácich nastaveniach vo všeobecnosti nie je potrebné vykonať žiadne kroky, pretože tieto scenáre sú mimo prostredí spravovaných IT menej bežné.

Zoznam zmien
Zmeniť dátum Popis zmeny
Decembra 20, 2025
  • Do časti Zhrnutie bolo pridané upozornenie zabezpečenia.
  • Do časti "Zhrnutie" sme kvôli prehľadnosti pridali nasledujúci odsek:

    Príkaz Invoke-WebRequest prostredia PowerShell odošle požiadavku HTTP alebo HTTPS webovému serveru a vráti výsledky. V tomto článku sa dokumentuje zmena sprísnenia, pri ktorej Windows PowerShell 5.1 úmyselne zobrazí výzvu na potvrdenie zabezpečenia pri použití príkazu Invoke-WebRequest na načítanie webových stránok bez špeciálnych parametrov. K tomuto správaniu dochádza po inštalácii podporovaných klientov a serverov systému Windows nainštalovaných Aktualizácie Windowsu vydaných 9. decembra 2025 a neskôr. Ďalšie informácie nájdete v CVE-2025-54100.
  • Pridali sme do časti Pre automatizované skripty alebo naplánované úlohy v možnosti 1 v časti Vykonanie akcie nasledujúce odrážky.
    • Pre skripty, ktoré sa spúšťajú s možnosťou no-profile: Ak skript obsahuje veľa výskytov Invoke-WebRequest volaní, deklarujte $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true v hornej časti skriptu.
    • Pri použití parametra Invoke-WebRequest s parametrom -UseBasicParsing nie je možná analýza modelu DOM (Full Document Object Model) pomocou súčastí Internet Explorera (HTMLDocument Interface (mshtml)).
  • Do odrážky "Modernizujte svoj prístup k webovej interakcii" v možnosti č. 2 v časti Vykonajte akciu bola pridaná nasledujúca odrážka.
    • Invoke-Webrequest v prostredí Powershell Core (verzia 7.x alebo novšia) nepodporuje analýzu DOM pomocou súčastí Internet Explorera. Jeho predvolená analýza bezpečne načíta obsah bez vykonania skriptu.

Súhrn

Windows PowerShell 5.1 teraz zobrazuje potvrdzujúcu výzvu zabezpečenia pri použití príkazu Invoke-WebRequest na načítanie webových stránok bez špeciálnych parametrov.

Poznámka

  • Upozornenie zabezpečenia: Riziko spustenia skriptu Invoke-WebRequest analyzuje obsah webovej stránky. Kód skriptu na webovej stránke sa môže spustiť pri analýze stránky.
  • ODPORÚČANÁ AKCIA: Ak sa chcete vyhnúť spusteniu kódu skriptu, použite prepínač UseBasicParsing.
  • Chcete pokračovať?

Táto výzva upozorňuje, že skripty na stránke sa môžu spustiť počas analýzy a odporúča použiť
-UseBasicParsing parameter, aby sa zabránilo vykonávaniu skriptu. Používatelia sa musia rozhodnúť, či chcú v operácii pokračovať alebo ju zrušiť. Táto zmena pomáha chrániť pred škodlivým webovým obsahom tým, že pred potenciálne riskantnými akciami vyžaduje súhlas používateľa.

Príkaz Invoke-WebRequest prostredia PowerShell vytvorí požiadavku HTTP alebo HTTPS na webový server a vráti výsledky. V tomto článku je dokumentovaná zmena sprísnenia, pri ktorej Windows PowerShell 5.1 zámerne zobrazí potvrdzujúcu výzvu zabezpečenia pri použití príkazu Invoke-WebRequest na načítanie webových stránok bez špeciálnych parametrov. K tomuto správaniu dochádza po inštalácii aktualizácií Windowsu vydaných 9. decembra 2025 a neskôr klientov a serverov Windowsu. Ďalšie informácie nájdete v CVE-2025-54100.

Čo sa zmenilo?

  • Predchádzajúce správanie

    • Analýza celého modelu DOM (Full Document Object Model) pomocou súčastí Internet Explorera (HTMLDocument Interface (mshtml)), ktoré by mohli spúšťať skripty zo stiahnutého obsahu.
  • Nové správanie

    • Výzva na potvrdenie zabezpečenia: Po inštalácii aktualizácií Windowsu vydaných 9. decembra 2025 alebo neskôr spustenie príkazu Invoke-WebRequest (známeho aj ako curl) v prostredí PowerShell 5.1 spustí výzvu zabezpečenia (keď sa nepoužije žiadny špeciálny parameter). V konzole prostredia PowerShell sa zobrazí výzva s upozornením na riziko spustenia skriptu

      To znamená, že PowerShell vás pozastaví a upozorní, že bez preventívnych opatrení sa môže obsah skriptu webovej stránky počas spracovania spustiť v systéme. Ak stlačíte kláves Enter (alebo vyberiete možnosť Nie), operácia sa predvolene zruší z dôvodu bezpečnosti. PowerShell zobrazí hlásenie, že bola zrušená z bezpečnostných dôvodov a navrhne opätovné spustenie príkazu pomocou nástroja
      -UseBasicParsing parameter pre bezpečné spracovanie. Ak vyberiete možnosť Áno, PowerShell bude pokračovať v analýze stránky pomocou staršej metódy (úplná analýza HTML kódu), čo znamená, že načíta obsah a všetky vložené skripty tak ako predtým. Výber možnosti Áno v podstate znamená, že prijímate riziko a povoľujete spustenie príkazu ako predtým, zatiaľ čo výberom možnosti Nie (predvolená možnosť) sa akcia zastaví, aby vás chránila.

    • Interaktívne verzus skriptované používanie: Zavedenie tejto výzvy ovplyvňuje predovšetkým interaktívne používanie. V interaktívnych reláciách uvidíte upozornenie a budete musieť reagovať. Pri automatizovaných skriptoch (neinteraktívne scenáre, napríklad plánované úlohy alebo kanály CI) môže táto výzva spôsobiť zablokovanie skriptu počas čakania na vstup. Aby ste sa tomu vyhli, odporúčame aktualizovať takéto skripty tak, aby explicitne používali bezpečné parametre (pozrite nižšie), a zabezpečiť, aby nevyžadovali manuálne potvrdenie.

Dajte sa do toho

Väčšina skriptov a príkazov prostredia PowerShell, ktoré používajú príkaz Invoke-WebRequest , bude naďalej fungovať s minimálnymi úpravami alebo bez nich. Napríklad skripty, ktoré sťahujú obsah alebo pracujú s telom odpovede ako text alebo údaje, nie sú ovplyvnené a nevyžadujú sa žiadne zmeny.

Ak máte skripty, ktorých sa táto zmena týka, použite jeden z nasledujúcich prístupov.

1. možnosť: Použite nové predvolené zabezpečené

Ak sa na načítanie obsahu nevyžaduje žiadna akcia, ak sa príkaz Invoke-WebRequest zvyčajne používa na načítanie obsahu (napríklad sťahovanie súborov alebo čítanie statického textu) a nespoliehate sa na rozšírenú interakciu s lokalitou alebo na analýzu HTML DOM. Nové predvolené správanie je bezpečnejšie – skripty vložené do webového obsahu sa nespustia bez vášho povolenia – a toto je odporúčaná konfigurácia pre väčšinu scenárov.

Ak chcete interaktívne použitie, jednoducho odpovedzte na novú výzvu zabezpečenia Nie (alebo stlačením klávesu Enter prijmite predvolené nastavenie) a znova spustite príkaz s parametrom -UseBasicParsing na bezpečné načítanie obsahu. Takto sa na načítanej stránke nevykoná žiadny kód skriptu. Ak často načítavate webový obsah interaktívne, zvážte v príkazoch predvolené použitie parametra -UseBasicParsing , ktorý výzvu úplne vynecháte a zaistíte tak maximálnu bezpečnosť.

V prípade automatizovaných skriptov alebo naplánovaných úloh ich aktualizujte tak, aby zahŕňali parameter -UseBasicParsing vo volaniach Invoke-WebRequest . Týmto sa vopred vyberie bezpečné správanie, aby sa výzva nezobrazila a skript sa naďalej spúšťal bez prerušenia. Týmto zabezpečíte, že automatizácia bude po aktualizácii fungovať bez problémov a zároveň budete môcť využívať vylepšené zabezpečenie.

  • Pre skripty, ktoré sa spúšťajú s možnosťou -NoProfile: Ak skript obsahuje veľa výskytov volaní Invoke-WebRequest , deklarujte $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true v hornej časti skriptu.
  • Pri použití parametra Invoke-WebRequest s parametrom -UseBasicParsing nie je možná analýza modelu DOM (Full Document Object Model) pomocou súčastí Internet Explorera (HTMLDocument Interface (mshtml)).
2. možnosť: Refaktorovanie skriptov na dosiahnutie dlhodobého zabezpečenia

V prípade skriptov alebo automatizácie, ktoré pracujú s nedôveryhodným alebo verejným webovým obsahom a vyžadujú spracovanie štruktúr HTML alebo formulárov, zvážte ich refaktoring alebo aktualizáciu pre dlhodobú bezpečnosť. Namiesto spoliehania sa na PowerShell pri analýze a spúšťaní potenciálne nebezpečných skriptov webových stránok môžete:

  • Použiť alternatívne metódy analýzy alebo knižnice (narábať s obsahom webovej stránky ako s obyčajným textom alebo XML súborom a používať knižnice analýzy kódov Regex alebo XML/HTML, ktoré nespúšťajú skripty).

  • Modernizujte svoj prístup k interakciám na webe, napríklad použitím novšieho jadra prostredia PowerShell (verzia 7.x alebo novšia), ktorá nezávisí od nástroja Internet Explorera a vyhýba sa spúšťaniu skriptov, alebo pomocou špecializovaných nástrojov na prehľadávanie webu, ktoré spracujú obsah bezpečnejšie. Obmedzte spoliehanie sa na funkcie špecifické pre Internet Explorer, pretože Internet Explorer už nie je dostupný. Naplánujte prepísanie častí skriptov, ktoré závisia od týchto funkcií tak, aby mohli fungovať v prostredí, v ktorom sa s webovým obsahom pracuje bezpečne.

    • Invoke-WebRequest v prostredí PowerShell Core (verzia 7.x alebo novšia) nepodporuje analýzu DOM pomocou súčastí Internet Explorera. Jeho predvolená analýza bezpečne načíta obsah bez vykonania skriptu.
  • Cieľom refaktoringu je dosiahnuť potrebné funkcie bez toho, aby ste sa vystavili bezpečnostným rizikám, a tým prijať bezpečnejšie predvolené nastavenia, ktoré prináša táto zmena.

3. možnosť: Vyjadrenie explicitného súhlasu so starším správaním (iba v prípade dôveryhodných scenárov)

Ak potrebujete používať všetky možnosti analýzy HTML príkazu Invoke-WebRequest (ako je interakcia s poľami formulára alebo zoškrabovanie štruktúrovaných údajov) a dôverujete zdroju webového obsahu, môžete pokračovať v staršej analýze v jednotlivých prípadoch. V interaktívnych reláciách to jednoducho znamená vybrať možnosť Áno na potvrdzovacej výzve, aby mohla operácia pokračovať. Pri každom prihlásení sa zobrazí pripomenutie bezpečnostného rizika. Pokračovanie bez parametra -UseBasicParsing by malo byť obmedzené na scenáre, v ktorých plne dôverujete webovému obsahu (napríklad interným webovým aplikáciám pod kontrolou alebo známym bezpečným webovým lokalitám).

Dôležité

Tento postup sa neodporúča pri skriptoch spúšťaných s nedôveryhodným alebo verejným webovým obsahom, pretože obnovuje riziko spúšťania tichého skriptu, ktoré má táto aktualizácia zmierniť. Tiež pre neinteraktívnu automatizáciu neexistuje žiadny vstavaný mechanizmus na automatický súhlas s výzvou, takže sa neodporúča spoliehať sa na úplnú analýzu v skriptoch (okrem toho, že je to riskantné). Túto možnosť používajte opatrne a len ako dočasné opatrenie.

Najčastejšie otázky

Ovplyvní táto zmena moje skripty?

Vo väčšine prípadov budú naďalej fungovať skripty, ktoré sťahujú súbory alebo načítavajú webový obsah ako text. Ak sa chcete výzve vyhnúť, pridajte parameter -UseBasicParsing .

Skripty používajúce rozšírenú analýzu HTML (napríklad formuláre alebo DOM) môžu namiesto štruktúrovaných objektov zablokovať alebo vytlačiť nespracované údaje. Budete musieť prepnúť na základnú analýzu alebo upraviť skript tak, aby sa obsah spracovával inak.

Ako môžem zabrániť novej výzve na potvrdenie v skriptoch?

Ak chcete zabezpečiť bezpečné a neinteraktívne spustenie, vždy používajte parameter -UseBasicParsing s príkazom Invoke-WebRequest v skriptoch prostredia PowerShell.

Vyžaduje táto zmena nejakú akciu pre staršie skripty?

Áno. Skripty v závislosti od staršej analýzy je potrebné aktualizovať, aby sa do nich mohli explicitne prihlásiť alebo refaktorovať.

Ako sa táto zmena prejaví v okamžitých opravách a štandardných aktualizáciách?

Zmena v prostredí PowerShell sa vzťahuje na štandardné aktualizácie aj aktualizácie okamžitých opráv, čo má za následok rovnakú zmenu správania.

Je táto zmena v súlade s prostredím PowerShell 7?

Áno. PowerShell 7 už predvolene používa zabezpečenú analýzu.

Čo mám robiť so skriptami alebo modulmi tretích strán?

Obráťte sa na vlastníkov modulov a požiadajte ich o plány podpory. Počas migrácie využite dočasný explicitný súhlas s dôveryhodným obsahom.

Ako overím, či je moje prostredie pripravené?

V rámci prípravy a overenia tejto zmeny odporúčame:

  • Identifikujte skripty pomocou funkcií DOM.
  • Automatizácia testovania s novým predvoleným nastavením.
  • Obmedzte staršie explicitné súhlasy na dôveryhodné zdroje.
  • Naplánujte refaktoring pre nedôveryhodný obsah.