PowerShell 5.1: Invoke-WebRequest: Parancsfájl webes tartalomból történő végrehajtásának megakadályozása

Hatókör
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

Megjegyzés

  • Eredeti közzétételi dátum: 2025. december 9.
  • Tudásbáziscikk azonosítója: 5074596

Megjegyzés

Ez a cikk egy olyan változást ismertet, amely elsősorban a vállalati vagy informatikai részleg által felügyelt környezeteket érinti, ahol PowerShell-parancsfájlokat használnak automatizáláshoz és webes tartalmak beolvasására. Az eszközöket személyes vagy otthoni környezetben használó People-eknek általában nincs teendőjük, mivel ezek a forgatókönyvek ritkák az informatikai részleg által felügyelt környezeteken kívül.

Módosítási napló
Dátum módosítása Módosítás leírása
2025. december 20.
  • Az "Összefoglalás" szakasz egy "Biztonsági figyelmeztetés" hozzáadása.
  • Az egyértelműség kedvéért a következő bekezdést adtuk hozzá az "Összefoglalás" szakaszhoz:

    A PowerShell Invoke-WebRequest parancsa HTTP- vagy HTTPS-kérést küld egy webkiszolgálónak, és visszaadja az eredményt. Ez a cikk egy szigorú változást dokumentál, ahol a Windows PowerShell 5.1 szándékosan biztonsági megerősítést kérő üzenetet jelenít meg, amikor az Invoke-WebRequest parancsot használja speciális paraméterek nélküli weblapok beolvasásához. Ez a viselkedés a támogatott Windows-ügyfelek és -kiszolgálók telepítése után jelentkezik, és telepítették a 2025. december 9-én és azt követően kiadott Windows-Frissítések. További információ: CVE-2025-54100.
  • A "Művelet" szakasz 1. lehetőségéhez hozzáadtuk az "Automatikus parancsfájlok vagy ütemezett feladatok használata" című szakasz következő felsorolásjeleit.
    • Profil nélküli beállítással futó szkriptek esetén: Ha a szkriptben az Invoke-WebRequest hívások számos előfordulása szerepel, deklarálja a $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true a parancsfájl tetején.
    • Ha az Invoke-WebRequest függvényt a -UseBasicParsing paraméterrel használja, a teljes dokumentumobjektum-modell (DOM) az Internet Explorer összetevőivel (HTMLDocument Interface (mshtml)) végzett elemzése nem lehetséges.
  • Az alábbi pontot hozzáadtuk a "Cselekvés" szakasz 2. lehetőségének "A webes interakciós megközelítésének modernizálása" pontjához.
    • A Powershell Core (7.x vagy újabb verzió) Invoke-Webrequest parancsa nem támogatja az Internet Explorer összetevői használatával történő DOM-elemzést. Az alapértelmezett elemzése biztonságosan lekéri a tartalmat szkript végrehajtása nélkül.

Összegzés

A Windows PowerShell 5.1 mostantól biztonsági megerősítést kérő üzenetet jelenít meg, amikor az Invoke-WebRequest paranccsal speciális paraméterek nélküli weblapokat hív le.

Megjegyzés

  • Biztonsági figyelmeztetés: A parancsfájl végrehajtási kockázata Invoke-WebRequest a weblap tartalmának elemzésére szolgál. A weblapon lévő parancskód a lap elemzésekor futhat.
  • AJÁNLOTT TEENDŐ: A -UseBasicParsing kapcsolóval elkerülheti a parancsfájlkód végrehajtását.
  • Biztosan folytatja?

Ez a kérés figyelmeztet, hogy a lapon lévő parancsfájlok futtatása történhet elemzés közben, és a
-UseBasicParsing paraméter a szkript végrehajtásának elkerüléséhez. A felhasználóknak el kell dönteniük, hogy folytatják vagy megszakítják a műveletet. Ez a módosítás segít a kártékony webes tartalmak elleni védelemben azáltal, hogy a potenciálisan kockázatos műveletek előtt felhasználói hozzájárulást követel meg.

