PowerShell 5.1: Invoke-WebRequest: Împiedicarea executării scripturilor din conținutul web

Se aplică la
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

Notă

  • Data originală de publicare: decembrie 9, 2025
  • ID KB: 5074596

Notă

Acest articol descrie o modificare care afectează în principal mediile de întreprindere sau gestionate de IT în care scripturile PowerShell sunt utilizate pentru automatizare și regăsirea conținutului web. People care utilizează dispozitive în setări personale sau de acasă, în general, nu trebuie să efectueze nicio acțiune, deoarece aceste scenarii sunt neobișnuite în afara mediilor gestionate de IT.

Jurnal de modificări
Data modificării Descrierea modificării
decembrie 20, 2025
  • S-a adăugat "Avertisment de securitate" la secțiunea "Rezumat".
  • A fost adăugat următorul paragraf la secțiunea "Rezumat" pentru claritate:

    Comanda Invoke-WebRequest PowerShell face o solicitare HTTP sau HTTPS către un server web și returnează rezultatele. Acest articol discută despre o modificare de întărire în care Windows PowerShell 5.1 afișează în mod intenționat un prompt de confirmare a securității atunci când utilizați comanda Invoke-WebRequest pentru a prelua pagini web fără parametri speciali. Acest comportament apare după ce clienții și serverele Windows acceptate au instalat Actualizări Windows lansate la și după 9 decembrie 2025. Pentru mai multe informații, consultați CVE-2025-54100.
  • Au fost adăugate următoarele puncte de marcatori la "Pentru scripturi automate sau activități programate" din Opțiunea 1 a secțiunii "Acționați".
    • Pentru scripturile care rulează cu opțiunea fără profil: Dacă scriptul are multe apariții ale apelurilor Invoke-WebRequest, declarați $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true în partea de sus a scriptului.
    • Atunci când Invoke-WebRequest este utilizată cu parametrul -UseBasicParsing , analiza DOM (Full Document Object Model - Model de obiecte de document) utilizând componente Internet Explorer (HTMLDocument Interface (mshtml)) nu este posibilă.
  • S-a adăugat următorul punct de marcator la punctul de marcator "Modernizați-vă abordarea interacțiunilor web" din Opțiunea 2 din secțiunea "Acționați".
    • Invoke-Webrequest din Powershell Core (versiunea 7.x sau mai recentă) nu acceptă analiza DOM utilizând componente Internet Explorer. Analiza sa implicită va regăsi în siguranță conținutul fără executarea scriptului.

Rezumat

Windows PowerShell 5.1 afișează acum o solicitare de confirmare de securitate atunci când utilizați comanda Invoke-WebRequest pentru a prelua pagini web fără parametri speciali.

Notă

  • Avertisment de securitate: Riscul de execuție a scriptului Invoke-WebRequest analizează conținutul paginii web. Codul de script din pagina web poate fi rulat atunci când pagina este analizată.
  • ACȚIUNE RECOMANDATĂ: Utilizați argumentul -UseBasicParsing pentru a evita executarea codului de script.
  • Continuați?

Această solicitare avertizează că scripturile din pagină ar putea rula în timpul analizei și recomandă utilizarea
-UseBasicParsing pentru a evita executarea oricărui script. Utilizatorii trebuie să aleagă să continue sau să anuleze operațiunea. Această modificare contribuie la protecția împotriva conținutului web rău intenționat, solicitând consimțământul utilizatorului înainte de acțiuni potențial riscante.

Comanda Invoke-WebRequest din PowerShell efectuează o solicitare HTTP sau HTTPS către un server web și returnează rezultatele. Acest articol discută despre o modificare de întărire atunci când Windows PowerShell 5.1 afișează în mod intenționat o solicitare de confirmare a securității atunci când utilizați comanda Invoke-WebRequest pentru a prelua pagini web fără parametri speciali. Acest comportament apare după ce clienții și serverele Windows acceptate au instalat Actualizări Windows lansate la și după 9 decembrie 2025. Pentru mai multe informații, consultați CVE-2025-54100.

