원격 공격자가 영향을받는 Struts 프레임워크와 널리 사용되는 REST 통신 플러그인을 사용하여 빌드 된 응용 프로그램을 실행하는 서버에서 임의의 코드를 실행할 수 있도록 해주는 취약점이 발견되었습니다.
이 취약점은 Java에서 안전하지 않은 구조화 된 데이터를 하나의 형식에서 가져 와서 객체로 재구성하는 과정에서 발생하는 취약점입니다.
저희 큐비트 시큐리티는 공격방법이 비교적 쉽고, 공격 받을 시 시스템에 미치는 영향이 크기 떄문에 Apache Struts2취약점(CVE-2017-9805)를 분석하여 PLURA Agent가 탐지하도록 하였습니다.

영향 받는 소프트웨어

– Apache Struts 2.1.2~2.3.33
– Apache Struts 2.5~2.5.12

취약점 원리
Apache Struts 2 REST 플러그인은 JAVA XStream XML 직렬화 라이브러리를 사용하여 사용자 입력을 역직렬화합니다. Apache Struts 2 REST 플러그인이 공격자가 보낸 XML을 deserialize하려고 시도하여 결과적으로 원격 코드 실행이 발생합니다.
사용자가 제어하는 ​​데이터가 deserialization 메서드로 전달되는 방법이 있습니다. 예를 들어, Apache Struts는 ContentTypeHandler 인터페이스를 사용합니다. 데이터를 Java 객체로 변환합니다. 이 인터페이스의 구현은 일반적으로 전달 된 데이터를 deserialize하므로 이 인터페이스를 구현하는 모든 클래스는 잠재적 위험이 있습니다.

취약점 테스트

공격자PC에서 피해자PC의 1337 Port Listen.


공개된 CVE-2017-9805 PoC code 실행


reverse connection이 된 후 공격자가 피해자PC에서 명령어 주입 성공

이러한 공개된 취약점으로 해커들은 다양한 공격을 시도하고있어 많은 피해가 예상됩니다.
저희 PLURA AGENT는 Apache Struts2취약점(CVE-2017-9805)를 아래와 같이 탐지하고 있습니다.