
CVE-2025-55182를 탐색하고 분류하기 위한 경량 Go 툴킷 및 Dockerized Next.js 랩.
경량 Go 툴킷과 Docker화된 Next.js 연구소로 CVE-2025-55182를 탐색 및 분류합니다. 교육 및 승인된 테스트 전용입니다.
React2Shell_Deconstructing_a_Perfect_10_RCE.pdf 및 공격 경로 다이어그램 참조
checker: 빠른 동시 인벤토리 스캔 (단일 대상, 파일 또는 stdin), RSC 노출 휴리스틱, 대상별 JSON 출력, 최종 요약, 선택적 -only-vuln, -no-progress, 사용자 지정 -ua.poc: 익스플로이트 스타일의 RSC 멀티파트 요청을 전송하고 반환된 다이제스트를 출력합니다. -c를 통해 사용자 지정 명령어 지원 (기본값 ).id-c), 타임아웃 및 진행 통계.-target, -list 또는 -stdin; 스키마가 없을 경우 자동으로 https:// 추가.vulnlab/): Next.js 15.5.6/React 19, Dockerfile 및 docker-compose.yml, 안전한 재현을 위해 localhost:3000에 고정.cd checker
GOCACHE=/tmp/go-cache go build -o CVE-2025-55182 ./cmd/CVE-2025-55182
GOCACHE를 설정하세요. 환경에 캐시 권한 문제가 있는 경우.
# Scanner
./CVE-2025-55182 checker -target https://example.com
./CVE-2025-55182 checker -list ../targets.txt -c 50 -only-vuln
cat ../targets.txt | ./CVE-2025-55182 checker -stdin -no-progress
# PoC (exploit-style request)
./CVE-2025-55182 poc -target http://localhost:3000
./CVE-2025-55182 poc -target http://localhost:3000 -c "whoami"
CVE-2025-55182는 React Server Components가 Flight 페이로드에서 모듈을 로드하는 방식에서 발생하는 안전하지 않은 역직렬화 버그입니다. react-server-dom-webpack에서 requireModule(metadata) 헬퍼가 모듈을 가져온 후 moduleExports[metadata[2]]를 반환합니다. 대괄호 접근은 프로토타입 체인을 따라가므로, $1:constructor:constructor와 같은 공격자 제어 참조가 내보낸 함수에서 그 constructor (전역 Function 생성자)로 이동하여 임의의 JS를 실행할 수 있습니다. Flight 프로토콜을 통해 공격자는 콜론으로 구분된 속성 경로를 제공할 수 있으며, 이는 모듈 로더를 원격 코드 실행을 위한 가젯으로 전환시킵니다.
cd vulnlab
docker compose build
docker compose up
# App listens on 127.0.0.1:3000 inside the container; runs as non-root user.
Dockerfile은 Next.js 앱(Node 20 Alpine)을 빌드하고, 의존성을 설치하며, 빌드한 후 비루트 nextjs 사용자로 실행합니다.docker-compose.yml은 기본적으로 로컬 전용 테스트를 위해 127.0.0.1:3000:3000을 바인딩합니다.Snort / Suricata (서버로의 HTTP)
alert http any any -> $LAN_NETWORK any (
msg:"Potential Next.js React2Shell / CVE-2025-66478 attempt";
flow:to_server,established;
content:"Next-Action"; http_header; nocase;
content:"multipart/form-data"; http_header; nocase;
pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
classtype:web-application-attack;
sid:6655001;
rev:1;
)
쿼리 (취약한 React RSC 패키지)
{
"queries": {
"detect_rev2shell_react_server_components": {
"query": "SELECT name, version, path FROM npm_packages WHERE (name='react-server-dom-parcel' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-turbopack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-webpack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0'));",
"interval": 3600,
"description": "Detects vulnerable versions of React Server Components packages (react-server-dom-*) affected by CVE-2025-55182 / CVE-2025-66478 / React2Shell.",
"platform": "linux,windows,macos",
"version": "1.0"
}
}
}