PowerShell 5.1: Invoke-WebRequest: Verhindern der Skriptausführung aus Webinhalten

Gilt für
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

Hinweis

  • Ursprüngliches Veröffentlichungsdatum: 9. Dezember 2025
  • KB-ID: 5074596

Hinweis

In diesem Artikel wird eine Änderung beschrieben, die sich hauptsächlich auf unternehmens- oder IT-verwaltete Umgebungen auswirkt, in denen PowerShell-Skripts zur Automatisierung und zum Abrufen von Webinhalten verwendet werden. People, die Geräte in privaten oder heimischen Umgebungen verwenden, müssen in der Regel keine Maßnahmen ergreifen, da solche Szenarien außerhalb von IT-verwalteten Umgebungen ungewöhnlich sind.

Änderungsprotokoll
Datum ändern Beschreibung ändern
20. Dezember 2025
  • Die "Sicherheitswarnung" wurde dem Abschnitt "Zusammenfassung" hinzugefügt.
  • Der folgende Absatz wurde aus Gründen der Klarheit zum Abschnitt "Zusammenfassung" hinzugefügt:

    Der PowerShell-Befehl Invoke-WebRequest sendet eine HTTP- oder HTTPS-Anforderung an einen Webserver und gibt die Ergebnisse zurück. Dieser Artikel dokumentiert eine Härtungsänderung, bei der Windows PowerShell 5.1 absichtlich eine Sicherheitsbestätigungsaufforderung anzeigt, wenn der Befehl Invoke-WebRequest zum Abrufen von Webseiten ohne spezielle Parameter verwendet wird. Dieses Verhalten tritt auf, nachdem unterstützte Windows-Clients und -Server die am und nach dem 9. Dezember 2025 veröffentlichten Windows-Updates installiert haben. Weitere Informationen finden Sie unter CVE-2025-54100.
  • Die folgenden Aufzählungspunkte wurden zu "Für automatisierte Skripts oder geplante Aufgaben" in Option 1 des Abschnitts "Maßnahme ergreifen" hinzugefügt.
    • Für Skripts, die mit der Option "no-profile" ausgeführt werden: Wenn das Skript viele Vorkommen der Invoke-WebRequest Aufrufe aufweist, deklarieren Sie $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true oben im Skript.
    • Wenn Invoke-WebRequest mit dem Parameter -UseBasicParsing verwendet wird, ist die Analyse des vollständigen Dokumentobjektmodells (DOM) mit Internet Explorer-Komponenten (HTMLDocument Interface (mshtml)) nicht möglich.
  • Dem Aufzählungspunkt "Modernisieren Sie Ihren Ansatz für Webinteraktionen" wurde der folgende Aufzählungspunkt hinzugefügt, z. B. zu Option 2 im Abschnitt "Maßnahmen ergreifen".
    • Invoke-Webrequest in PowerShell Core (Version 7.x oder höher) unterstützt keine DOM-Analyse mit Internet Explorer-Komponenten. Die standardmäßige Analyse ruft den Inhalt sicher ohne Skriptausführung ab.

Zusammenfassung

Windows PowerShell 5.1 zeigt jetzt eine Sicherheitsbestätigungsaufforderung an, wenn der Befehl "Invoke-WebRequest" zum Abrufen von Webseiten ohne spezielle Parameter verwendet wird.

Hinweis

  • Sicherheitswarnung: Das Skriptausführungsrisiko analysiert Invoke-WebRequest den Inhalt der Webseite. Skriptcode auf der Webseite kann ausgeführt werden, wenn die Seite analysiert wird.
  • EMPFOHLENE MASSNAHME: Verwenden Sie die Befehlszeilenoption -UseBasicParsing, um die Ausführung von Skriptcode zu vermeiden.
  • Möchten Sie fortfahren?

Diese Eingabeaufforderung warnt davor, dass Skripts auf der Seite während der Analyse ausgeführt werden könnten, und empfiehlt die Verwendung der
-UseBasicParsing-Parameter , um jegliche Skriptausführung zu vermeiden. Benutzer müssen den Vorgang fortsetzen oder abbrechen. Diese Änderung trägt zum Schutz vor bösartigen Webinhalten bei, da vor potenziell riskanten Aktionen die Zustimmung der Benutzer erforderlich ist.

