
Apache Struts S2-072(CVE-2026-73633)에 대한 개념 증명 익스플로잇으로, Struts JSON 플러그인에 조작된 JSON 요청을 전송하여 CPU 및 메모리 고갈을 유발합니다.
서버 측에서 JSON body 플러그인을 활성화한 JSON 데이터 바인딩("JSON 데이터 바인딩"은 Struts 2에서 JSON 플러그인이 제공하는 핵심 기능으로, 간단히 자동 데이터 변환 메커니즘으로 이해할 수 있습니다.)
JSON 데이터 바인딩 기능의 파서는 JSON 배열을 처리할 때 요청 본문의 모든 JSON 내용을 메모리로 한 번에 읽어들입니다(항목별 로드).
메모리 소비(및 CPU 소비)를 발생시킵니다.
저는 WSL2와 Tomcat으로 Struts 애플리케이션을 배포하고 로그인 페이지를 만들었습니다. 사용자 이름은 admin, 비밀번호는 123456입니다.
실제 테스트에서 컴퓨터에서 가장 눈에 띄게 증가한 부분은 CPU 점유율이었고, 그다음은 메모리였습니다. 또한 요청 처리가 완료된 후 CPU 점유율은 해제됩니다.
메모리가 OOM이 되면 GC 수집이 트리거되어 메모리를 가득 채우는 일은 없으며, 크래시를 일으키지도 않습니다.
단지 컨테이너의 서버 리소스만 압박할 뿐이며, 메모리 점유율이 고정된 값(OOM 트리거 지점)까지 오르면 더 이상 오르지 않고, GC에 의해 반복적으로 회수되고 다시 점유되고, 다시 회수됩니다…………
CPU 증가는 채움 값(--size)과 비례합니다.
git clone https://github.com/CuteeCat/CVE-2026-73633.git
cd CVE-2026-73633
cd docker
docker-compose build
docker-compose up -d
cd ..
python poc.py --url http://127.0.0.1:8080/login.action --local