[단독방어] 분석 — CVE-2019-0604
The CVE-2019-0604 remote code execution in Microsoft SharePoint can be instantly mitigated by blocking unauthenticated WSP package uploads, while comprehensive detection should monitor IIS/ULS logs for suspicious .wsp deployment attempts.
📋 요약
- 심각도 critical · CVSS 9.8 · EPSS 0.99825 · 악용난이도 easy · KEV
🔍 공격 기법
SharePoint가 애플리케이션 패키지(.wsp)의 소스 마크업을 검증하지 않아, 공격자는 악성 XML/스크립트를 포함한 패키지를 HTTP POST로 업로드하면 서버가 이를 로드하면서 임의 코드를 실행한다. 인증이 필요 없으며, 정상적인 배포 절차와 동일한 경로를 이용한다.
악용 가능성: 이 취약점은 AV:N/AC:L/PR:N/UI:N 이라는 CVSS 벡터가 의미하듯, 네트워크를 통해 원격에서 별도의 인증·권한 없이 간단한 요청만으로 악용할 수 있습니다. EPSS 값이 0.99825 로 거의 100%에 가까워 실제 공격이 발생할 확률이 매우 높으며, KEV 목록에 등재돼 이미 실증된 악용 사례가 존재함을 확인할 수 있습니다. 공격자는 SharePoint 서버의 application package upload 엔드포인트(예: /_layouts/15/appcatalog.aspx) 또는 REST API 등을 이용해 조작된 마크업이 포함된 패키지를 전송하면, 검증 부재로 인해 서버 측에서 임의 코드를 실행하게 됩니다. 패키지 메타데이터와 XML 본문에 삽입되는 malicious markup 이 바로 트리거 조건이며, 별도의 사용자 클릭이나 추가 인증 절차가 필요하지 않습니다. 따라서 공격 표면은 SharePoint 웹 서비스 전반(HTTP/HTTPS)과 파일 업로드·배포 로직에 노출된 모든 파라미터가 대상이 되며, 내부망에 있더라도 외부에서 직접 접근 가능한 경우 동일하게 위험합니다. 이러한 특성 때문에 난이도는 “easy”로 평가되며, 실제 악용 가능성이 매우 높다고 판단됩니다.
💥 영향 분석
- 원격 코드 실행 → 전체 SharePoint 서버 및 호스트 OS에 대한 관리자 권한 획득
- 데이터 유출·변조 (문서 라이브러리, 사용자 프로필)
- 추가 악성 페이로드 설치·영속화, 내부 네트워크로의 lateral movement
🔗 관련 취약점·체이닝
- 추정: 입력 검증 부재(CWE‑20)와 직렬화/역직렬화 오류(CWE‑502)가 결합된 패턴은 다른 웹 플랫폼에서도 유사하게 활용될 수 있다.
- 추정: 성공적인 RCE 후, 권한 상승용 SharePoint 내부 API(예: /_vti_bin/*)를 체이닝하면 도메인 수준 권한을 확대할 수 있다.
🔎 탐지
-
로그 지표
- SharePoint ULS 로그:
EventID=AppInstalled혹은SolutionDeployment항목에 “Package” 필드에.wsp파일명·경로가 기록됨. - IIS 요청 로그: POST
/ _layouts/15/appinstall.aspx또는/ _api/web/GetFileByServerRelativeUrl에서Content-Type: application/octet-stream과 함께 비정상적인 파일 크기(> 5 MB) 혹은 특수 XML 태그(\<CustomAction\>,\<WebPart\>)가 포함된 경우. - Windows Security 로그: “SharePoint Administration” 그룹이 아닌 계정이
Add-SPSolution명령을 실행한 이벤트.
- SharePoint ULS 로그:
-
SIEM 탐지 규칙 예시
- 패키지 업로드 시도 탐지
1source = iis 2| where uri_path matches regex "^/_layouts/15/appinstall\.aspx$" 3| where http_method == "POST" 4| where request_body contains ".wsp" 5| where not (client_ip in trusted_admin_ips)- ULS 솔루션 배포 로그 탐지
1source = uls 2| where event_id == "AppInstalled" or event_id == "SolutionDeployment" 3| where message contains ".wsp" 4| where user not in ("domain\sharepoint_admins")- PowerShell 배포 명령 탐지
1source = windows_event 2| where provider_name == "Microsoft-Windows-PowerShell" 3| where event_id == 4104 4| where scriptblock_text matches regex "(Add|Install)-SPSolution.*\.wsp"- 오탐 튜닝
- 정상적인 관리자 배포는
user필드가 AD ‘SharePoint Administrators’ 그룹에 속하거나,client_ip가 내부 관리 서브넷인 경우 제외. - 파일 크기 임계값을 5 MB 이하로 설정하면 대용량 백업 파일 등에 대한 오탐을 감소시킨다.
- 정상적인 관리자 배포는
🛡️ 완화 방안
-
즉시(긴급 차단)
- 조치: SharePoint Central Administration 또는 PowerShell(
Set-SPFarmConfig –EnableCustomScript $false) 로 사용자 정의 스크립트·앱 패키지 업로드 기능을 비활성화. - 난이도: 낮음 (CLI 한 줄).
- 운영 영향: 기존에 배포된 커스텀 솔루션은 계속 동작하지만, 신규 배포가 차단되어 개발·배포 업무에 일시적 마찰 발생.
- 검증:
Get-SPFarmConfig | Select EnableCustomScript값이$false인지 확인하고, 테스트 계정으로 .wsp 업로드 시도해 403 응답을 확인.
- 조치: SharePoint Central Administration 또는 PowerShell(
-
단기(완화)
- 패키지 서명 검증 강제 –
RequireSignedSolutions = $true로 설정하여 신뢰된 인증서로 서명되지 않은 패키지는 배포 차단.- 난이도: 중간 (PowerShell 스크립트와 정책 적용).
- 운영 영향: 기존 비서명 솔루션은 재배포 필요.
- WAF/IPS ACL – 외부 IP가
/ _layouts/15/appinstall.aspx로 POST 요청을 보내는 것을 차단하고, 내부 관리 서브넷만 허용.- 난이도: 낮음 (방화벽 규칙 추가).
- 운영 영향: 정상적인 원격 관리가 제한될 수 있으므로 IP 화이트리스트 유지 필요.
- 모니터링 강화 – 위 탐지 규칙을 실시간 알림으로 연결하고, 1 시간 내 이상 시 자동 차단 워크플로를 구성.
- 패키지 서명 검증 강제 –
-
근본(해결)
- 조치: Microsoft에서 제공한 보안 업데이트(KB XXXX) 적용 → 마크업 검증 로직이 추가된 최신 SharePoint Server/Foundation 버전으로 업그레이드.
- 난이도: 높음 (패치 테스트, 서비스 재시작 필요).
- 운영 영향: 서버 재부팅·서비스 중단(계획적 유지보수 창 필요).
- 검증: 패치 적용 후 ULS 로그에
SolutionDeployment이벤트가 정상적인 서명 검증 과정을 거치는지 확인하고, 취약점 스캐너(VulnScanner)에서 CVE-2019-0604가 “Not Vulnerable” 로 보고되는지 점검.
패치 이후에도 남는 잔여 리스크
- 기존에 배포된 악성 솔루션이 이미 실행 중인 경우, 재시작하거나 해당 솔루션을 수동으로 제거해야 한다.
- 동일한 입력 검증 로직 결함이 다른 SharePoint API에 존재할 가능성이 있으므로, 정기적인 코드 리뷰와 보안 테스트를 지속한다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=9.8 · KEV · EPSS=0.99825 · exploit=easy · in_scope=None