
Questa repository contiene un laboratorio accademico locale per l'analisi di CVE-2025-55182 in un ambiente controllato di React Server Components. Il laboratorio simula la vulnerabilità, il suo sfruttamento e la patch applicata.
app/vulnerable/: Il profilo applicativo React vulnerabile.
src/framework/entry.rsc.tsx: Contiene il punto di deserializzazione non sicura in cui i payload __flight_action vengono eseguiti tramite execSync().[email protected] non patchato.app/patched/: Il profilo applicativo React patchato.
src/framework/entry.rsc.tsx: Contiene la logica di mitigazione che blocca i payload __flight_action con una risposta 403 prima della deserializzazione.infra/: Configurazioni Docker per l'esecuzione isolata.
docker-compose.yml: Avvia sia il profilo vulnerabile (porta 3100) sia quello patchato (porta 3200).scripts/: Script di automazione ed exploit.
exploit-shell.ps1: Una shell di exploit interattiva che sfrutta la vulnerabilità per fornire un terminale remoto simulato (root@container$).run-scenarios.ps1: Script wrapper per eseguire i test di valutazione automatizzati in tests/run-scenarios.mjs.start-lab.ps1: Script di supporto per avviare rapidamente l'ambiente Docker Compose.stop-lab.ps1: Script di supporto per arrestare e ripulire l'ambiente Docker Compose.demo-lab.ps1: Script demo alternativo che esegue entrambe le app localmente (senza Docker) e invia una sequenza di richieste di test.report/: Contiene l'analisi finale.
findings.md: Il report di sicurezza completo che copre la catena di attacco, l'analisi CVSS, le metriche di valutazione e le raccomandazioni di mitigazione.CSE472_ProjectProposal_Revised.md: La proposta di progetto rivista e la documentazione metodologica.tests/: Valutazione automatizzata.
run-scenarios.mjs: Script Node.js che esegue scenari normali, sospetti e di exploit su entrambi i profili, calcolando i tassi di successo e di rilevamento.logs/: Output di telemetria.
vulnerable-requests.log e patched-requests.log: Memorizzano tracce dettagliate delle richieste, inclusi i suspiciousReasons per l'analisi.Se hai scaricato questo progetto come file .zip da GitHub, segui questi passaggi per eseguire il laboratorio e interagire con la simulazione della vulnerabilità sulla tua macchina locale.
Nota sulla PowerShell Execution Policy: Se incontri un errore che indica che lo script
cannot be loadedois not digitally signeddurante l'esecuzione di file.ps1, devi ignorare i criteri di esecuzione per la sessione corrente. Esegui questo comando nella finestra di PowerShell prima di eseguire gli script:Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass(Poiché l'ambito è "Process", devi eseguire di nuovo questo comando in ogni nuova finestra o scheda di PowerShell che apri!)
Estrai il file .zip nella cartella desiderata. Apri una finestra di PowerShell e spostati nella cartella di progetto estratta:
cd path\to\extracted\folder
Usiamo Docker per isolare in modo sicuro l'applicazione vulnerabile. Avvia i container usando lo script di supporto fornito:
.\scripts\start-lab.ps1
(In alternativa, puoi eseguire manualmente cd infra; docker-compose up --build -d)
Una volta avviato:
http://localhost:3100http://localhost:3200Con l'ambiente in esecuzione, puoi testare la vulnerabilità di Remote Code Execution (RCE) lanciando la nostra shell di exploit simulata. Apri una nuova scheda/finestra di PowerShell ed esegui:
.\scripts\exploit-shell.ps1
Questo script agisce come un attaccante che invia payload appositamente costruiti all'endpoint .rsc. Prova a eseguire comandi come:
whoamils /workspaceenvcat /etc/passwdPer testare la versione patchata:
.\scripts\exploit-shell.ps1 -Target "http://localhost:3200"
Noterai che la versione patchata blocca la richiesta e restituisce un messaggio [BLOCKED].
Per generare le metriche di valutazione (tasso di successo, tasso di rilevamento), esegui lo script di test Node.js:
node .\tests\run-scenarios.mjs
(Oppure usa il wrapper: .\scripts\run-scenarios.ps1)
Questo comando mostrerà un riepilogo nella console e salverà un report JSON dettagliato in tests/results/scenario-report.json.
Quando hai finito di sperimentare, puoi arrestare in sicurezza i container per liberare risorse:
.\scripts\stop-lab.ps1