Der PowerShell-Befehl Invoke-WebRequest sendet eine HTTP- oder HTTPS-Anforderung an einen Webserver und gibt die Ergebnisse zurück. Dieser Artikel dokumentiert eine Änderung der Härtung, bei der Windows PowerShell 5.1 absichtlich eine Sicherheitsbestätigungsaufforderung anzeigt, wenn der Befehl Invoke-WebRequest zum Abrufen von Webseiten ohne spezielle Parameter verwendet wird. Dieses Verhalten tritt auf, nachdem unterstützte Windows-Clients und -Server Windows-Updates installiert haben, die am und nach dem 9. Dezember 2025 veröffentlicht wurden. Weitere Informationen finden Sie unter CVE-2025-54100.

Was hat sich geändert?

  • Bisheriges Verhalten

    • Analyse des vollständigen Dokumentobjektmodells (DOM) mithilfe von Internet Explorer-Komponenten (HTMLDocument Interface (mshtml)), die Skripts aus heruntergeladenen Inhalten ausführen können.
  • Neues Verhalten

    • Sicherheitsbestätigungsaufforderung Nach der Installation der Windows-Updates, die am oder nach dem 9. Dezember 2025 veröffentlicht wurden, wird durch das Ausführen des Befehls Invoke-WebRequest (auch als curl bezeichnet) in PowerShell 5.1 eine Sicherheitsaufforderung ausgelöst (wenn kein spezieller Parameter verwendet wird). In der PowerShell-Konsole wird die Eingabeaufforderung mit einer Warnung über das Skriptausführungsrisiko angezeigt. 

      Dies bedeutet, dass PowerShell angehalten wird, um Sie zu warnen, dass der Webseitenskriptinhalt ohne Vorsichtsmaßnahmen auf Ihrem System ausgeführt werden könnte, wenn er verarbeitet wird. Wenn Sie die EINGABETASTE drücken (oder Nein wählen), wird der Vorgang standardmäßig aus Sicherheitsgründen abgebrochen. PowerShell zeigt eine Meldung an, dass es aufgrund von Sicherheitsbedenken abgebrochen wurde, und schlägt vor, den Befehl mithilfe des
      -UseBasicParsing-Parameter für sichere Verarbeitung. Wenn Sie "Ja" auswählen, analysiert PowerShell die Seite mit der älteren Methode (vollständiges HTML-Parsing), d. h. der Inhalt und alle eingebetteten Skripts werden wie bisher geladen. Im Wesentlichen bedeutet die Auswahl von Ja , dass Sie das Risiko akzeptieren und zulassen, dass der Befehl wie zuvor ausgeführt wird, während die Auswahl von Nein (Standardeinstellung) die Aktion beendet, um Sie zu schützen.

    • Interaktive vs. skriptbasierte Verwendung: Die Einführung dieses Prompts wirkt sich hauptsächlich auf die interaktive Nutzung aus. In interaktiven Sitzungen sehen Sie die Warnung und müssen reagieren. Bei automatisierten Skripts (nicht interaktive Szenarien wie geplante Aufgaben oder CI-Pipelines) kann diese Eingabeaufforderung dazu führen, dass das Skript beim Warten auf die Eingabe hängen bleibt. Um dies zu vermeiden, empfehlen wir, solche Skripte so zu aktualisieren, dass sie explizit sichere Parameter verwenden (siehe unten), um sicherzustellen, dass sie nicht manuell bestätigt werden müssen.

In Aktion treten

Die meisten PowerShell-Skripts und -Befehle, die den Befehl Invoke-WebRequest verwenden, funktionieren weiterhin mit nur wenigen oder gar keinen Änderungen. Beispielsweise sind Skripts, die nur Inhalte herunterladen oder mit dem Antworttext oder Daten arbeiten, nicht betroffen und erfordern keine Änderungen.

Wenn Sie über Skripts verfügen, die von dieser Änderung betroffen sind, verwenden Sie einen der folgenden Ansätze.

Option 1: Verwenden des neuen sicheren Standardwerts

