
CVE-2025-55182(React Server Components RCE)를 위한 비간섭적 표면 스캐너. React 19 및 Next.js 애플리케이션에서 노출된 RSC 엔드포인트를 탐지합니다.
CVE-2025-55182(React Server Components RCE)를 위한 특화된 비침습적 표면 탐지기입니다.

스캔 전에 읽으십시오:
CVE-2025-55182는 치명적인 RCE 취약점(CVSS 10.0)이지만, Next.js 프로덕션 환경에서의 실제 악용은 조건부입니다.
serverManifest를 사용하여 허용된 모듈을 화이트리스트에 등록합니다. RSC를 통해 child_process와 같은 위험한 모듈을 직접 로드하려는 시도는 매니페스트에 없기 때문에 종종 실패합니다.serverManifest를 덮어쓰고 화이트리스트를 우회해야 하는 경우가 많습니다."vm" 대신 742). 이름을 추측하는 경직된 익스플로잇은 실패합니다(미탐, False Negatives).이 도구는 표면 탐지기입니다. RSC 프로토콜이 노출되어 활성 상태인지 식별합니다. 노출된 엔드포인트를 찾는 것은 프로토타입 폴루션 체인이 시도될 수 있는 공격 표면을 식별하기 위한 전제 조건 단계입니다.
대부분의 공개 PoC 및 스캐너는 다음과 같은 네 가지 일반적인 함정에 빠지기 때문에 프로덕션 환경에서 미탐(False Negatives)을 초래합니다:
익스플로잇 경직성: 화이트리스트에 의해 차단되는 특정 가젯(예: vm 또는 child_process)을 실행하려 하거나, 난독화된 Webpack 빌드에서 실패하는 하드코딩된 ID(예: "id":"vm")에 의존합니다.
루트 리다이렉트: Next.js에서 POST /을 요청하면 종종 307/308 리다이렉트(예: /login)가 발생하여 서버가 처리하기 전에 POST 본문이 유실되거나 GET으로 변환됩니다.
전송 형식 불일치: 많은 스캐너가 페이로드를 text/plain 또는 원시 JSON으로 전송합니다. 엄격한 Next.js Server Actions는 종종 multipart/form-data 캡슐화를 요구합니다. 형식이 잘못되면 취약한 파서를 트리거하지 않은 채 서버가 404/200을 반환합니다.
WAF 인식 부재: 일반적인 도구는 403 Forbidden을 보고 포기합니다. 전역 IP 차단과 특정 규칙 필터를 구분하지 못하여 인코딩이나 패딩 기법으로 WAF를 우회할 기회를 놓칩니다.
이 스캐너는 세 가지 문제를 모두 해결합니다:
✅ 스마트 경로 탐색: 무작위로 존재하지 않는 경로(예: /x7z9q2)를 자동으로 탐색하여 루트 리다이렉트(307/308)를 우회하고 Next.js App Router가 요청 컨텍스트를 처리하도록 강제합니다.
✅ 엄격한 전송(Multipart): 일반 텍스트 대신 multipart/form-data 캡슐화를 사용합니다. 이로 인해 404를 반환하는 엄격한 Server Action 엔드포인트에서의 미탐(False Negatives)이 해결됩니다.
✅ WAF 차등 분석: 전역 차단([BLOCKED])과 특정 규칙 필터링([FILTERED])을 구분합니다. 백엔드가 프로토콜을 허용하지만 페이로드를 차단하는 경우, 스캐너는 이를 고가치 대상으로 식별합니다.
✅ 자동 우회 모드: [FILTERED] 대상에 대해 자동으로 회피 기법(유니코드 이스케이프, 공백 변형, 잡음 패딩)을 시도하는 선택적 --bypass 엔진을 포함합니다.
✅ 강화된 탐지: X-Powered-By 헤더를 제거하는 엔터프라이즈 서버에서 "조용한 크래시"([SUSPICIOUS])를 포착하고, Assetnote 303 See Other 리다이렉트 핑거프린트를 식별합니다.
✅ 능동 핑거프린팅: 특수 페이로드(["$1:aa:aa"])를 사용하여 React 19 RSC의 고유한 "Digest" 오류를 트리거함으로써 완전한 RCE 없이도 파서가 활성 상태임을 확인합니다.
저장소를 클론합니다:
git clone https://github.com/fatguru/CVE-2025-55182-scanner.git
cd CVE-2025-55182-scanner
의존성을 설치합니다 (가상 환경 사용을 권장합니다):
pip install -r requirements.txt
기본 스캔
단일 URL을 확인합니다. 참고: Next.js App Router 엔드포인트는 경로별로 다르므로 루트 도메인만이 아니라 정확한 애플리케이션 경로(예: /dashboard, /login)를 지정해야 합니다.
python3 cve_2025_55182_scanner.py -u http://localhost:3000/dashboard
대량 스캔
파일에서 URL 목록을 스캔합니다(한 줄에 하나의 URL). 특정 경로를 놓치지 않기 위해 권장되는 전략입니다.
python3 cve_2025_55182_scanner.py -l targets.txt -o results.csv
SSL/TLS 인증서 오류를 무시합니다(IP 기반 스캔, 로컬 랩, 자체 서명 인증서에 유용).
python3 cve_2025_55182_scanner.py -u [https://192.168.1.50](https://192.168.1.50) -k
v2.1의 새로운 기능: 애플리케이션이 인증 또는 특정 헤더를 요구하는 WAF 뒤에 있는 경우 --header 플래그를 사용하여 세션 쿠키나 토큰을 전달합니다.
python3 cve_2025_55182_scanner.py -u https://target.com --header "Cookie: session=123" --header "Authorization: Bearer xyz"
| 플래그 | 설명 |
|---|---|
-u, --url | 단일 대상 URL (예: http://target.com/dashboard). |
-l, --list | 스캔할 URL 목록이 포함된 파일 (한 줄에 하나). |
--bypass | (신규 v2.5) WAF 우회 모드를 활성화합니다. 대상이 [FILTERED]로 감지되면 변형 기법(유니코드, 패딩, 공백)을 자동으로 시도합니다. |
--header | 사용자 정의 헤더를 추가합니다 (예: Cookie: session=xyz, Authorization: Bearer...). 여러 번 사용할 수 있습니다. |
-o, --output | 결과를 텍스트 파일에 저장합니다. |
-k, --insecure | TLS 인증서 검증을 비활성화합니다 (SSL 경고 억제). |
-t, --threads | 대량 스캔을 위한 동시 스레드 수 (기본값: 10). |
--timeout | 요청 시간 초과(초) (멀티파트 페이로드를 수용하도록 기본값: 10초). |
--verbose | 디버그 모드를 활성화합니다. 상세 탐색 단계, WAF 차단 상태 및 우회 시도를 표시합니다. |
📊 결과 해석 (v2.5)
[EXPOSED] | 🔴 (빨강) | 취약
서버가 페이로드를 처리하고 React 19 digest 오류 또는 Action Redirect(303)를 반환했습니다. 노출된 표면에 대한 신뢰도가 높습니다.
[BYPASSED] | 🟠 (주황) | WAF 우회됨
성공! 스캐너가 처음에는 필터를 감지했지만, 변형 기법(예: 패딩/유니코드)을 사용하여 이를 성공적으로 우회하고 취약점을 트리거했습니다.
[SUSPICIOUS] | 🟡 (노랑) | 경고
서버가 페이로드를 파싱하는 동안 크래시(500)가 발생했습니다. X-Powered-By 헤더를 제거하는 강화된 대상에서도 직렬화 로직이 노출되었음을 나타냅니다.
[FILTERED] | 🔵 (파랑) | WAF 규칙 감지됨
서버가 RSC 트래픽을 허용하지만(정상 페이로드는 통과), 특정 WAF 규칙이 익스플로잇 페이로드를 차단했습니다. 대상은 WAF 뒤에서 활성 상태입니다. 우회를 시도하려면 --bypass를 사용하십시오.
[INFO] | 🔵 (청록) | 프로토콜 감지됨
서버가 RSC(text/x-component)를 사용하지만 페이로드를 정상적으로 처리했습니다. 패치되었거나 표준 동작일 가능성이 높습니다.
[BLOCKED] | 🟣 (마젠타) | 전역 WAF 차단
정상적인 핸드셰이크를 포함한 모든 것이 차단되었습니다(403/406). WAF가 프로토콜 전체 또는 사용자의 IP를 차단하고 있습니다.
[SAFE] | 🟢 (초록) | 안전
서버가 404/200을 반환했지만 모든 탐색 경로에서 RSC 헤더/멀티파트 본문을 무시했습니다.
이 탐지 로직을 기반으로 한 Nuclei 템플릿이 이 저장소에 포함되어 있습니다: cve-2025-55182-detection.yaml.
nuclei -t cve-2025-55182-detection.yaml -l targets.txt
[FILTERED]로 감지되면 새로운 --bypass 플래그가 회피 기법(공백, 유니코드, 대형 패딩)을 자동화합니다.multipart/form-data로 전환했습니다.X-Powered-By 헤더를 숨기는 강화된 서버에서의 크래시를 포착합니다.303 See Other 리다이렉트 탐지를 추가했습니다.text/plain에서 multipart/form-data로 전환했습니다. Server Actions에 대해 폼 데이터를 엄격히 요구하고 이전에 404를 반환했던 대상의 미탐(False Negatives)을 해결합니다.HTTP 303 See Other 및 x-action-redirect 헤더를 포착하도록 로직이 업데이트되었습니다. 이는 스캐너가 리다이렉트를 자동으로 따라갈 때 종종 숨겨지는 RSC 처리의 강력한 지표입니다.이 도구는 보안 연구원과 관리자가 자신의 시스템에서 노출된 공격 표면을 식별하도록 돕기 위한 것입니다. 저자는 이 도구의 오용에 대해 책임을 지지 않습니다. 명시적인 테스트 허가가 없는 시스템에는 사용하지 마십시오.
참고 자료:
- https://nvd.nist.gov/vuln/detail/CVE-2025-55182
- https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182