https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
최근 Spring 관련 RCE 취약점이 나오면서 많은 보안 업체들이 정보를 확인하고 있다.
공부하는 차원으로 글을 작성해본다.
Spring Framework 란
Spring Framework는 Java 웹 개발에 사용되는 유명한 프레임워크이다. 대표적으로 MVC 모델이 있고, 국내 대부분의 자바 웹 프레임워크로 사용중으로 정부에서 권장하는 Spring 기반 프레임워크가 별도로 있을 정도이니 세계적으로 많은 개발자들이 사용하는 Java 웹 표준 프레임워크라고 할 수 있다.
https://www.egovframe.go.kr/home/sub.do?menuNo=12
CVE-2022-22965 취약점은
CVE-2022-22965 취약점은 JDK 9+에서 실행되는 스프링 MVC 또는 스프링 WebFlux 애플리케이션은 데이터 바인딩을 통해 원격으로 코드 실행이 가능한 취약점이다. 취약점이 동작하기 위해서는 Tomcat이 WAR 패키지로 배포된 경우에 발생한다고 한다. 만약 기본 Spring Boot를 활용하여 배포를 한 경우에는 취약점이 발생하지 않는다고 하지만, 되도록 조치를 하기를 권장한다. 공격 방식은 DataBinding 부분을 공격하는 방식으로 확인이 되었다.
https://gist.github.com/esell/c9731a7e2c5404af7716a6810dc33e1a
Spring4Shell 0-day POC 코드는 아래 사이트에서 확인 가능하다.
— vx-underground (@vxunderground) March 30, 2022
POC 재현과 관련된 글은 아래 내용을 참고하면 도움이 될 것이다.
CVE-2022-22965 (SpringShell): RCE Vulnerability Analysis and Mitigations (paloaltonetworks.com)
취약한 버전
- JDK 9 or higher
- Apache Tomcat as the Servlet container.
- Packaged as a traditional WAR (in contrast to a Spring Boot executable jar).
- spring-webmvc or spring-webflux dependency.
- Spring Framework versions 5.3.0 to 5.3.17, 5.2.0 to 5.2.19, and older versions.
조치방안
Spring Framework 5.3.18 ~ 5.2.20 은 문제가 없는것으로 확인되었다. 문제가 없는 버전으로, 업그레이드하는 것을 권장한다.
추가로 임시적으로 현재 알려진 조치방법으로는 DataBinder에는 특정 패턴을 허용하지 않는 기능이 있는데 이를 통해
Class 접근을 허용하지 않도록 구성하는것으로 임시적인 조치가 가능하다.
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
@ControllerAdvice
@Order(10000)
public class BinderControllerAdvice {
@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
String[] denylist = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};
dataBinder.setDisallowedFields(denylist);
}
}
참고
'Security' 카테고리의 다른 글
Windows 사용자 추적 방법 – RegRipper, Userassist Keys, MUICache, MRUList, Typedurls, Exchange (0) | 2022.04.15 |
---|---|
WMI - 원격 실행 보안 (0) | 2022.04.15 |
간편하게 IP 숨기기/속이기, 우회 접속, 프록시 종류 (0) | 2022.03.27 |
러시아 - 우크라이나 사이버 DDoS 공격 IP 공개 (0) | 2022.03.18 |
우크라이나 정부 기관 DDoS 공격 - Isaac(Hermetic)Wiper, HermeticWizard 이해 (0) | 2022.03.15 |