PowerShell 5.1: Invoke-WebRequest: Предотвратяване на изпълнението на скрипт от уеб съдържание

Отнася се за
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

Забележка

  • Първоначална дата на публикуване: 9 декември 2025 г.
  • ИД на БЗ: 5074596

Забележка

Тази статия описва промяна, която засяга предимно корпоративни или управлявани от ИТ среди, където скриптовете на PowerShell се използват за автоматизация и извличане на уеб съдържание. People, използващи устройства в лични или домашни настройки, обикновено не трябва да предприемат никакви действия, тъй като тези сценарии са рядкост извън ИТ управлявани среди.

Регистър на промените
Промяна на датата Описание на промяната
20 декември 2025 г.
  • Добавено "Предупреждение на защитата" към раздела "Резюме".
  • Добавихме следния абзац към раздела "Резюме" за по-голяма яснота:

    Командата Invoke-WebRequest на PowerShell прави HTTP или HTTPS заявка към уеб сървър и връща резултатите. Тази статия документира промяна по подсилването, при която Windows PowerShell 5.1 умишлено показва подкана за потвърждение на защитата, когато използвате командата Invoke-WebRequest за извличане на уеб страници без специални параметри. Това поведение възниква, след като поддържани клиенти и сървъри на Windows са инсталирали Актуализации на Windows, издадени на и след 9 декември 2025 г. За повече информация вж. CVE-2025-54100.
  • Добавени са следните точки към "За автоматизирани скриптове или планирани задачи" в опция 1 на раздела "Предприемане на действие".
    • За скриптове, които се изпълняват с опцията без профил: Ако скриптът има много повторения на Invoke-WebRequest повиквания, декларирайте $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true в горната част на скрипта.
    • Когато се използва Invoke-WebRequest с параметъра -UseBasicParsing, анализирането на обектния модел на целия документ (DOM) чрез компоненти на Internet Explorer (HTMLDocument Interface (mshtml)) не е възможно.
  • Добавена е следната точка към водещия символ "Модернизирайте своя подход към взаимодействията с уеб" на опция 2 в раздела "Предприемане на действие".
    • Invoke-Webrequest в ядрото на Powershell (версия 7.x или по-нова) не поддържа анализиране на DOM чрез компоненти на Internet Explorer. Неговото анализиране по подразбиране ще извлече безопасно съдържанието без изпълнение на скрипта.

Обобщение

Windows PowerShell 5.1 вече показва подкана за потвърждение на защитата при използване на командата Invoke-WebRequest за извличане на уеб страници без специални параметри.

Забележка

  • Предупреждение за защита: Риск от изпълнение на скрипт Invoke-WebRequest анализира съдържанието на уеб страницата. Възможно е скриптов код в уеб страницата да се изпълни, когато страницата се анализира.
  • ПРЕПОРЪЧИТЕЛНО ДЕЙСТВИЕ: Използвайте превключвателя -UseBasicParsing, за да избегнете изпълнението на скриптов код.
  • Желаете ли да продължите?

Тази подкана предупреждава, че скриптовете в страницата може да се изпълняват по време на анализирането и съветва да използвате
-UseBasicParsing параметър, за да избегнете всякакво изпълнение на скрипт. Потребителите трябва да изберат дали да продължат, или да отменят операцията. Тази промяна помага за защита срещу злонамерено уеб съдържание, като изисква съгласие от потребителя преди потенциално рискови действия.

Командата Invoke-WebRequest на PowerShell прави HTTP или HTTPS заявка към уеб сървър и връща резултатите. Тази статия документира промяна за подсилване, при която Windows PowerShell 5.1 умишлено показва подкана за потвърждение на защитата, когато използвате командата Invoke-WebRequest за извличане на уеб страници без специални параметри. Това поведение възниква, след като поддържани клиенти и сървъри на Windows са инсталирали Актуализации на Windows, издадени на и след 9 декември 2025 г. За повече информация вж. CVE-2025-54100.

