English Advisory →
CVE-2017-98058.1/HIGHCISA KEV 등재CWE-502CWE-502

Apache Struts 2 REST 플러그인 XML 역직렬화 원격 코드 실행 취약점 (CVE-2017-9805, S2-052)

⚡ 패치 명령어 바로가기
영향받는 벤더 / 생태계
apache
대상 컴포넌트 / 패키지
struts
권고문 발행일
2017-09-15
CVSS v3.1
8.1
HIGH
30일 악용확률
99.4%
FIRST.org
CISA KEV
악용 확인됨

실무자 핵심 요약 (Executive Summary)

SECOPS ASSESSMENT
영향 대상

Apache Struts 2.1.1 ~ 2.3.33 및 2.5 ~ 2.5.12 버전에서 REST 플러그인을 사용하는 환경

파급 효과

인증되지 않은 원격 공격자가 악의적인 XML 페이로드를 전송하여 대상 서버에서 임의의 시스템 명령을 실행할 수 있습니다

권장 조치

Apache Struts 버전을 2.3.34 또는 2.5.13 이상으로 즉시 업그레이드하고, 불필요한 경우 REST 플러그인을 비활성화하십시오

영향받는 제품 및 버전 범위

Apache Struts 2.1.1 ~ 2.3.33 및 Apache Struts 2.5 ~ 2.5.12 (REST 플러그인 사용 시 영향)

권장 패치 및 임시 완화(Workaround) 가이드

패치 및 우회 명령어

1. 공식 보안 패치 및 버전 업그레이드 명령어

가장 확실한 해결책은 취약점이 해결된 Apache Struts 2.3.34 또는 2.5.13 이상 버전으로 의존성을 업그레이드하는 것입니다. Maven 프로젝트의 경우 pom.xml 파일을 다음과 같이 수정하십시오.

xml
<!-- Maven pom.xml 의존성 업그레이드 예시 -->
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.13</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-rest-plugin</artifactId>
    <version>2.5.13</version>
</dependency>

2. 패치 전 임시 완화(Workaround) 및 접근 제어 설정

즉각적인 패치가 어려운 경우, REST 플러그인이 지원하는 Content-Type에서 XML을 제외하도록 설정을 변경하거나, 사용하지 않는 경우 REST 플러그인 JAR 파일을 클래스패스에서 제거해야 합니다.

xml
<!-- struts.xml 설정 변경을 통한 XML 핸들러 제한 -->
<constant name='struts.action.extension' value='xhtml,json' />

3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트

웹 서버의 액세스 로그 및 애플리케이션 로그에서 XStream 가젯(예: java.beans.ProcessBuilder, command 태그 등)이 포함된 비정상적인 XML 요청 패턴을 탐지하는 예시 스크립트입니다.

bash
# Nginx/Apache 액세스 로그 또는 애플리케이션 로그에서 의심스러운 XML 페이로드 탐지
grep -riE '(java\.beans\.ProcessBuilder|command|imageio)' /var/log/nginx/ /var/log/apache2/ /usr/local/tomcat/logs/
실무자 패치 대응 자가 점검 체크리스트
0/4 (0%)
권장 아키텍처 방어 통제 (Recommended Security Control)
Cloudflare Enterprise & Pro WAF
Apache Struts 2를 사용하는 모든 대외 서비스는 즉시 버전을 2.3.34 또는 2.5.13 이상으로 업그레이드하여 원격 코드 실행 위협을 차단하십시오.

코드 수정 전에도 가상 패치(Virtual Patching)로 웹 공격을 즉시 차단하세요

서버 재시작이나 긴급 패치가 어려운 운영 환경이라면 클라우드 WAF 관리형 룰셋을 활성화하여 SQLi, RCE, XSS 익스플로잇 페이로드를 엣지에서 1분 만에 차단할 수 있습니다.

평균 설정 시간 3분 · Zero-Day 자동 룰 업데이트
이 웹 취약점(WAF 우회 & RCE)을 안전한 실습 랩에서 직접 재현해 보세요
실습 랩 & 보안 강의 보러가기

