
React Server Components의 치명적인 사전 인증 RCE인 CVE-2025-55182(React2Shell)에 대한 개념 증명 익스플로잇입니다. 승인된 보안 테스트 및 교육을 위해 Flight 프로토콜의 안전하지 않은 역직렬화를 시연합니다.
승인된 로컬 테스트 환경에서만 중요 React2Shell 취약점(CVE-2025-55182 / CVE-2025-66478)을 시연하기 위한 개념 증명(PoC) 도구입니다.
이 취약점(CVSS 10.0)은 정교한 위협 행위자들에 의해 활발히 악용되고 있습니다. Amazon Threat Intelligence에 따르면 Earth Lamia와 Jackpot Panda를 포함한 다수의 중국 연계(China-nexus) 국가 후원 그룹이 공개 게시 후 몇 시간 만에 공개 익스플로잇을 무기화하기 시작했습니다. 미국 사이버보안 및 인프라 보안국(CISA)은 이를 알려진 악용 취약점(KEV) 카탈로그에 추가했습니다.
CVE-2025-55182(React2Shell)는 React Server Components(RSC) "Flight" 프로토콜의 인증 전(pre-authentication) 원격 코드 실행(RCE) 치명적 취약점입니다. CVE-2025-66478은 Next.js에 대해 별도로 할당되었으나, 두 건이 동일한 근본 원인을 공유하므로 CVE-2025-55182의 중복으로 기각되었습니다.
chmod +x pwn-nextjs.sh
./pwn-nextjs.sh [TARGET_URL] [COMMAND]
# Target specific URL
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
이 취약점은 특정 React 패키지에서 발생하며, 해당 패키지를 번들로 포함하는 모든 프레임워크에 영향을 미칩니다.
| 구성 요소 | 영향받는 버전 | 패치 버전 | 비고 |
|---|---|---|---|
| React 패키지 ( react-server-dom-webpack, -parcel, -turbopack) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 | 업스트림 결함의 근원입니다. |
| Next.js (App Router) | 15.x, 16.x, 14.3.0-canary.77 이상 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | 주요 영향 프레임워크입니다. |
| 기타 프레임워크 | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), Vite RSC Plugin | 패치된 React 패키지(>19.0.1, 19.1.2, 19.2.1)를 사용하는 버전으로 업데이트하십시오. | 영향을 받는 React 패키지를 사용하는 경우 취약합니다. |
영향 없음: Next.js 13.x, Next.js 14.x 안정 버전, Pages Router 애플리케이션 및 Edge Runtime은 영향을 받지 않습니다.
RSC Flight 프로토콜은 클라이언트-서버 통신을 위해 데이터를 직렬화합니다. 취약점은 서버의 역직렬화 로직에 있으며, 적절한 검증 없이 수신 페이로드의 객체 속성을 안전하지 않게 확장합니다. 이를 통해 공격자는 __proto__ 또는 constructor 같은 악성 키를 요청에 주입하여 프로토타입 오염을 유발할 수 있습니다.
프로토타입 체인이 오염되면 서버는 공격자의 영향을 받은 실행 경로를 따릅니다. 이를 연쇄적으로 활용해 서버 권한으로 임의의 JavaScript 코드를 실행할 수 있으며, 완전한 원격 코드 실행(RCE)으로 이어집니다.
보안 연구원들은 성공적인 익스플로잇이 다음과 같은 결과를 초래하는 것을 관찰했습니다:
.aws/credentials)을 식별하고 외부로 유출하려는 시도.패치는 필수이며 취약점을 완전히 제거할 수 있는 유일한 방법입니다. 취약한 코드 경로를 비활성화할 수 있는 구성 설정은 없습니다.
# For Next.js users, upgrade to the latest patched version in your release line.
# Example: If you are on Next.js 15.5.x:
npm install [email protected]
# Also ensure React dependencies are updated:
npm install react@latest react-dom@latest
확인: package-lock.json 또는 yarn.lock 파일에 패치된 react-server-dom-* 패키지 버전(19.0.1, 19.1.2 또는 19.2.1)이 반영되어 있는지 확인하십시오.
패치를 적용하는 동안 익스플로잇 시도를 차단하기 위해 웹 애플리케이션 방화벽(WAF) 규칙을 배포하십시오:
AWSManagedRulesKnownBadInputsRuleSet(v1.24+)에 이 CVE에 대한 규칙이 포함되어 있습니다.cve-canary 규칙을 사용할 수 있습니다.참고: WAF 규칙은 임시적이고 불완전한 완화 조치입니다. 패치의 필요성을 대체하지 않습니다.
익스플로잇 시도의 징후를 찾기 위해 로그를 검토하십시오:
next-action 또는 rsc-action-id 헤더가 포함된 POST 요청. $@ 또는 "status":"resolved_model" 같은 패턴이 포함된 요청 본문.whoami, id, uname), /etc/passwd 읽기, 또는 /tmp/(예: pwned.txt)에 대한 파일 쓰기.이 도구는 현재 국가 후원 공격에 활발히 악용되고 있는 CVSS 점수 10.0(최대 심각도) 취약점을 시연합니다.
기억하십시오: 이 도구는 패치가 시급한 이유를 보여줍니다. 이 지식을 시스템을 손상시키는 데가 아닌 보안을 개선하고 방어하는 데 사용하십시오. 모든 의존성을 위에 나열된 패치 버전으로 업데이트하십시오.