[방어] 분석 — CVE-2020-1147
Critical RCE vulnerability in .NET Framework/SharePoint via XML source markup failure, requiring immediate disabling of DTD processing and urgent patching due to high EPSS-driven exploitation probability.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.93966 · 악용난이도 easy · KEV
🔍 공격 기법
공격자가 특수하게 조작된 XML 파일을 대상 시스템에 입력하면, 소프트웨어가 XML 소스 마크업을 적절히 검증하지 못해 발생합니다. 추정: XmlDocument나 XmlTextReader와 같은 클래스가 외부 엔티티를 처리하는 과정에서 DTD(Document Type Definition)를 통해 원격 리소스를 참조하거나 내부 객체를 인스턴스화하는 Deserialization 취약점으로 이어지며, 최종적으로 임의 코드 실행(RCE) 권한을 획득합니다.
악용 가능성: 본 취약점의 공격 난이도는 매우 낮으며(Easy), 실제 악용 가능성이 극도로 높은 위험 상태입니다. CVSS 벡터상 AV:L과 UI:R 조건이 결합되어 있어, 공격자가 조작된 XML 파일을 타겟 시스템에 전달하고 사용자가 이를 실행하도록 유도하는 사회공학적 기법이 전제됩니다. 하지만 AC:L(낮은 공격 복잡성)과 PR:N(권한 불필요) 특성상, 일단 파일이 트리거되면 추가적인 권한 획득 과정 없이 즉시 RCE로 이어집니다. 특히 EPSS 수치가 0.93966에 달하고 KEV(Known Exploited Vulnerabilities)에 등재되었다는 점은 이론적 가능성을 넘어 이미 야생에서 공격 도구가 유포되고 실전 활용 중임을 입증합니다. 주요 공격 표면은 .NET Framework, SharePoint Server, Visual Studio 등 XML 파싱을 수행하는 모든 엔드포인트와 입력 파라미터이며, 특히 외부에서 유입되는 XML 소스 마크업의 검증 미흡 지점이 핵심 트리거 포인트입니다.
💥 영향 분석
- 권한 탈취: .NET Framework 기반 애플리케이션 및 SharePoint 서버 내에서 공격자 권한으로 명령어가 실행됩니다.
- 인프라 확장: 특히 SharePoint Server와 같은 핵심 자산이 탈취될 경우, 서비스 계정의 권한을 이용해 Active Directory(AD)로 공격 범위를 넓히는 권한 상승 리스크가 매우 큽니다.
- 광범위한 영향: .NET Core 및 Framework 등 다수 제품군에 영향을 주는 라이브러리 성격의 취약점으로, 공급망 관점의 피해 범위가 매우 넓습니다.
🔗 관련 취약점·체이닝
XML 외부 엔티티(XXE) 패턴에서 시작하여 객체 역직렬화(Deserialization) 및 가젯 체인(Gadget Chain)을 통한 RCE로 이어지는 전형적인 체이닝 형태를 보입니다.
🔎 탐지
다중 소스 데이터 일관성이 확인된 신뢰도 1.0의 리포트로, EPSS=0.93966(백분위 0.99836)이라는 실측 수치는 이론적 심각도를 넘어 실제 악용 가능성이 극도로 높음을 의미합니다. 따라서 로그 기반의 실시간 감시가 필수적입니다.
1. 탐지 지표 및 로그 위치
- 로그 소스: W3C IIS 로그, Windows Event Log (Application), EDR 프로세스 트리
- 핵심 필드:
cs-uri-query,cs-uri-stem,ProcessCommandLine - 탐지 패턴: XML 입력값 내
<!DOCTYPE,SYSTEM,PUBLIC등 DTD 정의 키워드 및 외부 URL 참조 패턴
2. 탐지 규칙 예시 (SIEM/EDR 의사코드)
- Rule 1 (HTTP Request):
SELECT * FROM web_logs WHERE (uri_query LIKE '%<!DOCTYPE%' OR uri_query LIKE '%ENTITY%') AND target_app IN ('SharePoint', 'Visual Studio') - Rule 2 (Process Execution):
SELECT * FROM process_events WHERE parent_process = 'w3wp.exe' AND command_line MATCHES '(cmd\.exe|powershell\.exe|net\.exe)' - Rule 3 (External Connection):
SELECT * FROM network_logs WHERE source_process = 'w3wp.exe' AND destination_port = 80/443 AND request_payload MATCHES '(?i)<!ENTITY.*SYSTEM.*http'
3. 오탐 튜닝 및 한계
- 오탐 시나리오: SharePoint의 정상적인 XML 기반 워크플로우나 VS 프로젝트 파일 교환 시 DTD 패턴이 탐지될 수 있습니다.
- 튜닝 방법: 내부 신뢰 구간(Trusted IP) 내의 통신은 제외하되, 외부 노출 엔드포인트에서 유입되는 XML 페이로드에 대해서만 가중치를 부여합니다.
🛡️ 완화 방안
본 취약점은 KEV 등재 및 EPSS 수치 근거로 'Immediate' 우선순위가 결정되었습니다. 24시간 내 대응이 필요합니다.
1. 즉시 (긴급 차단)
- 조치: 외부 노출된 SharePoint 엔드포인트 및 XML 입력 접점에 대해 WAF(Web Application Firewall)에서
<!DOCTYPE및ENTITY키워드가 포함된 요청을 즉시 Drop 처리합니다. - 난이도/영향: 낮음 / 일부 정상 XML 업로드 기능 마비 가능성 있음.
- 검증: 조작된 XML 페이로드 전송 시 403 Forbidden 확인.
2. 단기 (완화)
- 조치: .NET Framework 런타임 설정에서
XmlReaderSettings.DtdProcessing = Prohibit설정을 강제 적용하여 DTD 처리를 원천 차단합니다. 추정: 특히 취약한 버전(4.6 이하)을 사용하는 커스텀 워크플로우에 우선 적용하십시오. - 난이도/영향: 중간 / 애플리케이션 코드 수정 및 재배포 필요, 정상 XML 파싱 기능 장애 가능성.
- 검증:
XmlResolver호출 이벤트 발생 여부 모니터링.
3. 근본 (해결)
- 조치: Microsoft에서 제공하는 .NET Framework, SharePoint Server, Visual Studio의 최신 보안 패치를 적용하고 런타임을 업데이트합니다.
- 난이도/영향: 높음 / 전사적 자산 대상 패치 테스트 및 재부팅으로 인한 서비스 일시 중단 발생.
- 검증: 설치된 .NET Framework 버전 및 KB 패치 번호 확인.
잔여 리스크: 패치 이후에도 이미 침투한 공격자가 생성한 백도어나 AD 권한 상승 결과물은 제거되지 않으므로, 패치 전후로 w3wp.exe 하위의 비정상 프로세스 실행 이력을 전수 조사하는 인시던트 대응 플레이북 수행이 병행되어야 합니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=7.8 · KEV · EPSS=0.93966 · exploit=easy · in_scope=None