A PowerShell Invoke-WebRequest parancsa HTTP- vagy HTTPS-kérést küld egy webkiszolgálónak, és visszaadja az eredményeket. Ez a cikk egy szigorú változást dokumentál, amely miatt a Windows PowerShell 5.1 szándékosan biztonsági megerősítést kérő üzenetet jelenít meg, amikor az Invoke-WebRequest paranccsal speciális paraméterek nélküli weblapokat hív le. Ez a viselkedés azután fordul elő, hogy a támogatott Windows-ügyfelek és kiszolgálók telepítették a 2025. december 9-én és azt követően kiadott Windows-Frissítések. További információ: CVE-2025-54100.

Mi változott?

  • Korábbi viselkedés

    • Teljes dokumentumobjektum-modell (DOM) elemzése Internet Explorer összetevőkkel (HTMLDocument Interface (mshtml)), amely parancsfájlokat hajthat végre a letöltött tartalmakból.
  • Új viselkedés

    • Biztonsági megerősítést kérő üzenet: A 2025. december 9-én vagy azt követően kiadott Windows-frissítések telepítése után a PowerShell 5.1-ben a Invoke-WebRequest parancs (más néven curl) futtatása biztonsági kérést vált ki (ha nincs speciális paraméter használatban). A parancsfájl végrehajtási kockázatával kapcsolatos figyelmeztetéssel jelenik meg a PowerShell-konzolon. 

      Ez azt jelenti, hogy a PowerShell szüneteltetve figyelmezteti Önt, hogy előzetes óvintézkedések nélkül a weblap-szkript tartalma végrehajtást végrehajthat a rendszeren a feldolgozás során. Alapértelmezés szerint, ha lenyomja az Enter billentyűt (vagy a Nem gombot választja), a rendszer a biztonság érdekében megszakítja a műveletet. A PowerShell üzenetben jelzi, hogy a biztonsági okok miatt a művelet megszakadt, és javasolja a parancs újrafuttatását a következővel:
      -UseBasicParsing paraméter a biztonságos feldolgozáshoz. Ha az Igen lehetőséget választja, a PowerShell folytatja a lap elemzését a régebbi módszerrel (teljes HTML-elemzés), ami azt jelenti, hogy a korábban megszokott módon betölti a tartalmat és a beágyazott parancsfájlokat. Az Igen érték választása lényegében azt jelenti, hogy elfogadja a kockázatot, és lehetővé teszi, hogy a parancs ugyanúgy fusson, mint korábban, míg a Nem (alapértelmezett) lehetőség választása leállítja a műveletet, hogy megvédje Önt.

    • Interaktív vs. parancsfájlalapú használat: Ennek a kérésnek a bevezetése elsősorban az interaktív használatot érinti. Az interaktív munkamenetekben megjelenik a figyelmeztetés, és válaszolnia kell. Automatizált szkriptek (nem interaktív forgatókönyvek, például ütemezett feladatok vagy CI-folyamatok) esetén ez a parancsfájl lefagyását okozhatja, miközben a bevitelre vár. Ennek elkerülése érdekében javasoljuk, hogy frissítse ezeket a szkripteket, hogy explicit módon biztonságos paramétereket használjanak (lásd alább), biztosítva, hogy ne igényeljenek manuális megerősítést.

Vágjon bele

A Invoke-WebRequest parancsot használó PowerShell-parancsprogramok és -parancsok többsége továbbra is működni fog, módosítás nélkül vagy módosítás nélkül. Például azok a parancsfájlok, amelyek csak tartalmat töltenek le vagy csak szövegként vagy adatként dolgoznak a válasz törzsével, nem érintettek, és nem igényelnek módosítást.

Ha vannak olyan szkriptjei, amelyeket érint ez a változás, használja az alábbi megközelítések egyikét.

1. lehetőség: Az új alapértelmezett biztonsági beállítás használata