Zum Abrufen von Inhalten ist keine Aktion erforderlich, wenn Sie den Befehl Invoke-WebRequest in der Regel zum Abrufen von Inhalten verwenden (z. B. zum Herunterladen von Dateien oder zum Lesen von statischem Text) und nicht auf erweiterte Websiteinteraktionen oder HTML-DOM-Analyse angewiesen sind. Das neue Standardverhalten ist sicherer – in Webinhalte eingebettete Skripts werden nicht ohne Ihre Zustimmung ausgeführt – und dies ist die empfohlene Konfiguration für die meisten Szenarien.

Für die interaktive Verwendung antworten Sie einfach mit Nein auf die neue Sicherheitsaufforderung (oder drücken Sie die Eingabetaste , um die Standardeinstellung zu übernehmen), und führen Sie den Befehl erneut mit dem Parameter -UseBasicParsing aus, um den Inhalt sicher abzurufen. Dadurch wird die Ausführung von Skriptcode auf der abgerufenen Seite vermieden. Wenn Sie Webinhalte häufig interaktiv abrufen, sollten Sie den Parameter -UseBasicParsing standardmäßig in Ihren Befehlen verwenden, um die Eingabeaufforderung vollständig zu überspringen und maximale Sicherheit zu gewährleisten.

Aktualisieren Sie automatisierte Skripts oder geplante Aufgaben so, dass sie den Parameter -UseBasicParsing für Invoke-WebRequest-Aufrufe enthalten. Dadurch wird das sichere Verhalten vorausgewählt, sodass die Eingabeaufforderung nicht angezeigt wird und das Skript ohne Unterbrechung weiter ausgeführt wird. Auf diese Weise stellen Sie sicher, dass Ihre Automatisierung nach dem Update nahtlos ausgeführt wird, während Sie weiterhin von der verbesserten Sicherheit profitieren.

  • Für Skripts, die mit der Option -NoProfile ausgeführt werden: Wenn das Skript viele Aufrufe von Invoke-WebRequest enthält, deklarieren Sie $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true oben im Skript.
  • Wenn Invoke-WebRequest mit dem Parameter -UseBasicParsing verwendet wird, ist die Analyse des vollständigen Dokumentobjektmodells (DOM) mit Internet Explorer-Komponenten (HTMLDocument Interface (mshtml)) nicht möglich.
Option 2: Umgestalten von Skripts für langfristige Sicherheit

Bei Skripten oder Automatisierungen, die mit nicht vertrauenswürdigen oder öffentlichen Webinhalten arbeiten und die Verarbeitung von HTML-Strukturen oder -Formularen erfordern, sollten Sie diese aus Gründen der langfristigen Sicherheit umgestalten oder aktualisieren. Anstatt sich auf PowerShell zum Analysieren und Ausführen potenziell gefährlicher Webseitenskripts zu verlassen, können Sie:

  • Verwenden Sie alternative Analysemethoden oder -bibliotheken (behandeln Sie den Webseiteninhalt beispielsweise als Nur-Text oder XML, indem Sie Regex- oder XML/HTML-Analysebibliotheken verwenden, die keine Skripts ausführen).

  • Modernisieren Sie Ihren Ansatz für Webinteraktionen, indem Sie vielleicht neuere PowerShell Core (Version 7.x oder höher) verwenden, die nicht von der Internet Explorer-Engine abhängig ist und das Ausführen von Skripts vermeidet, oder indem Sie spezielle Web-Scraping-Tools verwenden, die Inhalte sicherer verarbeiten. Beschränken Sie die Abhängigkeit von Internet Explorer-spezifischen Features, da Internet Explorer veraltet ist. Planen Sie, Teile Ihrer Skripts, die von diesen Features abhängig sind, umzuschreiben, damit sie in einer Umgebung funktionieren können, in der Webinhalte sicher verarbeitet werden.

    • Invoke-WebRequest in PowerShell Core (Version 7.x oder höher) unterstützt keine DOM-Analyse mit Internet Explorer-Komponenten. Die standardmäßige Analyse ruft den Inhalt sicher ohne Skriptausführung ab.
  • Das Ziel beim Refactoring besteht darin, die erforderliche Funktionalität zu erreichen, ohne sich Sicherheitsrisiken auszusetzen, und dadurch die durch diese Änderung eingeführten sichereren Standardwerte zu nutzen.

