
Apache Struts JSON 플러그인의 서비스 거부(DoS) 취약점(CVE-2026-73633)에 대한 개념 증명(PoC) 익스플로잇으로, 조작된 JSON 배열을 통해 CPU 및 메모리 고갈을 시연합니다.
서버 측에서 JSON body 플러그인을 활성화한 JSON 채우기("JSON 채우기"는 Struts 2의 JSON 플러그인이 제공하는 핵심 기능으로, 간단히 자동 데이터 변환 메커니즘으로 이해할 수 있습니다.)
JSON 채우기 기능의 파서는 JSON 배열을 처리할 때 요청 본문의 모든 JSON 내용을 한 번에 메모리로 읽어들입니다(항목별 적재).
이로 인해 소모가 발생합니다(및 CPU 소모).
저는 wsl2와 Tomcat을 사용하여 Struts 애플리케이션을 배포했고, 로그인 페이지를 하나 만들었습니다. 사용자 이름은 admin, 비밀번호는 123456입니다.
실제 테스트에서 가장 눈에 띄게 증가한 것은 CPU 점유율이었고, 그다음은 메모리였습니다. 또한 요청이 종료된 후(TCP 연결 종료)에는 CPU 점유율만 해제되고 메모리는 자동으로 해제되지 않습니다.
(기본 구성 테스트 시간 3분, 호스트 CPU 점유율이 7에서 32로 증가, 메모리는 9.8g에서 11g로 증가) 크래시를 유발하기에는 훨씬 부족했습니다.
컨테이너의 서버 리소스가 부족해질 뿐이며, 메모리 점유율이 특정 고정값에 도달하면 더 이상 증가하지 않습니다. 이 고정값은 채우기 값(--size)에 비례합니다.