A tartalom lekéréséhez nincs teendő, ha a Invoke-WebRequest parancsot általában tartalom lehívására használja (például fájlok letöltésére vagy statikus szöveg olvasására), és nem támaszkodik speciális webhelyinterakcióra vagy HTML DOM-elemzésre. Az új alapértelmezett viselkedés biztonságosabb – a webes tartalmakba ágyazott szkriptek nem futnak az engedélye nélkül – és ez a legtöbb forgatókönyvhöz ajánlott konfiguráció.

Interaktív használathoz egyszerűen válaszoljon a Nem paranccsal az új biztonsági kérdésre (vagy az Enter billentyűt lenyomva fogadja el az alapértelmezett parancsot), majd futtassa újra a parancsot a -UseBasicParsing paraméterrel a tartalom biztonságos beolvasásához. Ezzel elkerülhető bármilyen parancsfájl végrehajtása a lekért lapon. Ha gyakran olvas be webes tartalmakat interaktív módban, érdemes alapértelmezés szerint a -UseBasicParsing paramétert használni a parancsokban, hogy a maximális biztonság érdekében kihagyja a kérdést.

Automatizált szkriptek vagy ütemezett feladatok esetén frissítse őket, hogy tartalmazzák a -UseBasicParsing paramétert a Invoke-WebRequest hívások esetén. Ez előre bejelöli a biztonságos viselkedést, így a parancsfájl nem jelenik meg, a parancsfájl pedig megszakítás nélkül futhat. Ezzel biztosíthatja, hogy az automatizálás zökkenőmentesen fusson a frissítés után, miközben továbbra is kihasználhatja a megnövekedett biztonsági előnyöket.

  • A -NoProfile opcióval futó szkriptek esetén: Ha a szkriptben számos Invoke-WebRequest hívás előfordulása, deklarálja $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true a parancsfájl tetején.
  • Ha az Invoke-WebRequest függvényt a -UseBasicParsing paraméterrel használja, a teljes dokumentumobjektum-modell (DOM) az Internet Explorer összetevőivel (HTMLDocument Interface (mshtml)) végzett elemzése nem lehetséges.
2. lehetőség: Parancsfájlok újrafaktorálása a hosszú távú biztonság érdekében

A nem megbízható vagy nyilvános webes tartalmakkal foglalkozó, és HTML-struktúrák vagy -űrlapok feldolgozását igénylő szkriptek vagy automatizálás esetén a hosszú távú biztonság érdekében fontolja meg azok refaktorálását vagy frissítését. Ahelyett, hogy a PowerShellre támaszkodna a potenciálisan veszélyes weblap-szkriptek elemzéséhez és futtatásához, a következőket teheti:

  • Használjon alternatív elemzési módszereket vagy kódtárakat (kezelje például a weblap tartalmát egyszerű szövegként vagy XML-formátumként, miközben olyan regex- vagy XML-/HTML-elemzési könyvtárakat használ, amelyek nem hajtanak végre parancsfájlokat).

  • Modernizálja a webes interakciók megközelítését, például az újabb PowerShell Core (7.x vagy újabb verzió) használatával, amely nem függ az Internet Explorer motorjától, és elkerüli a parancsfájlok futtatását, vagy a tartalmak biztonságosabb kezelésére szolgáló speciális webkaparó eszközök használatával. Korlátozza az Internet Explorer-specifikus szolgáltatásokra való támaszkodást, mivel az Internet Explorer elavult. Tervezze meg a szkriptek azon részeinek újraírását, amelyek ezektől a funkcióktól függnek, hogy olyan környezetben működhessenek, ahol a webes tartalmak biztonságosan kezelhetők.

    • A PowerShell Core (7.x vagy újabb verzió) Invoke-WebRequest parancsa nem támogatja az Internet Explorer összetevői használatával történő DOM-elemzést. Az alapértelmezett elemzése biztonságosan lekéri a tartalmat szkript végrehajtása nélkül.
  • A refaktorálás célja az, hogy anélkül érje el a szükséges funkciókat, hogy ki lenne téve magát a biztonsági kockázatoknak, ezáltal elfogadva a módosítás által bevezetett biztonságosabb alapértelmezéseket.

