[CVE-2020-17530] Apache Struts OGNL RCE 침해사고분석팀 2021.01.08 |
|
Apache Struts에 원격 코드 실행 취약점이 존재합니다.
Apache Struts는 Java EE 웹 애플리케이션을 개발하기 위한 오픈 소스 프레임워크 입니다.
MVC 아키텍처를 적용하는 개발자를 지원하기 위하여 자바 서블릿 API를 사용하여 확장하였고, 페이지 디자이너, 컴포넌트 개발자, 프로젝트 일부를 담당하는 다른 개발자 등 성격이 다른 그룹들에 의해 다루어지는 대형 웹 애플리케이션의 설계와 구현을 가능하게 합니다.
또한 JSP, XML/XSLT, JSF, 벨로시티 등 다양한 프레젠테이션 레이어들을 지원하고, JavaBeans와 EJB 등의 모델 레이어도 지원합니다.
해당 취약점은 사용자가 데이터를 입력할 때 유효성 검사가 부족해 강제로 이중 OGNL 평가가 이루어지기 때문에 발생합니다.
원격의 공격자는 대상 서버에 악의적으로 조작된 요청을 전송하여 공격할 수 있습니다.
공격 성공 시, 임의의 코드가 실행될 수 있습니다.
취약점 설명
NVD - CVE-2020-17530 CVSS v2.0 Severity and Metrics: Base Score: 7.5 HIGH
[그림1. NVD 내역]
취약점 분석
OGNL 컨텍스트 맵은 일반적으로 액세스에 대한 유효성 검사를 시행하는 컨트롤에 의해 초기화되며, 이러한 컨트롤은 인스턴스에 의해 정의됩니다.
하지만 BeanMap 인스턴스를 통해 SecurityMemberAccess 인스턴스의 속성에 액세스하고 수정할 수 있으며 이를 통해 모든 클래스 및 패키지 액세스에 대한 제한을 비활성화 할 수 있습니다.
따라서 공격자는 패키지와 관련된 OGNL 유효성 검사를 수행하는 컨트롤을 비활성화 할 수 있으며, 원래는 허용되지 않는 freemarker[.]template[.]utility 패키지의 Execute[.]exec 메서드 등을 통해 임의 코드를 실행시킬 수 있습니다.
공격 분석 및 테스트
CVE-2020-17530의 공격 패킷은 다음과 같습니다.
[그림3. 공격 패킷]
취약점 대응 방안
1. 최신 버전 사용
해당 벤더사가 발표한 보안 권고문을 참고하여 최신의 버전으로 업데이트합니다. https://cwiki.apache.org/confluence/display/WW/S2-061
2. WINS Sniper 제품군 대응 방안
Apache Struts OGNL RCE
|