Какво се промени?

  • Предишно поведение

    • Анализ на обектния модел на целия документ (DOM) с помощта на компоненти на Internet Explorer (HTMLDocument Interface (mshtml)), който може да изпълнява скриптове от изтеглено съдържание.
  • Ново поведение

    • Подкана за потвърждение на защитата: След инсталиране на актуализациите за Windows, издадени на или след 9 декември 2025 г., изпълнението на командата Invoke-WebRequest (известна също като curl) в PowerShell 5.1 ще задейства подкана на защитата (когато не се използва специален параметър). Подканата се появява в конзолата на PowerShell с предупреждение за риск от изпълнение на скрипт

      Това означава, че PowerShell прави пауза, за да ви предупреди, че без предпазни мерки съдържанието на скрипта на уеб страница може да се изпълни в системата ви, когато се обработва. По подразбиране, ако натиснете клавиша Enter (или изберете "Не"), операцията ще се отмени за безопасност. PowerShell ще покаже съобщение, че е анулиран поради съображения за сигурност и ще предложи да изпълните командата отново, като използвате
      -Параметър UseBasicParsing за безопасна обработка. Ако изберете "Да", PowerShell ще продължи да анализира страницата с помощта на по-стария метод (пълно анализиране на HTML), което означава, че ще зареди съдържанието и вградените скриптове, както и преди. По същество избирането на "Да " означава, че поемате риска и позволявате на командата да се изпълнява, както е било преди, докато избирането на "Не " (по подразбиране) спира действието, за да ви защити.

    • Интерактивно или използване на скрипт: Въвеждането на тази подкана засяга предимно интерактивното използване. В интерактивни сесии ще видите предупреждението и трябва да отговорите. За автоматизирани скриптове (неинтерактивни сценарии, като например планирани задачи или CI канали) тази подкана може да доведе до увисване на скрипта, докато се чака въвеждане на данни. За да избегнете това, препоръчваме да актуализирате тези скриптове, така че изрично да използват безопасни параметри (вижте по-долу), като се уверите, че не изискват ръчно потвърждение.

Предприемане на действие

Повечето скриптове и команди на PowerShell, които използват командата Invoke-WebRequest , ще продължат да работят с малки или без никакви промени. Например скриптовете, които изтеглят само съдържание или работят с основния текст или данни на отговора, не са засегнати и не изискват промени.

Ако имате скриптове, които са засегнати от тази промяна, използвайте един от следните подходи.

Опция 1: Използвайте новата защитена настройка по подразбиране

За извличане на съдържание не се изисква никакво действие, ако типичното използване на командата Invoke-WebRequest е за извличане на съдържание (например изтегляне на файлове или четене на статичен текст) и не разчитате на разширено взаимодействие с сайт или анализиране на HTML DOM. Новото поведение по подразбиране е по-защитено – скриптове, вградени в уеб съдържание, няма да се изпълняват без вашето разрешение – и това е препоръчителната конфигурация за повечето сценарии.

За интерактивна употреба просто отговорете с "Не " на новата подкана за защита (или натиснете Enter , за да приемете настройката по подразбиране) и изпълнете отново командата с параметъра -UseBasicParsing за безопасно извличане на съдържанието. По този начин ще избегнете изпълнението на какъвто и да е код на скрипт в извлечената страница. Ако често извличате уеб съдържание интерактивно, използвайте параметъра -UseBasicParsing по подразбиране в командите си, за да прескочите подканата и да осигурите максимална безопасност.

За автоматизирани скриптове или планирани задачи ги актуализирайте, за да включите параметъра -UseBasicParsing при повиквания на Invoke-WebRequest . Това предварително избира безопасното поведение, така че подканата да не се показва и скриптът да продължи да се изпълнява без прекъсване. По този начин гарантирате, че вашата автоматизация работи безпроблемно след актуализацията, като същевременно се възползвате от подобрената защита.

  • За скриптове, които се изпълняват с опцията -NoProfile: Ако скриптът има много повторения на повикванията на Invoke-WebRequest , декларирайте $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true в горната част на скрипта.
  • Когато се използва Invoke-WebRequest с параметъра -UseBasicParsing, анализирането на обектния модел на целия документ (DOM) чрез компоненти на Internet Explorer (HTMLDocument Interface (mshtml)) не е възможно.
Опция 2: Преструктуриране на скриптове за дългосрочна защита