취약점 발생 원리 및 공격 메커니즘

1. 취약점 개요 및 발생 원인 (Root Cause)

본 취약점(S2-052)은 Apache Struts 2의 REST 플러그인이 XML 요청을 처리할 때 사용하는 XStream 라이브러리(XStreamHandler)의 안전하지 않은 역직렬화 메커니즘에서 발생합니다. REST 플러그인은 들어오는 HTTP 요청의 Content-Type 헤더를 기반으로 적절한 핸들러를 선택하여 페이로드를 객체로 변환합니다. 이 과정에서 XStreamHandler는 입력 데이터에 대한 어떠한 타입 필터링이나 검증(화이트리스트/블랙리스트) 없이 역직렬화를 수행하므로, 공격자가 조작한 임의의 Java 객체 그래프가 메모리 상에 인스턴스화되어 실행되는 취약점이 존재합니다.

2. 공격 메커니즘 및 익스플로잇 시나리오

공격자는 HTTP POST/PUT 요청의 Content-Type을 'application/xml'로 설정하고, 요청 본문(Body)에 XStream이 해석할 수 있는 악의적인 XML 직렬화 객체를 주입합니다. 주로 Java의 'java.beans.ProcessBuilder' 또는 'javax.imageio.ImageIO' 등 시스템 명령을 실행할 수 있는 가젯 체인(Gadget Chain)을 XML 형태로 구성하여 전송합니다. Struts 2 REST 플러그인이 이 요청을 수신하면, 내부 XStreamHandler가 XML 데이터를 역직렬화하는 즉시 가젯 체인이 트리거되어 웹 애플리케이션 권한(일반적으로 tomcat 또는 root)으로 OS 명령어가 실행됩니다.

3. 비즈니스 및 인프라 파급 영향

이 취약점은 CVSS 8.1(High) 및 EPSS 0.994 이상을 기록하고 있으며, CISA KEV(알려진 악용된 취약점 목록)에 등재될 만큼 실질적인 위협이 매우 높습니다. 공격자는 인증 없이 원격에서 대상 서버의 완전한 제어권을 획득할 수 있으며, 이를 통해 내부망 침투, 데이터베이스 기밀 정보 탈취, 랜섬웨어 유포, 또는 시스템 파괴 등의 치명적인 비즈니스 중단을 초래할 수 있습니다.

공식 보안 권고문 및 참조 링크

자주 묻는 실무 질문 (FAQ — CVE-2017-9805)

FAQ

Q1. CVE-2017-9805 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?

CVE-2017-9805의 기본 점수는 CVSS 8.1 (HIGH)이며, 향후 30일 내 실제 악용 확률을 나타내는 EPSS 점수는 99.4%입니다. 현재 미국 CISA KEV(실제 악용이 확인된 취약점 카탈로그)에 등재되어 있으므로 최우선 긴급 패치가 필요합니다.

Q2. CVE-2017-9805에 영향을 받는 벤더와 제품은 무엇입니까?

주요 영향 벤더는 apache이며, 대상 컴포넌트는 struts입니다. 상세 영향 범위: Apache Struts 2.1.1 ~ 2.3.33 및 Apache Struts 2.5 ~ 2.5.12 (REST 플러그인 사용 시 영향)

Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?

[권장 조치] Apache Struts 버전을 2.3.34 또는 2.5.13 이상으로 즉시 업그레이드하고, 불필요한 경우 REST 플러그인을 비활성화하십시오 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.

실무자 보고서 워크벤치 연동

CVE-2017-9805 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성

클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.

보고서 초안 생성하기 →

🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (apache)

동일 카테고리 전체 보기 →
SecOps Advisory Dispatch & RSS Feed

일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독

보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.

Slack / Teams / RSS 리더 연동:
패치 명령EN
CVE-2017-9805 Apache Struts 2 REST 플러그인 XML 역직렬화 원격 코드 실행 취약점 (CVE-2017-9805, S2-052) (CVSS 8.1) - 패치 및 보안 권고 | CVE Pulse