Oryginalna data publikacji: 9 grudnia 2025 r.
Identyfikator bazy wiedzy: 5074596
W tym artykule opisano zmianę, która ma przede wszystkim wpływ na środowiska przedsiębiorstwa lub informatyczne, w których skrypty programu PowerShell są używane do automatyzacji i pobierania zawartości sieci Web. Osoby korzystania z urządzeń w ustawieniach osobistych lub domowych na ogół nie trzeba podejmować żadnych działań, ponieważ te scenariusze są rzadko spotykane poza środowiskami zarządzanymi przez dział informatyczny.
|
Zmień datę |
Zmień opis |
|
20 grudnia 2025 r. |
|
Podsumowanie
Windows PowerShell 5.1 wyświetla teraz monit o potwierdzenie zabezpieczeń podczas używania polecenia Invoke-WebRequest w celu uzyskiwania zdalnego dostępu do stron sieci Web bez specjalnych parametrów.
Ostrzeżenie o zabezpieczeniach: Invoke-WebRequest ryzyka wykonywania skryptu analizuje zawartość strony sieci Web. Kod skryptu na stronie sieci Web może zostać uruchomiony po przeanalizowaniu strony.
ZALECANE DZIAŁANIE: Użyj przełącznika -UseBasicParsing, aby uniknąć wykonywania kodu skryptu.
Czy chcesz kontynuować?
Ten monit ostrzega, że skrypty na stronie mogą być uruchamiane podczas analizowania i zaleca użycie parametru -UseBasicParsing w celu uniknięcia wykonywania skryptu. Użytkownicy muszą wybrać opcję kontynuowania lub anulowania operacji. Ta zmiana pomaga chronić przed złośliwą zawartością sieci Web, wymagając zgody użytkownika przed potencjalnie ryzykownych działań.
Polecenie Invoke-WebRequest programu PowerShell powoduje utworzenie żądania HTTP lub HTTPS do serwera sieci Web i zwrócenie wyników. W tym artykule opisano zaostrzającą się zmianę polegającą na tym, że Windows PowerShell 5.1 celowo wyświetla monit o potwierdzenie zabezpieczeń podczas używania polecenia Invoke-WebRequest do uzyskiwania zdalnego dostępu do stron sieci Web bez specjalnych parametrów. To zachowanie występuje po zainstalowaniu przez obsługiwanych klientów i serwerów systemu Windows systemu Windows Aktualizacje wydanych 9 grudnia 2025 r. i później. Aby uzyskać więcej informacji, zobacz CVE-2025-54100.
Co się zmieniło?
-
Poprzednie zachowanie
-
Analiza modelu Full Document Object Model (DOM) przy użyciu składników programu Internet Explorer (HTMLDocument Interface (mshtml)), które mogą wykonywać skrypty z pobranej zawartości.
-
-
Nowe zachowanie
-
Monit o potwierdzenie zabezpieczeń: Po zainstalowaniu aktualizacji systemu Windows wydanych 9 grudnia 2025 r. lub później uruchomienie polecenia Invoke-WebRequest (nazywanego również zwijaniem) w programie PowerShell 5.1 spowoduje wyzwolenie monitu zabezpieczeń (gdy nie jest używany żaden specjalny parametr). Monit zostanie wyświetlony w konsoli programu PowerShell z ostrzeżeniem dotyczącym ryzyka wykonania skryptu. Oznacza to, że program PowerShell wstrzymuje się, aby ostrzegać, że bez środków ostrożności zawartość skryptu strony sieci Web może być wykonywana w systemie podczas przetwarzania. Jeśli naciśniesz Enter (lub wybierzesz pozycję Nie), operacja zostanie anulowana ze względów bezpieczeństwa. Program PowerShell wyświetli komunikat o jego anulowaniu ze względu na problemy z zabezpieczeniami i zasugeruje ponowne uruchomienie polecenia przy użyciu parametru -UseBasicParsing w celu bezpiecznego przetwarzania. Jeśli wybierzesz pozycję Tak, program PowerShell rozpocznie analizowanie strony przy użyciu starszej metody (pełnej analizy HTML), co oznacza, że załaduje zawartość i wszelkie osadzone skrypty, jak to było wcześniej. Zasadniczo wybranie pozycji Tak oznacza, że akceptujesz ryzyko i zezwalasz na uruchamianie polecenia tak jak wcześniej, wybierając pozycję Nie (ustawienie domyślne), aby cię chronić.
-
Interakcyjne a używane skrypty: Wprowadzenie tego monitu wpływa przede wszystkim na interakcyjne użytkowanie. Podczas sesji interakcyjnych zobaczysz ostrzeżenie i będziesz musiał odpowiedzieć. W przypadku skryptów zautomatyzowanych (scenariuszy nieinterakcyjnych, takich jak zaplanowane zadania lub potoki CI) ten monit może spowodować zawieszenie skryptu podczas oczekiwania na dane wejściowe. Aby tego uniknąć, zalecamy zaktualizowanie takich skryptów w celu jawnego użycia bezpiecznych parametrów (patrz poniżej), zapewniając, że nie wymagają one ręcznego potwierdzenia.
-
Podejmij działanie
Większość skryptów i poleceń programu PowerShell używających polecenia Invoke-WebRequest będzie nadal działać z niewielkimi modyfikacjami lub bez nich. Na przykład skrypty, które pobierają tylko zawartość lub działają z treścią odpowiedzi jako tekst lub dane, nie mają wpływu i nie wymagają żadnych zmian.
Jeśli masz skrypty, których dotyczy ta zmiana, użyj jednej z poniższych metod.
W przypadku pobierania zawartości nie jest wymagane żadne działanie, jeśli typowe użycie polecenia Invoke-WebRequest polega na pobieraniu zawartości (na przykład pobieraniu plików lub czytaniu tekstu statycznego) i nie polegasz na zaawansowanej interakcji z witryną ani analizowaniu HTML DOM. Nowe zachowanie domyślne jest bezpieczniejsze — skrypty osadzone w zawartości sieci Web nie będą uruchamiane bez Twojej zgody — i jest to zalecana konfiguracja w większości scenariuszy.
W przypadku użycia interaktywnego po prostu odpowiedz nie na nowy monit zabezpieczeń (lub naciśnij Enter , aby zaakceptować domyślne) i ponownie uruchom polecenie za pomocą parametru -UseBasicParsing, aby bezpiecznie pobrać zawartość. Pozwoli to uniknąć wykonywania kodu skryptu na stronie zdalnej. Jeśli często pobierasz interakcyjnie zawartość sieci Web, rozważ użycie parametru -UseBasicParsing domyślnie w poleceniach, aby całkowicie pominąć monit i zapewnić maksymalne bezpieczeństwo.
W przypadku zautomatyzowanych skryptów lub zaplanowanych zadań zaktualizuj je, aby uwzględnić parametr -UseBasicParsing w wywołaniachInvoke-WebRequest. Spowoduje to wstępne zaznaczenie bezpiecznego zachowania, dzięki czemu monit nie będzie wyświetlany, a skrypt będzie nadal działać bez zakłóceń. Dzięki temu można zapewnić bezproblemowe działanie automatyzacji po aktualizacji, a jednocześnie korzystać z ulepszonych zabezpieczeń.
-
W przypadku skryptów uruchamianych z opcją -NoProfile: Jeśli skrypt ma wiele wystąpień wywołań Invoke-WebRequest, zadeklaruj $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true u góry skryptu.
-
Gdy funkcja Invoke-WebRequest jest używana z parametrem -UseBasicParsing , analizowanie modelu Full Document Object Model (DOM) przy użyciu składników programu Internet Explorer (HTMLDocument Interface (mshtml)) nie jest możliwe.
W przypadku skryptów lub automatyzacji, które zajmują się niezaufaną lub publiczną zawartością sieci Web i wymagają przetwarzania struktur lub formularzy HTML, rozważ ich refaktoryzowanie lub zaktualizowanie w celu długoterminowego bezpieczeństwa. Zamiast polegać na programie PowerShell do analizowania i uruchamiania potencjalnie niebezpiecznych skryptów stron internetowych, możesz:
-
Użyj alternatywnych metod analizowania lub bibliotek (na przykład potraktuj zawartość strony sieci Web jako zwykły tekst lub plik XML, używając bibliotek analizy regex lub XML/HTML, które nie wykonują skryptów).
-
Zmodernizuj swoje podejście do interakcji w sieci Web, być może używając nowszego programu PowerShell Core (wersja 7.x lub nowsza), który nie zależy od aparatu programu Internet Explorer i unika uruchamiania skryptów lub za pomocą specjalistycznych narzędzi do skrobania stron internetowych, które obsługują zawartość bezpieczniej. Ogranicz poleganie na funkcjach specyficznych dla programu Internet Explorer, ponieważ program Internet Explorer jest przestarzały. Zaplanuj ponowne zapisywanie części skryptów zależnych od tych funkcji, aby mogły one działać w środowisku, w którym zawartość sieci Web jest bezpiecznie obsługiwana.
-
Funkcja Invoke-WebRequest w programie PowerShell Core (wersja 7.x lub nowsza) nie obsługuje analizowania DOM przy użyciu składników programu Internet Explorer. Jego domyślna analiza będzie bezpiecznie pobierać zawartość bez wykonywania skryptu.
-
-
Celem refactoringu jest osiągnięcie potrzebnej funkcjonalności bez narażania się na zagrożenia bezpieczeństwa, obejmując tym samym bezpieczniejsze ustawienia domyślne wprowadzone przez tę zmianę.
Jeśli masz określoną potrzebę używania pełnych funkcji analizy HTML polecenia Invoke-WebRequest (takich jak interakcja z polami formularza lub skrobanie danych strukturalnych) i ufasz źródłom zawartości sieci Web, możesz kontynuować starą analizę w poszczególnych przypadkach. W sesjach interakcyjnych oznacza to po prostu wybranie pozycji Tak w wierszu potwierdzenia, aby zezwolić na kontynuowanie operacji. Za każdym razem otrzymasz przypomnienie o zagrożeniu bezpieczeństwa. Kontynuowanie bez parametru -UseBasicParsing powinno być ograniczone do scenariuszy, w których zawartość sieci Web jest w pełni zaufana (na przykład wewnętrzne aplikacje sieci Web pod Twoją kontrolą lub znane bezpieczne witryny internetowe).
Ważne: Ta metoda nie jest zalecana w przypadku skryptów uruchamianych w stosunku do niezaufanej lub publicznej zawartości sieci Web, ponieważ powoduje ponowne wprowadzenie ryzyka wykonywania skryptu w trybie dyskretnym, ponieważ ta aktualizacja ma na celu ograniczenie tego ryzyka. Ponadto w przypadku automatyzacji nieinterakcyjnej nie ma wbudowanego mechanizmu automatycznego wyrażania zgody na monit, więc poleganie na pełnej analizie skryptów nie jest wskazane (oprócz ryzyka). Tej opcji należy używać oszczędnie i tylko jako środka tymczasowego.
Często zadawane pytania
W większości przypadków skrypty pobierające pliki lub pobierające zawartość sieci Web jako tekst nadal będą działać. Aby uniknąć monitu, dodaj parametr -UseBasicParsing.
Skrypty korzystające z zaawansowanej analizy JĘZYKA HTML (takie jak formularze lub DOM) mogą zawieszać się lub wyprowadzać nieprzetworzone dane zamiast obiektów strukturalnych. Musisz przełączyć się na podstawową analizę lub zmodyfikować skrypt, aby obsługiwać zawartość w inny sposób.
Zawsze używaj parametru -UseBasicParsing z poleceniem Invoke-WebRequest w skryptach programu PowerShell, aby zapewnić bezpieczne, nieinterakcyjne wykonywanie.
Tak. Skrypty w zależności od starszej analizy muszą zostać zaktualizowane, aby można było włączyć lub odtworzyć.
Zmiana w programie PowerShell ma zastosowanie zarówno do aktualizacji standardowych, jak i aktualizacji hotpatch, co powoduje tę samą zmianę zachowania.
Tak. Program PowerShell 7 używa już domyślnie bezpiecznej analizy.
Skontaktuj się z właścicielami modułów, aby uzyskać plany pomocy technicznej. Podczas migracji użyj tymczasowo opcji zgody na zawartość zaufaną.
Aby przygotować się do tej zmiany i sprawdzić jej poprawność, zalecamy:
-
Zidentyfikuj skrypty przy użyciu funkcji DOM.
-
Testowanie automatyzacji przy użyciu nowego ustawienia domyślnego.
-
Ogranicz starsze opcje opt-in do zaufanych źródeł.
-
Zaplanuj refaktoryzowanie niezaufanej zawartości.