Lab dell'applicazione bancaria vulnerabile React2Shell
Applicazione bancaria deliberatamente vulnerabile per CVE-2025-55182 (React) e CVE-2025-66478 (Next.js) per imparare, rilevare e testare in sicurezza React2Shell. Esegue React 19.0.0 e Next.js 15.0.3 non patchati.
Panoramica
- Una SecureBank immaginaria realizzata con Next.js App Router e Server Actions.
- Configurazione predefinita, nessun codice pericoloso personalizzato, lasciata intenzionalmente senza patch.
- Progettata per studiare la deserializzazione non sicura nel protocollo RSC "Flight" e per esercitarsi nel rilevamento e nella mitigazione.
Avvio rapido (Docker consigliato)
# 1. Avvia il lab
docker-compose up -d
# 2. Apri l'app
http://localhost:3000
# 3. Ferma quando hai finito
docker-compose down
Credenziali demo:
admin / admin123
johndoe / password123
janedoe / password456
Configurazione manuale e modalità di sviluppo
Esecuzione manuale simile alla produzione:
npm install --legacy-peer-deps
npm run build
npm start
# Visita http://localhost:3000
Sviluppo con hot reload:
npm install --legacy-peer-deps
npm run dev
Note:
- Usare sempre --legacy-peer-deps a causa del blocco intenzionale delle versioni.
- Se la porta 3000 è occupata, modifica il mapping in docker-compose.yml (es., 3001:3000) oppure esporta PORT prima di avviare.
Stato operativo rapido
- Container: react2shell-vulnerable-bank
- Porta: 3000 (atteso HTTP 200 OK)
- Versioni vulnerabili: React 19.0.0, Next.js 15.0.3
Comandi utili:
docker-compose ps
docker-compose logs -f vulnerable-bank
docker-compose restart
docker-compose build --no-cache && docker-compose up -d
Riepilogo delle vulnerabilità (React2Shell)
- CVE-2025-55182 (React) e CVE-2025-66478 (Next.js) consentono RCE non autenticata tramite deserializzazione non sicura nella RSC.
Versioni interessate rilevanti:
- React: 19.0.0, 19.1.0, 19.1.1, 19.2.0
- Next.js: >=14.3.0-canary.77, tutte le 15.x, 16.x non patchate
La realtà dello sfruttamento
- Nessun exploit RCE noto pubblicamente per un'app predefinita; react2shell.com dice: "Watch this space."
- Le PoC che espongono manualmente child_process, vm o fs non sono rappresentative.
Riferimenti