Ce s-a schimbat?

  • Comportamentul anterior

    • Analiza DOM (Full Document Object Model) utilizând componente Internet Explorer (HTMLDocument Interface (mshtml)), care ar putea executa scripturi din conținutul descărcat.
  • Comportament nou

    • Solicitare de confirmare a securității: După instalarea actualizărilor Windows lansate la sau după 9 decembrie 2025, rularea comenzii Invoke-WebRequest (numită și curl) în PowerShell 5.1 va declanșa o solicitare de securitate (atunci când nu este utilizat niciun parametru special). Solicitarea apare în consola PowerShell cu un avertisment despre riscul de execuție a scriptului

      Acest lucru înseamnă că PowerShell este în pauză pentru a vă avertiza că, fără precauții, conținutul scriptului paginii web s-ar putea executa în sistemul dvs. atunci când este procesat. În mod implicit, dacă apăsați pe Enter (sau alegeți Nu), operațiunea va fi anulată pentru siguranță. PowerShell va afișa un mesaj că a fost anulat din cauza problemelor de securitate și sugerează rularea din nou a comenzii utilizând
      -UseBasicParsing pentru procesare sigură. Dacă alegeți Da, PowerShell va continua la analiza paginii utilizând metoda mai veche (analiză HTML completă), ceea ce înseamnă că va încărca conținutul și toate scripturile încorporate ca înainte. În esență, dacă alegeți Da înseamnă că acceptați riscul și permiteți comenzii să ruleze ca înainte, în timp ce dacă alegeți Nu (setarea implicită) oprește acțiunea pentru a vă proteja.

    • Utilizare interactivă vs. script: Introducerea acestei solicitări afectează în principal utilizarea interactivă. În sesiunile interactive, veți vedea avertismentul și va trebui să răspundeți. Pentru scripturile automate (scenarii non-interactive, cum ar fi activitățile planificate sau canalele CI), această solicitare poate face ca scriptul să se blocheze în timp ce se așteaptă intrarea. Pentru a evita acest lucru, vă recomandăm să actualizați astfel de scripturi astfel încât să utilizeze în mod explicit parametri siguri (vedeți mai jos), asigurându-vă că nu necesită confirmare manuală.

Luați măsuri

Majoritatea scripturilor și comenzilor PowerShell care utilizează comanda Invoke-WebRequest vor continua să funcționeze cu puține modificări sau fără nicio modificare. De exemplu, scripturile care doar descarcă conținut sau lucrează cu corpul răspunsului ca text sau date nu sunt afectate și nu necesită modificări.

Dacă aveți scripturi care sunt afectate de această modificare, utilizați una dintre următoarele abordări.

Opțiunea 1: Utilizați noua setare implicită securizată

Pentru preluarea conținutului, nu este necesară nicio acțiune dacă utilizarea tipică a comenzii Invoke-WebRequest este preluarea de conținut (cum ar fi descărcarea de fișiere sau citirea textului static) și nu vă bazați pe interacțiunea complexă cu site-ul sau pe analiza HTML DOM. Noul comportament implicit este mai sigur: scripturile încorporate în conținutul web nu vor rula fără permisiunea dvs., iar aceasta este configurația recomandată pentru majoritatea scenariilor.

Pentru utilizare interactivă, răspundeți Nu la noua solicitare de securitate (sau apăsați pe Enter pentru a accepta setarea implicită) și rulați din nou comanda cu parametrul -UseBasicParsing pentru a regăsi în siguranță conținutul. Acest lucru va evita executarea oricărui cod de script în pagina preluată. Dacă preluați frecvent conținut web interactiv, luați în considerare utilizarea parametrului -UseBasicParsing în mod implicit în comenzile dvs., pentru a ignora solicitarea cu totul și a asigura o siguranță maximă.

Pentru scripturi automate sau activități programate, actualizați-le pentru a include parametrul -UseBasicParsing în apelurile Invoke-WebRequest . Acest lucru preselectează comportamentul sigur, astfel încât solicitarea să nu apară și scriptul să continue să ruleze fără întrerupere. Procedând astfel, vă asigurați că automatizarea rulează fără probleme după actualizare, profitând în același timp de securitatea îmbunătățită.

  • Pentru scripturile care rulează cu opțiunea -NoProfile: Dacă scriptul are multe apariții ale apelurilor Invoke-WebRequest , declarați $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true în partea de sus a scriptului.
  • Atunci când Invoke-WebRequest este utilizată cu parametrul -UseBasicParsing , analiza DOM (Full Document Object Model - Model de obiecte de document) utilizând componente Internet Explorer (HTMLDocument Interface (mshtml)) nu este posibilă.
Opțiunea 2: refactorizați scripturile pentru securitate pe termen lung

