Забележка
- Първоначална дата на публикуване: 9 декември 2025 г.
- ИД на БЗ: 5074596
Забележка
Тази статия описва промяна, която засяга предимно корпоративни или управлявани от ИТ среди, където скриптовете на PowerShell се използват за автоматизация и извличане на уеб съдържание. People, използващи устройства в лични или домашни настройки, обикновено не трябва да предприемат никакви действия, тъй като тези сценарии са рядкост извън ИТ управлявани среди.
Регистър на промените
| Промяна на датата | Описание на промяната |
|---|---|
| 20 декември 2025 г. |
|
Обобщение
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.
- Тествайте автоматизацията с новата настройка по подразбиране.
- Ограничете записването на старо ниво до надеждни източници.
- Планирайте преструктуриране за ненадеждно съдържание.