CVE-2022-22965(Spring4Shell)

2022. 5. 20. 14:58최신취약점/CVE

 

Spring4Shell

JDK 9버전 이상의 Spring Core에서 RCE(Remote Code Execution) 가능한 취약점

공개 당시 0-day 상태

이후 CVE-2022-22965 할당 및 패치 공개

CVSS 9.8받음

 

공격 원리

JDK 9+에서 Spring MVC나 Spring WebFlux가 구동중이고,

Endpoint에 Data binder가 enabled 된 경우에 Request에 포함된 공격코드를 Binding 하면서 공격자가 의도한 로직 실행

Data binder에서 class를 의미하는 string 값은 binding 하지 못하도록 제한되어야 하는데, 이 부분에 결함 추정

 

공격의 한계

알려진 내용으로는 Exploit이 war 파일로 배포되는 경우에 영향을 받는다고 함

Spring boot가 기본적으로 jar를 통한 배포를 사용하기 때문에 생각보다 파급력이 크지 않음

리스크는 여전히 존재하니 가급적이면 패치하는게 좋음

취약 버전

패치 버전

  • Spring framework 5.3.18+, 5.2.2+
  • Spring boot 2.5.12, 2.6.6

 

참고사이트: 

https://www.hahwul.com/2022/04/05/spring4shell/

 

Spring4Shell RCE 취약점 (CVE-2022-22965)

지난 주 Spring4Shell 취약점으로 인해 인터넷이 또 불탈 뻔 했습니다. 다행히 Log4Shell 보단 재현하기 어렵다는 문제로 무난하게 지나갔는데요. 겸사겸사 좀 늦었지만 이슈 정리해서 글로 올려볼까

www.hahwul.com

https://github.com/reznok/Spring4Shell-POC

 

GitHub - reznok/Spring4Shell-POC: Dockerized Spring4Shell (CVE-2022-22965) PoC application and exploit

Dockerized Spring4Shell (CVE-2022-22965) PoC application and exploit - GitHub - reznok/Spring4Shell-POC: Dockerized Spring4Shell (CVE-2022-22965) PoC application and exploit

github.com

JDK 9버전 이상의 Spring Core에서 RCE(Remote Code Execution)이 가능한 취약점입니다. 공개 당시 0-day 상태였고, 이후 CVE-2022-22965 할당 및 패치가 공개되었습니다. 별거 아니다, 심각한거다 이야기가 많았는데 결국 CVSS 9.8을 받았네요.

 

구현

LMS 더미(ㅎㅂㄷLMS)

+ install docker 

+ CVE-2022-22965 POC (docker환경 구축)

 

 

Kali 2022

+ CVE-2022-22965 POC (exploit용)

 

구현(구성도)

Kali2022(192.168.189.132) - Centos7(192.168.189.145)

컨텐츠

[Web]

컨테이너를 빌드하고 실행

FROM lunasec/tomcat-9.0.59-jdk11

ADD src/ /helloworld/src
ADD pom.xml /helloworld

#  Build spring app
RUN apt update && apt install maven -y
WORKDIR /helloworld/
RUN mvn clean package

#  Deploy to tomcat
RUN mv target/helloworld.war /usr/local/tomcat/webapps/

EXPOSE 8080
CMD ["catalina.sh", "run"]

POC에 있던 "dockerfile" 내용(Docker container 만드는 파일)

 

[Kali]

 

Kali측에서 web접근해본다(helloworld/greeting)
python3로 exploit 실행 -> shell.jsp파일 생성
GET방식으로 명령어 주입

 

계정정보 탈취가능

방지방안

스프링4셸 취약점을 봉쇄하는 최선의 방법은 스프링 프레임워크를 버전 5.3.18 또는 5.2.20으로, 스프링 부트를 버전 2.6.6 또는 2.5.12로 업데이트

또 다른 임시 대응책은 톰캣 버전을 스프링4셸에 대응해 출시된 10.0.20, 9.0.62 또는 8.5.78로 업그레이드

'최신취약점 > CVE' 카테고리의 다른 글

CVE-2023-220809  (0) 2023.01.27