
CVE-2025-55182를 시연하는 교육용 랩: Flight 프로토콜의 프로토타입 오염을 통한 React Server Components의 심각한 RCE
CVE-2025-55182를 시연하는 교육용 랩입니다. 이는 React Server Components에서 Flight 프로토콜 역직렬화기의 프로토타입 오염(prototype pollution)으로 인해 발생하는 심각도(CVSS 10.0)의 원격 코드 실행(RCE) 취약점입니다.
면책 조항: 이 저장소는 교육 및 공인된 보안 연구 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 저자는 이 자료의 오용에 대해 어떠한 책임도 지지 않습니다. 소유한 시스템이나 명시적인 서면 허가를 받은 시스템에 대해서만 사용하십시오. 이 코드를 사용함으로써 귀하는 자신의 행동에 책임이 있음에 동의하는 것입니다.
# 1. 클론
git clone https://github.com/Jeanback1/react-rsc-cve-2025-55182-lab.git
cd react-rsc-cve-2025-55182-lab
# 2. 랩 시작 (취약 + 패치된 인스턴스)
docker compose up -d
# 두 컨테이너가 빌드되고 시작될 때까지 약 2분 대기.
# 3. 취약한 인스턴스 공격
python exploit/exploit.py http://localhost:3011 id
# 4. 패치된 인스턴스에 동일하게 시도 — 실패함
python exploit/exploit.py http://localhost:3012 id
docker compose
┌────────────────────────────────┐
│ │
attacker ────▶│ :3011 → rsc-lab-vulnerable │ React 19.2.0
│ (Server Action) │ ← 공격 가능
│ │
│ :3012 → rsc-lab-patched │ React 19.2.1
│ (no Server Action) │ ← 패치됨
└────────────────────────────────┘
| 컨테이너 | 포트 | React 버전 | Server Action | 취약 여부 |
|---|---|---|---|---|
rsc-lab-vulnerable | 3011 | 19.2.0 | 예 | 예 |
rsc-lab-patched | 3012 | 19.2.1 | 아니요 | 아니요 |
requests (pip install requests)├── docker-compose.yml # 랩 오케스트레이션
├── README.md # 이 파일
├── LICENSE
│
├── vulnerable/ # 취약한 Next.js 앱
│ ├── Dockerfile
│ ├── package.json # [email protected], [email protected]
│ └── app/
│ ├── layout.tsx
│ ├── page.tsx # Server Component + Server Action
│ └── actions.ts # 'use server' — 공격 표면
│
├── patched/ # 패치된 Next.js 앱
│ ├── Dockerfile
│ ├── package.json # [email protected], [email protected]
│ └── app/
│ ├── layout.tsx
│ └── page.tsx # Server Component만 포함 (Server Actions 없음)
│
├── exploit/
│ ├── exploit.py # 교육용 RCE 익스플로잇 (상세 주석 포함)
│ ├── requirements.txt
│ └── pyproject.toml
│
└── docs/
└── CVE-2025-55182.md # 전체 기술 분석
# 단일 명령 실행
python exploit/exploit.py <target> <command>
# 예시
python exploit/exploit.py http://localhost:3011 id
python exploit/exploit.py http://localhost:3011 "cat /etc/passwd"
python exploit/exploit.py http://localhost:3011 "ls -la /app"
익스플로잇은 세 단계로 동작합니다:
__proto__ 탐색을 포함한 Flight 페이로드를 만들어 Object.prototype.then을 오염시킵니다.multipart/form-data 형태의 페이로드를 전송합니다.X-Action-Redirect 응답 헤더(base64 인코딩)에서 명령 출력을 추출합니다.| 패키지 | 취약 버전 | 패치 버전 |
|---|---|---|
react | ≤ 19.2.0 | ≥ 19.2.1 |
react-dom | ≤ 19.2.0 | ≥ 19.2.1 |
react-server-dom-webpack | ≤ 19.2.0 | ≥ 19.2.1 |
전체 분석은 docs/CVE-2025-55182.md를 참조하십시오:
__proto__ 탐색이 위험한 이유