Pentru scripturile sau automatizările care se ocupă de conținut web public sau care nu este de încredere și necesită procesarea de structuri sau formulare HTML, luați în considerare reproiectarea sau actualizarea acestora pentru siguranță pe termen lung. În loc să vă bazați pe PowerShell pentru a analiza și a rula scripturi de pagini web potențial periculoase, puteți efectua următoarele:

  • Utilizați metode sau biblioteci de analiză alternative (de exemplu, tratați conținutul paginii web ca text simplu sau XML, utilizând biblioteci de analiză regex sau XML/HTML care nu execută scripturi).

  • Modernizați-vă abordarea privind interacțiunile web, probabil folosind un nucleu PowerShell mai nou (versiunea 7.x sau mai recentă), care nu depinde de motorul Internet Explorer și evită rularea de scripturi, sau utilizând instrumente specializate de răzuire web care gestionează conținutul mai în siguranță. Limitați dependența de caracteristicile specifice Internet Explorer, deoarece Internet Explorer este perimat. Intenționați să rescrieți părți ale scripturilor care depind de aceste caracteristici, astfel încât să poată funcționa într-un mediu în care conținutul web este gestionat în siguranță.

    • Invoke-WebRequest în PowerShell Core (versiunea 7.x sau mai recentă) nu acceptă analiza DOM utilizând componente Internet Explorer. Analiza sa implicită va regăsi în siguranță conținutul fără executarea scriptului.
  • Obiectivul refactorizării este de a obține funcționalitatea necesară fără a vă expune la riscuri de securitate, adoptând astfel valorile implicite mai sigure introduse de această modificare.

Opțiunea 3: Optați pentru comportamentul moștenit (numai pentru scenariile de încredere)

Dacă aveți nevoia specifică să utilizați capacitățile complete de analiză HTML ale comenzii Invoke-WebRequest (cum ar fi interacțiunea cu câmpurile de formular sau răzuirea datelor structurate) și aveți încredere în sursa conținutului web, puteți continua cu comportamentul de analiză moștenit, în funcție de caz. În sesiunile interactive, acest lucru înseamnă pur și simplu să alegeți Da în solicitarea de confirmare pentru a permite continuarea operațiunii. Veți primi un memento despre riscul de securitate de fiecare dată când faceți acest lucru. Continuarea fără parametrul -UseBasicParsing trebuie limitată la scenariile în care aveți deplină încredere în conținutul web (de exemplu, aplicații web interne aflate sub controlul dvs. sau site-uri web cunoscute ca sigure).

Important

Această abordare nu este recomandată pentru scripturile care rulează pe conținut web public sau care nu este de încredere, deoarece reintroduce riscul de executare silențioasă a scripturilor pe care această actualizare intenționează să îl diminueze. De asemenea, pentru automatizarea non-interactivă, nu există niciun mecanism încorporat pentru a consimți automat la solicitare, așa că nu este recomandabil să vă bazați pe analiza completă a scripturilor (pe lângă faptul că este riscantă). Utilizați această opțiune mai rar și doar ca măsură temporară.

Întrebări frecvente

Această modificare îmi afectează scripturile?

În majoritatea cazurilor, scripturile care descarcă fișiere sau preiau conținut web ca text vor funcționa în continuare. Pentru a evita solicitarea, adăugați parametrul -UseBasicParsing .

Scripturile care utilizează analiza HTML avansată (cum ar fi formularele sau DOM) pot să se blocheze sau să scoată date brute în loc de obiecte structurate; Va trebui să comutați la analiza de bază sau să modificați scriptul pentru a gestiona conținutul în mod diferit.

Cum pot evita noua solicitare de confirmare din scripturile mele?

Utilizați întotdeauna parametrul -UseBasicParsing cu comanda Invoke-WebRequest în scripturile PowerShell pentru a asigura o executare sigură, non-interactivă.

Această modificare necesită vreo acțiune pentru scripturile moștenite?

Da. Scripturile care depind de analiza moștenită trebuie actualizate pentru a opta prin optare sau a fi refactorizate.

Cum se reflectă această modificare în actualizările standard și remediere rapidă?

Modificarea din PowerShell se aplică atât actualizărilor standard, cât și actualizărilor hotpatch, rezultând aceeași modificare de comportament.

Această modificare se aliniază cu PowerShell 7?

Da. PowerShell 7 utilizează deja analiza securizată în mod implicit.

Ce trebuie să fac în legătură cu scripturile sau modulele de la terți?

Contactați proprietarii modulelor pentru planuri de asistență. Optați temporar pentru conținut de încredere în timpul migrării.

Cum verific dacă mediul meu este pregătit?

Pentru a vă pregăti și a valida această modificare, vă recomandăm:

  • Identificați scripturile utilizând caracteristicile DOM.
  • Testați automatizarea cu noua setare implicită.
  • Limitați înscrierea moștenită la surse de încredere.
  • Planificați reproiectarea pentru conținutul care nu este de încredere.