Option 3: Aktivieren des Legacy-Verhaltens (nur vertrauenswürdige Szenarien)

Wenn Sie die vollständigen HTML-Analysefunktionen des Befehls Invoke-WebRequest verwenden müssen (z. B. Interaktion mit Formularfeldern oder Scraping strukturierter Daten) und der Quelle des Webinhalts vertrauen, können Sie weiterhin von Fall zu Fall mit dem alten Analyseverhalten fortfahren. In interaktiven Sitzungen bedeutet dies einfach, dass Sie bei der Bestätigungsaufforderung Ja auswählen, um den Vorgang fortzusetzen. Jedes Mal, wenn Sie dies tun, erhalten Sie eine Erinnerung an das Sicherheitsrisiko. Wenn Sie ohne den Parameter -UseBasicParsing fortfahren, sollte dies auf Szenarien beschränkt sein, in denen Sie dem Webinhalt voll und ganz vertrauen (z. B. interne Webanwendungen unter Ihrer Kontrolle oder bekannte sichere Websites).

Wichtig

Dieser Ansatz wird nicht für Skripte empfohlen, die für nicht vertrauenswürdige oder öffentliche Webinhalte ausgeführt werden, da dadurch das Risiko der automatischen Skriptausführung, das durch dieses Update verringert werden soll, wieder eingeführt wird. Außerdem gibt es für die nicht-interaktive Automatisierung keinen integrierten Mechanismus, um der Eingabeaufforderung automatisch zuzustimmen. Daher ist es nicht ratsam, sich auf die vollständige Analyse in Skripts zu verlassen (und es ist nicht riskant). Verwenden Sie diese Option sparsam und nur als vorübergehende Maßnahme.

Häufig gestellte Fragen

Wirkt sich diese Änderung auf meine Skripts aus?

In den meisten Fällen funktionieren Skripts, die Dateien herunterladen oder Webinhalte als Text abrufen, weiterhin. Um die Eingabeaufforderung zu vermeiden, fügen Sie den Parameter -UseBasicParsing hinzu.

Skripte, die erweitertes HTML-Parsing verwenden (z. B. Formulare oder DOM), können Rohdaten anstelle von strukturierten Objekten hängen lassen oder ausgeben. Sie müssen zur grundlegenden Analyse wechseln oder Ihr Skript ändern, um Inhalte anders zu behandeln.

Wie kann ich die neue Bestätigungsaufforderung in meinen Skripts vermeiden?

Verwenden Sie in PowerShell-Skripts immer den Parameter -UseBasicParsing zusammen mit dem Befehl Invoke-WebRequest, um eine sichere, nicht interaktive Ausführung sicherzustellen.

Erfordert diese Änderung Aktionen für Legacyskripts?

Ja. Skripts, die von der Legacyanalyse abhängig sind, müssen aktualisiert werden, um sie zu aktivieren oder umzugestalten.

Wie spiegelt sich diese Änderung in Hotpatch- und Standardupdates wider?

Die Änderung in PowerShell gilt sowohl für Standardupdates als auch für Hotpatchupdates, was zu derselben Verhaltensänderung führt.

Steht diese Änderung im Einklang mit PowerShell 7?

Ja. PowerShell 7 verwendet bereits standardmäßig die sichere Analyse.

Was soll ich mit Skripten oder Modulen von Drittanbietern tun?

Wenden Sie sich an Modulbesitzer, um Supportpläne zu erhalten. Verwenden Sie während der Migration vorübergehend Opt-in für vertrauenswürdige Inhalte.

Gewusst wie überprüfe ich, ob meine Umgebung bereit ist?

Zur Vorbereitung und Überprüfung dieser Änderung wird Folgendes empfohlen:

  • Identifizieren von Skripts mithilfe von DOM-Features.
  • Testautomatisierung mit dem neuen Standardwert.
  • Beschränken Sie die Opt-in-Versionen für Vorgängerversionen auf vertrauenswürdige Quellen.
  • Planen Sie das Refactoring für nicht vertrauenswürdige Inhalte.