사용 매뉴얼
React Server Component의 Proto Pollution 취약점(CVE-2025-55182)을 탐지하는 쿼리 명령어를 제공합니다.
사용법
json "{}" | eval url = "https://target.com" | react2shell-scan-batch
json "{}" | eval url = "https://target.com/api" | react2shell-scan-batch timeout=10
옵션
field: URL이 담긴 필드명 (기본값:url)timeout: 연결/읽기 타임아웃 초 단위 (기본값:30)
출력 필드
_time: 진단 시각verdict: 취약 여부 (vulnerable/not vulnerable/unknown)status: HTTP 응답 상태 코드raw_data: HTTP 응답 원문 (헤더 + 본문)_error: 에러 메시지 (실패 시)
취약점 기술 분석
CVE-2025-55182 (React2Shell)는 Next.js의 Server Actions 기능에서 발생하는 Prototype Pollution 취약점입니다. 공격자가 조작된 multipart/form-data 요청을 전송하면, React의 Flight 프로토콜 파서가 악의적인 객체 참조를 역직렬화하면서 임의 코드 실행(RCE)이 가능해집니다.
영향 받는 버전
- Next.js 15.x ~ 15.1.6
- Next.js 14.x ~ 14.2.24
- Next.js 13.x ~ 13.5.8
공격 원리
1. React Server Components (RSC) Flight 프로토콜
Next.js Server Actions는 React의 Flight 프로토콜을 사용하여 클라이언트-서버 간 데이터를 직렬화/역직렬화합니다. Flight 프로토콜은 $ 접두사를 사용하여 객체 참조를 표현합니다:
2. Prototype Pollution 체인
공격의 핵심은 $ 참조를 통해 객체 프로토타입 체인을 조작하는 것입니다:
3. 가젯 체인 (Gadget Chain)
RCE를 위해 사용되는 주요 가젯:
{
'_prefix': 'console.log(7*7+1)//', // 실행할 코드 프리픽스
'_formData': {'get': '$3:constructor:constructor'}, // Function 생성자 접근
'_chunks': '$2:_response:_chunks' // 내부 청크 배열 접근
}
_prefix: 주입할 JavaScript 코드_formData.get:Function생성자에 접근하여 임의 코드 실행_chunks: 내부 상태 조작을 위한 청크 참조
탐지 방식
실제 코드 실행 없이 취약 여부만 탐지합니다.
페이로드
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
{}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
["$1:aa:aa"]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
HTTP 요청
POST / HTTP/1.1
Host: target.com
Next-Action: x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
[multipart body]
취약 판정 조건
- HTTP 상태 코드:
500 - 응답 본문에
E{"digest"패턴 포함
내부 동작
1. Next.js가 Server Action 요청 수신
2. Flight 파서가 multipart 데이터 파싱
3. name="0" 파트의 ["$1:aa:aa"] 역직렬화 시도
4. $1 참조로 name="1"의 빈 객체 {} 접근
5. {}.aa.aa 접근 시도 → 프로토타입 체인 탐색
6. 존재하지 않는 속성 접근으로 내부 오류 발생
7. 오류가 E{"digest":...} 형식으로 클라이언트에 반환
취약한 서버는 이 프로토타입 체인 탐색 과정에서 오류를 발생시키며, 이 오류 패턴으로 취약 여부를 판단합니다.
보안 권고
패치된 버전으로 업그레이드
- Next.js 15.1.7 이상
- Next.js 14.2.25 이상
- Next.js 13.5.9 이상
완화 조치
- Server Actions 기능 비활성화 (experimental.serverActions: false)
- WAF에서
Next-Action헤더 필터링 - Netlify/Vercel의 경우 자동 패치 적용됨