
Учебная лаборатория, демонстрирующая CVE-2025-55182: критическая RCE-уязвимость в React Server Components через prototype pollution в протоколе Flight
Учебная лаборатория, демонстрирующая CVE-2025-55182 — критическую (CVSS 10.0) уязвимость удалённого выполнения кода в React Server Components, вызванную загрязнением прототипа в десериализаторе протокола Flight.
Отказ от ответственности: Этот репозиторий предназначен только для образовательных целей и санкционированных исследований в области безопасности. Несанкционированный доступ к компьютерным системам противозаконен. Автор не несёт ответственности за неправомерное использование этого материала. Используйте его только в отношении систем, которыми вы владеете или на тестирование которых имеете явное письменное разрешение. Используя этот код, вы соглашаетесь, что несёте ответственность за свои действия.
# 1. Clone
git clone https://github.com/Jeanback1/react-rsc-cve-2025-55182-lab.git
cd react-rsc-cve-2025-55182-lab
# 2. Start the lab (vulnerable + patched instances)
docker compose up -d
# Wait ~2 minutes for both containers to build and start.
# 3. Exploit the vulnerable instance
python exploit/exploit.py http://localhost:3011 id
# 4. Try the same against the patched instance — it fails
python exploit/exploit.py http://localhost:3012 id
docker compose
┌────────────────────────────────┐
│ │
attacker ────▶│ :3011 → rsc-lab-vulnerable │ React 19.2.0
│ (Server Action) │ ← exploitable
│ │
│ :3012 → rsc-lab-patched │ React 19.2.1
│ (no Server Action) │ ← patched
└────────────────────────────────┘
| Контейнер | Порт | Версия React | Server Action | Уязвим? |
|---|---|---|---|---|
rsc-lab-vulnerable | 3011 | 19.2.0 | Да | Да |
rsc-lab-patched | 3012 | 19.2.1 | Нет | Нет |
requests (pip install requests)├── docker-compose.yml # Lab orchestration
├── README.md # This file
├── LICENSE
│
├── vulnerable/ # Vulnerable Next.js app
│ ├── Dockerfile
│ ├── package.json # [email protected], [email protected]
│ └── app/
│ ├── layout.tsx
│ ├── page.tsx # Server Component + Server Action
│ └── actions.ts # 'use server' — the attack surface
│
├── patched/ # Patched Next.js app
│ ├── Dockerfile
│ ├── package.json # [email protected], [email protected]
│ └── app/
│ ├── layout.tsx
│ └── page.tsx # Server Component only (no Server Actions)
│
├── exploit/
│ ├── exploit.py # Educational RCE exploit (well-commented)
│ ├── requirements.txt
│ └── pyproject.toml
│
└── docs/
└── CVE-2025-55182.md # Full technical analysis
# Single command execution
python exploit/exploit.py <target> <command>
# Examples
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__ → загрязнение Object.prototype.thenmultipart/form-data через конечную точку Server ActionX-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__ опасен