Spring Core Java 프레임워크에서 원격코드실행이 가능한 제로데이 취약점(CVE-2022-22965)이 발견되었습니다. 해당 취약점은 Spring4Shell 취약점이라고도 불립니다.
Spring 프레임워크의 JDK9버전(및 그 상위버전)중, 특정 조건을 만족하는 상황에서 원격공격자가 프레임워크의 매개변수 바인딩 기능을 통하여 AccessLogValve객체 및 악성필드값들을 획득할 수 있으며, 이를 통하여 pipeline매커니즘을 트리거하여 임의경로하위에 파일쓰기가 가능하게 됩니다.
현재까지 확인된 해당 취약점을 유발하기 위한 조건은 다음과 같습니다.
- JDK 버전 9 이상
- 애플리케이션 제공을 위한 Apache Tomcat
- Spring Framework 5.3.0 ~ 5.3.17 및 5.2.0 ~ 5.2.19 이하 버전
- WAR 파일로 빌드된 애플리케이션
영향받는 버전
JDK9 이상 버전을 사용하고, Spring Frameword 혹은 파생된 프레임워크가 존재하는 경우
Spring Framework 5.3.0 ~ 5.3.17 이하버전
Spring Framework 5.2.0 ~ 5.2.19 이하버전
* 버전확인방법
"java-version”명령을 통해 확인 가능
패치방법
Spring Framework 5.3.18 버전으로 업데이트
Spring Framework 5.2.20 버전으로 업데이트
임시조치방법
1) WAF와 같은 네트워크 보호 장치에서 배포된 서비스의 실제 트래픽 상황에 따라 "class.*", "Class.*", "*.class.*", "*.Class.*"와 같은 문자열에 대한 규칙을 설정합니다. 필터링 규칙을 배포한 후 비즈니스 허용 조건을 테스트 하여 추가 영향을 방지합니다.
2) 응용 시스템의 프로젝트 패키지 아래에 다음 전역 클래스를 생성하고 이 클래스가 Spring에 의해 로드되었는지 확인합니다.(Controller가 위치한 패키지에 추가하는 것이 좋습니다.) 클래스 추가 후애는 재 컴파일, 패키징 및 기능테스트를 진행해야 합니다. 그 후 프로젝트 재배포가 필요합니다.
import org.springframework.web.bind.annotation.InitBinder;
@ControllerAdvice
@Order(10000)
public class a{
@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
String[] abd = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};
dataBinder.setDisallowedFields(abd);
}
}
참고 :
https://www.springcloud.io/post/2022-03/spring-0day-vulnerability/#gsc.tab=0
http://cn-sec.com/archives/853339.html
https://securelist.com/spring4shell-cve-2022-22965/106239/
Spring Expression Resource Access 취약점(CVE-2022-22963) 주의! (0) | 2022.03.31 |
---|---|
새로운 Spring Java 프레임워크 제로데이, 원격 코드 실행 허용해 (0) | 2022.03.31 |
우크라이나의 모바일 및 인터넷 서비스 제공 업체인 Ukrtelecom, 대규모 공격 받아 (0) | 2022.03.30 |
Mars Stealer 악성코드, 구글의 OpenOffice 광고 통해 푸시돼 (0) | 2022.03.30 |
해킹된 WordPress 사이트, 방문자가 우크라이나 타깃에 DDoS 공격 실행하도록 해 (0) | 2022.03.29 |
댓글 영역