
CVE-2026-56164는 온프레미스 Microsoft SharePoint Server에 영향을 미치는 치명적인 인증 누락 취약점입니다. 인증되지 않은 원격 공격자가 네트워크를 통해 권한을 상승시킬 수 있습니다.
Critical (CVSS 9.8) — Microsoft SharePoint Server에서 Farm Administrator로의 비인증 권한 상승
CVE-2026-56164는 Microsoft SharePoint Server에서 발생하는 치명적인 인증 누락 취약점으로, 인증되지 않은 원격 공격자가 Farm Administrator 수준으로 권한을 상승시킬 수 있습니다. 이 취약점은 /_vti_bin/client.svc/ProcessQuery에서 SOAP 요청을 처리하는 Microsoft.Office.Server.UserProfiles 어셈블리에 존재합니다.
X-RequestDigest 헤더를 의도적으로 생략하고 특정 라우팅 헤더를 함께 전송하면, 취약한 서버는 인증되지 않은 요청을 거부하는 대신 상승된 보안 컨텍스트로 대체됩니다. 이를 통해 익명 공격자는 사이트 모음, 사용자, 팜 구성을 열거하고, 관리자를 추가하며, 명령을 실행할 수 있습니다.
CISA KEV: 이 취약점은 실제 환경에서 활발하게 악용되고 있어 CISA의 Known Exploited Vulnerabilities Catalog(KEV)에 등재되었습니다.
| 필드 | 값 |
|---|---|
| CVE ID | CVE-2026-56164 |
| 심각도 | CRITICAL |
| CVSS 3.1 | 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CWE | CWE-306: 중요 기능에 대한 인증 누락 |
| 영향 | Farm Administrator로의 비인증 권한 상승 |
| 악용 상태 | 활발한 악용 (CISA KEV) |
| MITRE ATT&CK | T1190 (공개 웹 애플리케이션 악용) |
Microsoft.Office.Server.UserProfiles 처리기는 /_vti_bin/client.svc/ProcessQuery에서 SOAP 요청을 처리합니다. 정상적인 운영 시 SharePoint는 X-RequestDigest 헤더를 검증하여 인증 컨텍스트를 확인합니다. 그러나 다음과 같은 검증 우회가 존재합니다:
X-RequestDigest가 없고 특정 라우팅 헤더가 존재하는 경우// Vulnerable: If digest is missing, handler checks routing headers
if (string.IsNullOrEmpty(digest) && CheckSpecialRoutingHeaders(context)) {
// Bypasses standard identity validation → elevated admin session
InitializeElevatedSecurityContext(context);
} else {
ValidateRequestDigest(digest); // Normal path
}
// Patched: Digest validation is unconditional
if (string.IsNullOrEmpty(digest)) {
context.Response.StatusCode = 401;
throw new UnauthorizedAccessException("Missing request digest.");
}
ValidateRequestDigest(digest);
InitializeStandardSecurityContext(context);
| 제품 | 영향을 받는 버전 | 패치된 버전 |
|---|---|---|
| SharePoint Enterprise Server 2016 | 패치 이전의 모든 16.0.x | 16.0.5561.1001 |
| SharePoint Server 2019 | 패치 이전의 모든 16.0.x | 16.0.10417.20175 |
| SharePoint Server Subscription Edition | 패치 이전의 모든 16.0.x | 16.0.19725.20434 |
영향을 받지 않음: SharePoint Online (Microsoft 365)
┌─────────────────────────────────────────────────────────────────────┐
│ CVE-2026-56164 Exploit Toolkit │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────┐ ┌─────────────────┐ ┌────────────────────┐ │
│ │ scan.py │────▶│ HTTP Fingerprint│ │ payload_gen.py │ │
│ │ Scanner │ │ + Version Check │ │ │ │
│ └────────────┘ └─────────────────┘ │ ┌──────────────┐ │ │
│ │ │ │ CSOM Payloads│ │ │
│ │ Reports: │ │ (detection, │ │ │
│ │ • SharePoint detected? │ │ enum, │ │ │
│ │ • Server version │ │ elevate, │ │ │
│ │ • Vulnerable? │ │ execute) │ │ │
│ │ • Auth bypass confirmed? │ └──────────────┘ │ │
│ ▼ │ ┌──────────────┐ │ │
│ ┌────────────┐ ┌─────────────────┐ │ │ SOAP Payloads│ │ │
│ │ exploit.py │────▶│ HTTP Request │ │ │ (admin, exec)│ │ │
│ │ Exploit │ │ Delivery │ │ └──────────────┘ │ │
│ └────────────┘ └─────────────────┘ │ ┌──────────────┐ │ │
│ │ │ │ Bypass │ │ │
│ │ ┌──────────────────────┐ │ │ Headers │ │ │
│ ├─▶│ MODE: detect │ │ │ (routing) │ │ │
│ │ │ Safe, non-intrusive │ │ └──────────────┘ │ │
│ │ └──────────────────────┘ │ ┌──────────────┐ │ │
│ │ ┌──────────────────────┐ │ │ HTTP Request │ │ │
│ ├─▶│ MODE: enumerate │ │ │ Builder │ │ │
│ │ │ Sites, users, config │ │ └──────────────┘ │ │
│ │ └──────────────────────┘ └────────────────────┘ │
│ │ ┌──────────────────────┐ │
│ ├─▶│ MODE: elevate │ ┌──────────────────────┐ │
│ │ │ Add site/farm admin │ │ Target SharePoint │ │
│ │ └──────────────────────┘ │ /_vti_bin/client.svc │ │
│ │ ┌──────────────────────┐ │ /_vti_bin/SPAdmin │ │
│ └─▶│ MODE: execute │ └──────────────────────┘ │
│ │ System commands │ │
│ └──────────────────────┘ │
│ │ ┌──────────────────────┐ │
│ └─▶│ MODE: full │ detect→enum→elevate→execute │
│ └──────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────┐
│ Start Scan │
└──────┬──────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ Target reachable?│──────────▶│ Skip │
└──────┬───────────┘ └─────────────┘
│ Yes
▼
┌──────────────────┐
│ Send HTTP GET │
│ to common ports │
│ (443,80,8080, │
│ 8443) │
└──────┬───────────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ SharePoint │──────────▶│ Not SP │
│ fingerprint? │ └─────────────┘
│ (MSST header, │
│ _vti_bin, │
│ suitebar, etc.) │
└──────┬───────────┘
│ Yes
▼
┌──────────────────┐
│ Extract version │
│ from MSST header │
│ / response body │
└──────┬───────────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ Version in │──────────▶│ Not │
│ vulnerable │ │ vulnerable │
│ range? │ └─────────────┘
└──────┬───────────┘
│ Yes
▼
┌──────────────────┐
│ Test auth bypass │
│ (CSOM req w/o │
│ digest + bypass │
│ headers) │
└──────┬───────────┘
│
▼
┌──────────────────┐
│ Report: │
│ • VULNERABLE │
│ • Version │
│ • Bypass status │
│ • SSL cert info │
└──────────────────┘