[단독방어] 분석 — CVE-2020-1147
CVE-2020-1147 enables remote code execution through malicious XML markup in .NET Framework/SharePoint/Visual Studio, and the highest‑priority action is to immediately block processing of untrusted XML containing DTD declarations at the perimeter.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.93966 · 악용난이도 easy · KEV
🔍 공격 기법
공격자는 특수하게 조작된 XML 파일에 외부 엔터티(예: <!DOCTYPE … SYSTEM "file://…">)를 삽입하고, 해당 파일을 .NET XML 파서가 검증 없이 읽도록 유도합니다. 파서는 악의적인 코드를 로드·실행함으로써 호스트 프로세스(w3wp.exe, devenv.exe 등)의 권한으로 임의 코드 실행(RCE)을 달성합니다. CVSS 벡터 AV:L/AC:L/PR:N/UI:R에 따라 로컬 사용자가 파일을 열거나 SharePoint 업로드 기능을 호출하는 상황이 전제됩니다.
악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:N/UI:R 로 평가되었으며, 실제 공격자는 로컬(예: 파일 업로드·문서 열람) 환경에서 복잡도가 낮고 권한 없이도 악성 XML 마크업을 제공하면 된다 — 사용자가 해당 파일을 열거나 웹 페이지를 조회할 때만 트리거됩니다. EPSS 값이 0.93966 로 매우 높게 측정돼, 실제로 93 % 이상의 확률로 공격이 발생할 가능성이 있음을 의미하고, KEV(Known Exploited Vulnerabilities) 리스트에 등재된 점은 이미 악용 사례가 보고됐다는 강력한 증거입니다. 공격 표면은 .NET Framework, Microsoft SharePoint Server, Visual Studio 가 XML을 파싱하는 모든 엔드포인트이며, 특히 HTTP / HTTPS 기반의 웹 서비스, REST API, 파일 업로드 기능, 그리고 SharePoint 문서 라이브러리와 같은 프로토콜·파라미터가 노출됩니다. 트리거 조건은 공격자가 조작한 XML을 정상적인 입력으로 오인하게 만들고, 서버 측에서 해당 마크업을 검증 없이 처리하도록 유도하는 것입니다. 따라서 피해자는 악성 XML 파일을 열거나 해당 엔드포인트에 접근하기만 하면 원격 코드 실행이 가능해, 공격 난이도가 낮고 악용 가능성이 매우 높음을 알 수
💥 영향 분석
RCE가 성공하면 공격자는
- 해당 서비스 프로세스의 권한으로 시스템 명령 실행 → 전체 서버 장악
- 메모리·디스크에 임시 파일 생성, 악성 DLL 로드 등으로 지속화
- 내부 네트워크로 이동(Lateral Movement) 및 민감 데이터 탈취 가능
🔗 관련 취약점·체이닝
XML 파서 취약점을 이용한 초기 침투 후, 기존에 존재하는 권한 상승(CVE‑2020‑*** 등)이나 인증 우회 취약점과 결합해 도메인 관리자 수준까지 확대할 수 있습니다. (구체적인 CVE 번호는 확인되지 않음)
🔎 탐지
로그 지표
- Windows Event Log – Application : Provider “
.NET Runtime”, Event ID 1026(또는 1000), 메시지에System.Xml.XmlException,DTD is prohibited등 문자열 포함. - IIS/W3C 로그 : 요청 URI가
.xml또는*.aspx등이며,cs-uri-query혹은cs-body에<!DOCTYPE패턴이 존재할 경우. - ModSecurity/WA‑F : HTTP POST/PUT 본문에 DTD 선언이 포함된 경우 경보 발생.
SIEM 탐지 규칙 예시 (KQL)
1// .NET Runtime XML 파싱 오류 감시 2SecurityEvent 3| where ProviderName == ".NET Runtime" 4| where EventID in (1026,1000) 5| where Message has_any ("XmlException","DTD is prohibited") 6| project TimeGenerated, Computer, Process, Message 1// 웹 서버에서 악성 DTD 포함 요청 탐지 2CommonSecurityLog 3| where DeviceVendor == "Microsoft" 4| where LogSource == "IIS" 5| where RequestMethod in ("POST","PUT") 6| where RequestBody matches regex @"<!DOCTYPE\s+.*\s+SYSTEM\s+["'][^"']+["']>" 7| project TimeGenerated, SrcIpAddr, DestPort, RequestUrl, RequestBody정규식 예시
<!DOCTYPE\s+[^>]*\s+SYSTEM\s+["'][^"']+["']> – 외부 엔터티를 지정하는 DTD 선언을 탐지합니다.
오탐 튜닝
- 내부 시스템(예: 사내 XML 변환 서비스)에서 정상적으로 DTD를 사용한다면
ProcessName == "XmlValidator.exe"혹은 신뢰 IP 대역(SrcIpAddr in (10.0.0.0/8))을 화이트리스트에 추가합니다. - 파일 업로드 기능이 반드시 DTD를 필요로 하는 경우, 해당 엔드포인트(
RequestUrl endswith "/upload")만 예외 처리하고, 나머지는 차단하도록 규칙 우선순위를 조정합니다.
🛡️ 완화 방안
| 단계 | 조치 내용 | 구현 난이도 | 운영 영향 | 검증 방법 |
|---|---|---|---|---|
| 즉시(긴급 차단) | 웹 애플리케이션 방화벽(WAF) 또는 IIS URL‑Rewrite에 <!DOCTYPE 포함 요청을 403 응답으로 차단<br>예: SecRule REQUEST_BODY "@rx <!DOCTYPE\s+.*\s+SYSTEM\s+["'][^"']+["']>" "id:20201234,phase:2,deny,status:403,msg:'Block malicious XML DTD'" | 낮음 (규칙 추가만) | 정상적인 DTD 사용 서비스가 있을 경우 일시적 차단 → IP/경로 화이트리스트 필요 | WAF 로그에 blocked 기록 확인 및 정상 XML 업로드 테스트 |
| 단기(완화) | .NET 구성 파일(web.config·app.config)에 <system.xml><disableExternalEntities enabled="true"/></system.xml> 혹은 코드 레벨에서 XmlReaderSettings.DtdProcessing = Prohibit; 적용<br>또는 AppContext.SetSwitch("Switch.System.Xml.DisableXmlResolver", true); 설정 | 중간 (앱 재배포·재시작 필요) | 서비스 재시작 시 잠깐의 다운타임, 일부 레거시 XML 파싱 로직이 실패할 수 있음 | 배포 후 정상적인 XML 파싱 테스트와 EventID 1026 감소 확인 |
| 근본(해결) | Microsoft가 제공하는 보안 업데이트 적용 (예: KB4524570 등 .NET Framework 4.8, .NET Core 최신 패치) 및 SharePoint/Visual Studio 최신 버전으로 업그레이드 | 높음 (패치 관리·점검 필요) | 서버 재부팅·서비스 중단이 필요할 수 있음, 호환성 테스트 필수 | 업데이트 적용 후 취약점 스캐너(CVE-2020-1147 검사)에서 “Not Vulnerable” 확인 |
잔여 리스크
- WAF 차단 규칙이 모든 입력 채널(예: 이메일 첨부 파일, Office 문서 내부 XML)을 포괄하지 못할 경우 여전히 악용 가능성이 존재합니다. 따라서 위 탐지 규칙을 지속 운영하고, 의심되는 프로세스 실행(
wmic process list)을 모니터링해야 합니다.
인시던트 대응 플레이북 (요약)
- 알림 수신 → SIEM에서
.NET Runtime XmlException또는 WAF 차단 로그 발생 시 알림. - 초기 조사 → 해당 호스트·프로세스(
w3wp.exe,devenv.exe) 확인, 최근 파일/네트워크 활동 조회. - 격리 → 의심 프로세스 종료·서비스 일시 중단, 필요 시 네트워크 차단.
- 증거 수집 → 메모리 덤프, 관련 로그 보존.
- 완화 적용 → 즉시 차단 규칙 적용 후 단기 설정 변경 수행.
- 패치 계획 → 패치 일정 확정 및 적용 후 재검증.
위 조치는 [교차검증]을 통해 다중 소스에서 일관성을 확인했으며, EPSS 0.93966이라는 매우 높은 실제 악용 예측과 KEV 등재(실제 악용 사례) 때문에 즉시 대응이 권고됩니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=7.8 · KEV · EPSS=0.93966 · exploit=easy · in_scope=None