За скриптове или автоматизация, които се занимават с ненадеждно или публично уеб съдържание и изискват обработка на HTML структури или формуляри, помислете за преструктурирането или актуализирането им за дългосрочна безопасност. Вместо да разчитате на PowerShell за анализиране и изпълнение на потенциално опасни скриптове на уеб страници, можете да:

  • Използване на алтернативни методи или библиотеки за анализ (например третиране на съдържанието на уеб страницата като обикновен текст или XML, като се използват библиотеки за анализ на regex или XML/HTML, които не изпълняват скриптове).

  • Модернизирайте подхода си към уеб взаимодействията, като използвате по-новото ядро на PowerShell (версия 7.x или по-нова), което не зависи от системата на Internet Explorer и избягва изпълнението на скриптове, или като използвате специализирани инструменти за изстъргване в уеб, които обработват съдържанието по-сигурно. Ограничете разчитането на специфични функции на Internet Explorer, тъй като Internet Explorer е отхвърлен. Планирате да пренапишете части от вашите скриптове, които зависят от тези функции, така че да могат да работят в среда, в която уеб съдържанието се обработва безопасно.

    • Invoke-WebRequest в ядрото на PowerShell (версия 7.x или по-нова) не поддържа анализиране на DOM с помощта на компоненти на Internet Explorer. Неговото анализиране по подразбиране ще извлече безопасно съдържанието без изпълнение на скрипта.
  • Целта с рефакторинга е да постигнете необходимата функционалност, без да се излагате на рискове за защитата, като по този начин се възприемат по-безопасните настройки по подразбиране, въведени от тази промяна.

Опция 3: Включване в наследено поведение (само за надеждни сценарии)

Ако имате конкретна нужда да използвате пълните възможности за анализ на HTML на командата Invoke-WebRequest (като взаимодействие с полета на формуляр или извличане на структурирани данни) и се доверявате на източника на уеб съдържанието, можете все още да продължите със старото поведение на анализиране за всеки конкретен случай. В интерактивни сесии това просто означава да изберете "Да " при подканата за потвърждение, за да позволите операцията да продължи. Ще получавате напомняне за риска за защитата всеки път, когато го правите. Действията без параметъра -UseBasicParsing трябва да са ограничени до сценарии, в които се доверявате напълно на уеб съдържанието (например вътрешни уеб приложения под ваш контрол или известни безопасни уеб сайтове).

Важно

Този подход не се препоръчва за скриптове, които се изпълняват с ненадеждно или публично уеб съдържание, тъй като отново въвежда риска от негласно изпълнение на скрипта, който тази актуализация е предназначена да смекчи. Също така, за неинтерактивна автоматизация няма вграден механизъм за автоматично съгласие за подкана, така че разчитането на пълен анализ в скриптове не е препоръчително (освен че е рисковано). Използвайте тази опция пестеливо и само като временна мярка.

Често задавани въпроси

Засяга ли тази промяна моите скриптове?

В повечето случаи скриптовете, които изтеглят файлове или извличат уеб съдържание като текст, ще продължат да работят. За да избегнете подканата, добавете параметъра -UseBasicParsing .

Скриптове, използващи разширено анализиране на HTML (като формуляри или DOM), може да увиснат или да извеждат необработени данни вместо структурирани обекти; Ще трябва да преминете към основен анализ или да промените своя скрипт, за да обработвате съдържанието по различен начин.

Как мога да избегна новата подкана за потвърждение в моите скриптове?

Винаги използвайте параметъра -UseBasicParsing с командата Invoke-WebRequest в скриптове на PowerShell, за да осигурите безопасно, неинтерактивно изпълнение.

Изисква ли тази промяна някакво действие за по-старите скриптове?

Да. Скриптовете, които зависят от наследения анализ, трябва да бъдат актуализирани, за да се запишат или да се преструктурират.

Как тази промяна се отразява в "горещо" коригиране и стандартни актуализации?

Промяната в PowerShell е приложима както за стандартните актуализации, така и за актуализациите на бърза поправка, което води до една и съща промяна в поведението.

Тази промяна съответства ли на PowerShell 7?

Да. PowerShell 7 вече използва защитено анализиране по подразбиране.

Какво трябва да направя за скриптове или модули на други разработчици?

Свържете се със собствениците на модули за плановете за поддръжка. Използвайте временно включване за надеждно съдържание по време на мигрирането.

Как да проверя дали средата ми е готова?

За подготовка и проверка на тази промяна ви препоръчваме да:

  • Идентифициране на скриптове с помощта на функциите на DOM.
  • Тествайте автоматизацията с новата настройка по подразбиране.
  • Ограничете записването на старо ниво до надеждни източници.
  • Планирайте преструктуриране за ненадеждно съдържание.