개요
React2Shell은 CVE-2025-55182 취약점을 가리키며, 2025년 11월 29일 Lachlan Davidson에 의해 보고된 보안 이슈입니다. 이 취약점은 React.js(CVE-2025-55182)와 Next.js(CVE-2025-66478)의 React Server Components(RSC) 기능에서 사용하는 Flight 프로토콜의 역직렬화 처리 과정에서 발생합니다. 공격자는 조작된 HTTP 페이로드를 전송하기만 해도 인증 없이 서버 측에서 임의의 코드를 원격으로 실행(RCE)할 수 있습니다. 해당 취약점은 Log4Shell에 비견될 정도로 심각하며, CVSS 점수 10.0을 받아 매우 위중한 보안 위협으로 평가되고 있습니다.
영향도
해당 취약점으로 인해 영향 받는 버전은 아래와 같으며, Wiz 데이터에 따르면 전체 클라우드 환경 39% 에서 취약한 인스턴스가 확인되고 있다라고 보고될 만큼 심각한 취약점으로 평가되고 있습니다.
- React 19.0.0, 19.1.0, 19.1.1, 19.2.0
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-torbopack
- Next.js 15.x(15.0.0 ~ 15.5.6), 16.x(16.0.0 ~ 16.0.6), Next.js 14.3.0.canaray.77 이상 버전
- 취약한 React Server Components를 사용하는 도구
- React Router
- RedwoodJS
- Vite RSC Plugin
- Parcel RSC Plugin
공격 분석
Next.js 기본 실행 상태에서도 익스플로잇이 가능할 정도로 공격 복잡도가 낮습니다.
1. 취약점 확인
// ReactFlightDOMServerNode.js (또는 관련 파일의 유사한 로직)
function requireModule(moduleReference) {
// ... 모듈 로딩 로직 (번들 맵 사용)
// 이 부분에서 역직렬화된 데이터를 바탕으로 모듈의 export를 가져옴
var moduleExports = require(moduleReference.id);
// 역직렬화된 모듈 ID를 통해 가져온 export 값을 반환
// 이 과정에서 'moduleExports' 객체의 프로퍼티가 오염될 수 있는 로직이 실행됨
return moduleExports;
}
해당 취약점을 이용하는 악성 페이로드 전송
$ python react2shell.py
"_response": {
"_prefix": f"process.mainModule.require('child_process').execSync('{EXECUTABLE}');",
"_formData": {
"get": "$1:constructor:constructor",
},
},
리버스 쉘(Reverse Shell) 연결 확보
이와 같이 해당 취약점은 손쉽게 원격 코드 실행 공격이 가능하므로 자동화된 대규모 공격으로 이어질 경우 막대한 피해가 발생할 수 있습니다. 따라서 취약한 React.js 또는 Next.js 버전을 사용 중이라면 즉시 최신 패치를 적용하는 것이 매우 중요합니다.
대응 방안
취약한 React.js, Next.js 버전을 사용하고 있는 사용자는 아래의 최신 패치 버전으로 업그레이드를 수행하고 최신 패치 버전이 제대로 반영되었는지 확인하시기 바랍니다.
취약점이 해결된 최신 패치 버전
- React.js 19.0.1, 19.1.2, 19.2.1
- Next.js 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0, 16.0.7