3. lehetőség: Örökölt viselkedés jóváhagyása (csak megbízható forgatókönyvek esetén)

Ha kifejezetten szüksége van a Invoke-WebRequest parancs összes HTML-elemzési képességének használatára (például az űrlapmezők használatához vagy a strukturált adatok beolvasásához), és megbízik a webes tartalom forrásában, továbbra is folytathatja a korábbi elemzési viselkedést eseti alapon. Interaktív munkamenetekben ez egyszerűen azt jelenti, hogy a megerősítési kérdésnél az Igen lehetőséget választja a művelet folytatásához. Minden ilyen alkalommal emlékeztetőt kap a biztonsági kockázatról. A -UseBasicParsing paraméter nélküli folytatást azokra a forgatókönyvekre kell korlátozni, ahol teljes mértékben megbízik a webes tartalomban (például az Ön ellenőrzése alatt álló belső webalkalmazásokban vagy ismert biztonságos webhelyeken).

Fontos

Ez a megközelítés nem ajánlott a nem megbízható vagy nyilvános webes tartalmakon futó parancsfájlok esetén, mivel újból bevezeti a parancsfájlok csendes végrehajtásának kockázatát, amelynek kockázatát a frissítés hivatott csökkenteni. Emellett a nem interaktív automatizálás esetében nincs beépített mechanizmus a parancs automatikus elfogadásához, ezért nem ajánlott a szkriptek teljes elemzésére támaszkodni (amellett, hogy kockázatos). Ezt a beállítást csak mértékletesen és csak ideiglenes intézkedésként használja.

Gyakori kérdések

Hatással van ez a változás a szkriptreimre?

A legtöbb esetben azok a parancsfájlok, amelyek szövegként töltenek le fájlokat vagy hívnak le webes tartalmakat, továbbra is működnek. A kérdés megjelenésének elkerülése érdekében adja hozzá a -UseBasicParsing paramétert.

A fejlett HTML-elemzést használó parancsfájlok (például űrlapok vagy DOM) lefagyhatnak vagy nyers adatokat hozhatnak létre strukturált objektumok helyett; A tartalom eltérő kezeléséhez át kell váltania egyszerű elemzésre, vagy módosítania kell a parancsfájlt.

Hogyan kerülhetem el, hogy új megerősítési kérés jelenjen meg a szkriptjeimben?

A biztonságos, nem interaktív végrehajtás biztosítása érdekében mindig használja a -UseBasicParsing paramétert a PowerShell-szkriptek Invoke-WebRequest parancsával.

Igényel ez a módosítás valamilyen műveletet a régebbi parancsfájlok esetében?

Igen. A régi értelmezéstől függő szkripteket frissíteni kell az engedélyezéshez vagy a refaktoráláshoz.

Hogyan jelenik meg ez a változás a gyorsjavítási és normál frissítésekben?

A PowerShell módosítása a standard frissítésekre és a gyorsjavítási frissítésekre is vonatkozik, ami ugyanazt a viselkedésbeli változást eredményezi.

Összhangban van ez a módosítás a PowerShell 7-es verziójával?

Igen. A PowerShell 7 alapértelmezés szerint már biztonságos elemzést használ.

Mit tegyek a külső parancsfájlokkal vagy modulokkal?

A támogatási csomagokért forduljon a modul tulajdonosaihoz. Az áttelepítés során ideiglenesen aktiválhatja a megbízható tartalmak jóváhagyását.

Hogyan ellenőrizhetem, hogy a környezetem készen áll-e?

A változásra való felkészüléshez és érvényesítéséhez az alábbiakat javasoljuk:

  • Parancsprogramok azonosítása a DOM-funkciókkal.
  • Tesztelje az automatizálást az új alapértelmezett beállítással.
  • A régi jóváhagyás korlátozása megbízható forrásokra.
  • Tervezze meg a nem megbízható tartalom refaktorálását.