
Laboratorio di ricerca sulla sicurezza per CVE-2025-55183 e CVE-2025-55184 in React Server Components
Un ambiente completo di test di sicurezza per le vulnerabilità CVE-2025-55183 (Esposizione del codice sorgente) e CVE-2025-55184 (Denial of Service) in React Server Components.
SOLO PER SCOPI EDUCATIVI E DI RICERCA SULLA SICUREZZA
Questo repository contiene applicazioni deliberatamente vulnerabili e strumenti di sfruttamento. Esegui test solo su sistemi di tua proprietà o per i quali hai un'esplicita autorizzazione scritta. I test non autorizzati sono illegali e non etici.
Entrambe le vulnerabilità interessano le versioni di React Server Components dalla 19.0.0 alla 19.2.2, divulgate l'11 dicembre 2025.
| Proprietà | Valore |
|---|---|
| Gravità | Media (CVSS 5.3) |
| Tipo | Divulgazione di informazioni |
| Impatto | Esposizione del codice sorgente del server |
| Autenticazione | Non richiesta |
Gli attaccanti possono manipolare gli argomenti delle Server Action per divulgare codice sorgente riservato al server chiamando .toString() sugli oggetti delle funzioni server. Questo espone:
| Proprietà | Valore |
|---|---|
| Gravità | Alta (CVSS 7.5) |
| Tipo | Denial of Service |
| Impatto | Interruzione completa del servizio |
| Autenticazione | Non richiesta |
Payload appositamente costruiti creano una ricorsione infinita di promise, causando il blocco indefinito del server Node.js. Risultato:
| Aspetto | CVE-2025-55183 | CVE-2025-55184 |
|---|---|---|
| Gravità | Media | Alta |
| Tipo | Divulgazione di informazioni | Denial of Service |
| Impatto | Fuga del codice sorgente | Crash del server |
| Rilevamento | La risposta contiene codice | Timeout/blocco del server |
| Ripristino | Immediato | Richiede riavvio |
TL;DR: L'app È vulnerabile (React 19.0.0), ma le protezioni moderne potrebbero impedire il crash effettivo in questo ambiente demo.
CVE-2025-55184 è una vulnerabilità REALE e CRITICA che interessa React 19.0.0-19.2.2 negli ambienti di produzione. Tuttavia, dimostrare con successo il crash DoS in una demo locale può essere difficile a causa di:
Anche se l'exploit non causa il crash della demo, puoi verificare la vulnerabilità tramite:
cd vulnerable-app
npm list react react-dom
# Output shows:
[email protected] ← VULNERABLE VERSION
[email protected] ← VULNERABLE VERSION
Se vedi versioni dalla 19.0.0 alla 19.2.2, l'applicazione È vulnerabile.
cd scanner
python scan.py http://localhost:3000
Lo scanner verifica:
git clone https://github.com/StealthMoud/react-server-cve-lab.git
cd react-server-cve-lab
# Start the app (vulnerable to both CVEs)
docker-compose up --build -d
# App available at: http://localhost:3000
cd scanner
# Install dependencies
pip install -r requirements.txt
# Scan for both vulnerabilities
python scan.py http://localhost:3000
# Scan only CVE-2025-55183
python scan.py --cve 55183 http://localhost:3000
# Scan only CVE-2025-55184
python scan.py --cve 55184 http://localhost:3000
# Scan multiple targets
python scan.py --file targets.txt
react-server-cve-lab/
├── README.md # This file
├── DOCUMENTATION.md # Complete technical documentation
├── LICENSE
├── .gitignore
├── docker-compose.yml
│
├── vulnerable-app/ # Vulnerable to BOTH CVEs
│ ├── Dockerfile
│ ├── package.json
│ ├── next.config.js
│ └── app/
│ ├── layout.js
│ ├── page.js
│ └── actions.js # Vulnerable server actions
│
├── scanner/
│ ├── requirements.txt
│ ├── scan.py # Scanner for both CVEs
│ └── README.md
│
└── exploits/
├── exploit-55183.py # PoC for CVE-2025-55183
├── exploit-55184.py # PoC for CVE-2025-55184
└── README.md
L'applicazione è un'app Next.js che esegue React 19.0.0 con Server Actions, vulnerabile a entrambe le CVE.
# Using Docker Compose (recommended)
docker-compose up --build -d
# Check if running
curl http://localhost:3000
# View logs
docker-compose logs -f
# Stop the app
docker-compose down
cd vulnerable-app
npm install
npm run build
npm start
Lo scanner unificato rileva sia CVE-2025-55183 sia CVE-2025-55184.
cd scanner
# Scan for both CVEs
python scan.py http://localhost:3000
# Scan specific CVE only
python scan.py --cve 55183 http://localhost:3000
python scan.py --cve 55184 http://localhost:3000
# Verbose output
python scan.py --verbose http://localhost:3000
# Custom timeout
python scan.py --timeout 10 http://example.com