Вихідна дата публікації: 9 грудня 2025 р.
Ідентифікатор KB: 5074596
У цій статті описано зміни, які в першу чергу впливають на корпоративні або ІТ-середовища, де сценарії PowerShell використовуються для автоматизації та отримання веб-вмісту. Люди використання пристроїв в особистих або домашніх настройках зазвичай не потрібно робити жодних дій, оскільки ці сценарії не відрізняються від ІТ-середовищ.
|
Змінити дату |
Змінити опис |
|
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 (також відомої як завиток) в PowerShell 5.1 ініціює запит системи безпеки (якщо спеціальний параметр не використовується). Запит з'явиться в консолі PowerShell із попередженням про ризик виконання сценарію. Це означає, що PowerShell призупиняє попереджати вас про те, що вміст сценарію веб-сторінки може виконуватися у вашій системі під час його обробки. За замовчуванням, якщо натиснути клавішу Enter (або вибрати Ні), операцію буде скасовано з метою безпеки. PowerShell покаже повідомлення про те, що її скасовано через проблеми з безпекою, і запропонує повторно запустити команду за допомогою параметра -UseBasicParsing для безпечної обробки. Якщо вибрати так, PowerShell продовжить аналізувати сторінку за допомогою старого методу (повний аналіз HTML), тобто завантажить вміст і всі вбудовані сценарії, як раніше. По суті, якщо вибрати значення Так, ви приймаєте ризик і дозволяєте виконати команду так, як раніше, при цьому вибравши ні (стандартне значення), дія, яка захищає вас.
-
Використання інтерактивних і сценаріїв: Введення цього запиту насамперед впливає на інтерактивне використання. В інтерактивних сеансах ви побачите попередження та повинні відповісти. Для автоматичних сценаріїв (неітерактивних сценаріїв, наприклад запланованих завдань або трубопроводів CI) цей запит може спричинити зависання сценарію під час очікування вводу. Щоб уникнути цього, радимо оновити такі сценарії, щоб явно використовувати безпечні параметри (див. нижче), щоб вони не потребуватимуть підтвердження вручну.
-
Вжити заходів
Більшість сценаріїв і команд PowerShell, які використовують команду Invoke-WebRequest, і надалі працюватимуть із незначними змінами. Наприклад, сценарії, які завантажують лише вміст або працюють із тілом відповіді як текстом або даними, не впливають і не вимагають змін.
Якщо у вас є сценарії, на які впливає ця зміна, скористайтеся одним із наведених нижче способів.
Для отримання вмісту не потрібно виконувати жодних дій, якщо зазвичай використовується команда 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)) неможливий.
Сценарії або автоматизація, які оброблюють ненадійний або загальнодоступний веб-вміст і потребують обробки html-структур або форм, можуть перепланувати або оновити їх для довгострокової безпеки. Щоб не використовувати PowerShell для аналізу та виконання потенційно небезпечних сценаріїв веб-сторінок, ви можете:
-
Використовуйте альтернативні методи аналізу або бібліотеки (наприклад, розцінюйте вміст веб-сторінки як звичайний текст або XML, використовуючи бібліотеки аналізу regex або XML/HTML, які не виконують сценарії).
-
Модернізуйте свій підхід до взаємодії з Інтернетом, можливо, за допомогою новішої версії PowerShell Core (версії 7.x або пізнішої), яка не залежить від обробника Internet Explorer і уникає виконання сценаріїв або за допомогою спеціалізованих інструментів веб-зішкрібу, які надійніше обробляють вміст. Обмеження залежності від певних функцій Internet Explorer, оскільки браузер Internet Explorer вилучено. Плануйте переписати частини сценаріїв, які залежать від цих функцій, щоб вони могли працювати в середовищі, де веб-вміст обробляється безпечно.
-
Invoke-WebRequest in PowerShell Core (версія 7.x або пізніша) не підтримує аналіз DOM за допомогою компонентів Internet Explorer. Аналіз за замовчуванням безпечно отримує вміст без виконання сценарію.
-
-
Мета реструктуризації полягає в досягненні необхідної функціональності, не піддаючи себе загрозам безпеці, тим самим охоплюючи безпечніші стандартні параметри, введені цією зміною.
Якщо вам потрібно використовувати повні можливості аналізу HTML команди Invoke-WebRequest (наприклад, взаємодіяти з полями форми або зішкрібати структуровані дані) і ви довіряєте джерелу веб-вмісту, ви все одно можете продовжувати застарілу поведінку аналізу в окремих випадках. В інтерактивних сеансах це просто означає, що в запиті на підтвердження натисніть кнопку Так, щоб продовжити операцію. Щоразу, коли ви це робитимете, ви отримуватимете нагадування про загрозу безпеці. Продовження без параметра -UseBasicParsing має обмежуватися сценаріями, у яких ви повністю довіряєте веб-вмісту (наприклад, внутрішнім веб-програмам під вашим контролем або відомим безпечним веб-сайтам).
Увага!: Цей підхід не рекомендовано використовувати для сценаріїв, які виконуються з ненадійним або загальнодоступним веб-вмістом, оскільки він повторно вводить ризик виконання сценаріїв без звуку, який має на меті зменшити. Крім того, для неірантерактивної автоматизації немає вбудованого механізму автоматичної згоди на запит, тому не бажано покладатися на повний аналіз у сценаріях (на додачу до ризиків). Використовуйте цей параметр економно і лише як тимчасовий захід.
Запитання й відповіді
Здебільшого сценарії, які завантажують файли або отримують веб-вміст як текст, працюватимуть і надалі. Щоб уникнути запиту, додайте параметр -UseBasicParsing.
Сценарії, що використовують розширений аналіз HTML (наприклад, форми або DOM), можуть зависати або виводити необроблені дані замість структурованих об'єктів. Щоб обробляти вміст по-різному, потрібно перейти до базового аналізу або змінити сценарій.
Завжди використовуйте параметр -UseBasicParsing із командою Invoke-WebRequest у сценаріях PowerShell, щоб забезпечити безпечне, неітерактивне виконання.
Так. Сценарії, які залежать від аналізу застарілих версій, потрібно оновити, щоб приєднатися до програми або на рефакторі.
Зміна в PowerShell застосовується як до стандартних оновлень, так і до оновлень hotpatch, що призводить до однакової зміни поведінки.
Так. PowerShell 7 уже використовує безпечний аналіз за замовчуванням.
Зверніться до власників модулів, щоб отримати плани підтримки. Тимчасово використовуйте функцію "Opt-in" для надійного вмісту під час перенесення.
Щоб підготуватися до цієї зміни та перевірити її, радимо:
-
Визначте сценарії за допомогою функцій DOM.
-
Автоматизація тестування з новим стандартним значенням.
-
Обмежте застарілу функцію для надійних джерел.
-
Планування реструктуризації ненадійного вмісту.