
"Una singola richiesta HTTP appositamente predisposta può compromettere l'intero server." — React Security Team, Dic 2025
Gravità: CRITICA | CVSS v3.1: 10.0 (Massimo) | Stato: Sfruttata attivamente
React2Shell è una vulnerabilità di sicurezza critica nei React Server Components (RSC) — una funzionalità moderna che consente a React di eseguire parti della tua applicazione web sul server invece che nel browser.
Il difetto consente a qualsiasi utente malintenzionato su internet — senza login, senza accessi speciali e senza conoscenze pregresse del tuo sistema — di inviare una singola richiesta HTTP dannosa al tuo server ed eseguire qualsiasi codice desideri su di esso. Ciò significa che può rubare dati, installare malware, bloccare i tuoi file con un ransomware o assumere il pieno controllo del tuo server.
Pensala così: il tuo server ha una porta che doveva aprirsi solo per visitatori fidati, ma si scopre che chiunque può entrare — semplicemente bussando in un modo specifico.
| Proprietà | Valore |
|---|---|
| ID CVE | CVE-2025-55182 (chiamata anche React2Shell) |
| Gravità | Critica — Esecuzione remota di codice (RCE) |
| Punteggio CVSS v3.1 | 10.0 / 10.0 (massimo possibile) |
| Punteggio CVSS v4 | 9.3 / 10.0 |
| Tipo di debolezza | CWE-502 — Deserializzazione di dati non attendibili |
| Metodo di attacco | Singola richiesta HTTP POST, nessuna autenticazione richiesta |
| Scoperta da | Lachlan Davidson (ricercatore di sicurezza) |
| Divulgata | 3 dicembre 2025 |
| Stato dell'exploit | Exploit pubblico disponibile — usato attivamente dagli attaccanti |
| CVE correlata | CVE-2025-66478 (Next.js — duplicato confermato) |
react-server-dom-webpack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-parcel — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-turbopack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0
### Framework interessati
| Framework / Strumento | Ambito interessato |
|---------------------------|-----------------------------------------------------|
| **Next.js 15.x – 16.x** | Solo App Router — Pages Router **NON** è interessato |
| **React Router RSC** | Solo canale unstable / preview |
| **Redwood SDK** | Solo modalità RSC |
| **Waku** | Tutte le versioni con RSC abilitato |
| **Expo** | Solo build preview RSC |
| **Vite RSC Plugin** | Tutte le integrazioni |
| **Parcel RSC Plugin** | Tutte le integrazioni |
| **Qualsiasi configurazione RSC personalizzata** | Qualsiasi server che utilizza la deserializzazione RSC Flight |
> ⚠️ **Importante:** Sei vulnerabile anche se non utilizzi esplicitamente Server Actions o Server Functions — purché React Server Components siano abilitati nella tua app.
> ✅ **Non interessato:** App che utilizzano solo Pages Router, o app senza React lato server.
---
## Perché è così pericoloso?
Tre motivi rendono React2Shell eccezionalmente grave:
1. **Nessuna autenticazione richiesta.** Chiunque su internet può tentare questo attacco. Nessun account, nessun token, nessun accesso precedente necessario.
2. **Funziona su installazioni predefinite.** Un'app Next.js appena creata con `create-next-app` — con zero configurazione personalizzata — è immediatamente sfruttabile. Gli sviluppatori non devono fare nulla di sbagliato per essere vulnerabili.
3. **Affidabilità quasi al 100%.** I ricercatori di sicurezza hanno confermato che l'exploit funziona quasi sempre contro server non patchati.
---
## Come funziona l'attacco?
### La causa principale — in parole semplici
Quando il tuo server React riceve dati da un client, li elabora (deserializza) per capire cosa fare dopo. Il problema è che React **non verifica mai se quei dati sono sicuri o legittimi** — si fida ciecamente di qualunque cosa arrivi.
Un attaccante sfrutta questo inviando dati appositamente costruiti che dirottano il comportamento interno di JavaScript sul server, consentendogli infine di iniettare ed eseguire il proprio codice.
### Spiegazione tecnica
L'exploit utilizza una tecnica chiamata **prototype pollution**:
1. L'attaccante invia una richiesta HTTP POST appositamente costruita a qualsiasi endpoint RSC (non è necessaria alcuna URL speciale).
2. Il parser del React Flight Protocol elabora il payload senza alcuna validazione strutturale.
3. Il payload dannoso inquina `Object.prototype.then` — un oggetto JavaScript fondamentale da cui tutti gli altri oggetti ereditano.
4. Ciò concede all'attaccante l'accesso al costruttore `Function` di JavaScript.
5. L'attaccante utilizza il costruttore `Function` per eseguire codice arbitrario come processo server Node.js.```
Step 1 — Attacker sends crafted HTTP POST
↓
Step 2 — React deserializes payload blindly
↓
Step 3 — Object.prototype.then is hijacked (prototype pollution)
↓
Step 4 — Function constructor is accessed
↓
Step 5 — Attacker's code runs on the server
↓
Step 6 — Attacker has full server control
// This is a simplified version of the vulnerable code path inside React function parseFlightRequest(req) { const flight = req.body;
// ❌ NO validation — the server trusts whatever arrives
const decoded = dangerousDeserialize(flight); // Attack happens here
// If the attacker controls decoded.action → RCE
return executeServerReference(decoded.action);
}
### Come appare l'attacco```http
POST /?flight=1 HTTP/1.1
Content-Type: text/plain
{
"status": "resolved_model",
"$1:__proto__:then": "node:process.mainModule.require('child_process').execSync('id > /tmp/rce')",
"_formData.get": "$1:constructor:constructor"
}
The input chunk appears to be empty. Please provide the source text for chunk 9 of 19 so I can translate it.```bash
curl -X POST https://target.com/react?flight=1
-H "Content-Type: text/plain"
--data '["$ACTION_REF","proto","constructor","<attacker_payload>"]'
> 🚫 **Avviso legale:** Non utilizzare questo strumento contro sistemi che non possiedi o per cui non hai un'autorizzazione scritta esplicita al test.
---
## Versioni corrette — Applica subito la patch
### Pacchetti React RSC
| Pacchetto | Versione con patch |
|------------------------------|------------------------------|
| `react-server-dom-webpack` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-parcel` | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-turbopack` | 19.0.1, 19.1.2, **19.2.1+** |
> 💡 **Consiglio:** Aggiorna alla **19.2.3** per correggere anche le vulnerabilità successive correlate (CVE-2025-55183, CVE-2025-55184, CVE-2025-67779).
### Next.js
| La tua versione | Aggiorna a |
|-----------------|-------------|
| 13.x / 14.x | **14.2.35** |
| 15.0.x | **15.0.5** |
| 15.1.x | **15.1.9** |
| 15.2.x | **15.2.6** |
| 15.3.x | **15.3.6** |
| 15.4.x | **15.4.8** |
| 15.5.x | **15.5.7** |
| 16.0.x | **16.0.7** |
---
## Come proteggerti — Passo dopo passo
Segui questi passaggi **in ordine**. I passaggi 1 e 2 sono obbligatori. Gli altri aggiungono ulteriori livelli di difesa.
### Passaggio 1 — Aggiorna i pacchetti React (il più importante)```bash
# Check your current version
npm list react-server-dom-webpack
# Upgrade to the latest patched version
npm install react-server-dom-webpack@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-turbopack@latest
npm install next@X
### Passaggio 3 — Aggiungere la protezione WAF (difesa in profondità)
| Fornitore cloud | Azione richiesta |
|----------------------|-------------------------------------------------------------------------------------------|
| **AWS WAF** | Abilitare `AWSManagedRulesKnownBadInputsRuleSet` v1.24+ — le regole React2Shell sono incluse |
| **AWS Network Firewall** | Abilitare le regole gestite Active Threat Defense (aggiornate automaticamente tramite MadPot) |
| **Google Cloud Armor** | Distribuire il set di regole React2Shell dalla console |
| **Cloudflare** | Regola WAF `react2shell-cve-2025-55182` — applicata automaticamente per i piani Pro+ |
> ⚠️ **Le regole WAF da sole non bastano.** Non possono bloccare ogni variante di payload. Applicare le patch ai pacchetti è l'unica soluzione completa.
### Passaggio 4 — Se non puoi applicare subito la patch
- **Disattiva temporaneamente gli endpoint RSC Flight** sul tuo server.
- Questo riduce la superficie d'attacco finché non puoi applicare la patch.
### Passaggio 5 — Verifica se sei già stato attaccato
- **Controlla i log del tuo server** per richieste POST sospette agli endpoint RSC/flight precedenti alla data della patch.
- Cerca connessioni in uscita insolite, nuovi account utente o processi inattesi.
### Passaggio 6 — Precauzioni in caso di compromissione
- **Ruota tutti i segreti** — chiavi API, credenziali del database, token di sessione, variabili d'ambiente.
- Tratta qualsiasi server che abbia eseguito una versione vulnerabile come potenzialmente compromesso.
---
## Attività di attacco nel mondo reale
### Entità (ad aprile 2026)
| Metrica | Valore |
|--------------------------|-------------------------------------|
| Sessioni di attacco totali | **8,1 milioni+** (GreyNoise) |
| Volume di attacco giornaliero | **300.000 – 400.000** richieste/giorno |
| Volume giornaliero di picco | **430.000+** (fine dicembre 2025) |
| IP unici degli attaccanti | **8.163** in 101 paesi |
| Tempo alla prima infezione | **2 minuti** dopo l'esposizione del server |
AWS da sola rappresenta oltre un terzo dell'infrastruttura degli attaccanti osservata — il che significa che gli attaccanti operano in gran parte da server cloud per condurre questi attacchi su larga scala.
### Chi sta attaccando?
È stato confermato che molteplici gruppi distinti di attori delle minacce stanno sfruttando questa vulnerabilità:
**Attori legati alla Cina (sponsorizzati dallo Stato)**
- **Earth Lamia** (tracciato anche come UNC5454 da Google) — collegato al Ministero della Sicurezza dello Stato cinese (MSS)
- **Jackpot Panda** — identificato sia dai team di threat intelligence di AWS sia da quelli di Google
- Conducono inoltre lo sfruttamento parallelo e simultaneo di altre vulnerabilità recenti
**Attori legati all'Iran**
- Attori affiliati all'Iran osservati da Google GTIG a dicembre 2025
**Corea del Nord (RPDC)** ⚠️ *Nuovo — gennaio 2026*
- Indicatori collegati alla campagna **Contagious Interview** (un'operazione RPDC di lunga data che prende di mira gli sviluppatori di software)
- Distribuiscono **EtherRAT** — un nuovo backdoor che utilizza **un'infrastruttura di comando e controllo basata su blockchain**, rendendo molto difficile bloccarlo con il blocco standard di IP/domini
**Criminali informatici / Motivati finanziariamente**
- Operatori di ransomware confermati nell'uso di React2Shell per l'accesso iniziale ⚠️ *Nuovo — dicembre 2026*
- Almeno un caso documentato in cui il ransomware è stato distribuito **in meno di un minuto** dopo lo sfruttamento iniziale
- Mining di criptovalute (XMRig) ampiamente distribuito in campagne opportunistiche
### Malware osservato in natura
| Malware / Strumento | Cosa fa | Chi lo usa |
|-----------------------------------|---------------------------|----------------------------------|
| SNOWLIGHT | Scarica altro malware | Earth Lamia (Cina) |
| MINOCAT | Crea tunnel nascosti | Earth Lamia (Cina) |
| HISONIC | Backdoor per la persistenza | Earth Lamia (Cina) |
| COMPOOD | Sopravvive ai riavvii | Earth Lamia (Cina) |
| **EtherRAT** ⚠️ *Nuovo* | Backdoor C2 su blockchain | RPDC / Contagious Interview |
| XMRig | Mina criptovalute | Molteplici gruppi |
| Cobalt Strike | Framework di controllo remoto | Campagne "emerald" e "nuts" |
| Sliver / Nezha | Framework C2 | Campagna "emerald" |
| Fast Reverse Proxy (FRP) | Tunneling di rete | Molteplici gruppi |
| Secret-Hunter | Ruba le credenziali | Campagna "nuts" |
| Botnet Mirai / Rondo | DDoS / persistenza | Attori opportunistici |
| MeshAgent (strumento RMM) | Gestione remota | Molteplici gruppi (persistenza) |
| **Web shell Next.js in memoria** ⚠️ *Nuovo* | Persistenza furtiva | Molteplici attori (confermato da GTIG) |
> 💡 **Che cos'è una web shell in memoria?** È un backdoor che viene eseguito interamente nella memoria del server — senza lasciare file su disco, il che rende estremamente difficile individuarlo con antivirus standard o strumenti di scansione dei file.
> 💡 **Che cos'è il C2 basato su blockchain?** Invece di connettersi ai server degli attaccanti tramite normali indirizzi IP o domini (che possono essere bloccati), EtherRAT riceve i propri comandi dalle transazioni blockchain — un sistema decentralizzato che non può essere facilmente smantellato o bloccato.
---
## Strumenti di rilevamento
### Microsoft Defender for Cloud
Nella galleria di security explorer sono disponibili due modelli dedicati:
- *Contenitori esposti a Internet che eseguono immagini di contenitori vulnerabili a React2Shell — CVE-2025-55182*
- *Macchine virtuali esposte a Internet vulnerabili a React2Shell — CVE-2025-55182*
Microsoft Security Exposure Management mappa inoltre automaticamente i percorsi di attacco di React2Shell nella tua infrastruttura cloud.
### GreyNoise
È disponibile un modello di blocco pronto all'uso: **React Server Components Unsafe Deserialization CVE-2025-55182 RCE Attempt**
I dataset completi delle impronte degli attaccanti (ASN, JA4T, JA4H) sono disponibili pubblicamente:```
github.com/GreyNoise-Intelligence/gn-research-supplemental-data/tree/main/2026-01-06-react2shell
Usa Runtime Vulnerability Analytics — filtra per CVE-2025-55182 per identificare pacchetti React o Next.js vulnerabili nel tuo ambiente.
Dopo la divulgazione, circa 145 strumenti exploit falsi e non funzionanti sono stati diffusi online — molti generati da IA. Rischi dell'uso di strumenti non verificati:
Usa solo scanner provenienti da fonti verificate e fidate dalla community.
Nov 29, 2025 Lachlan Davidson privately reports the vulnerability to Meta / React team
Dec 03, 2025 Patched packages published to npm CVE-2025-55182 publicly disclosed Vercel deploys runtime-level protections (not just WAF) Cloudflare WAF rules activated Mass automated scanning begins within hours of disclosure
Dec 04, 2025 First working public exploit released by Moritz Sanft Default create-next-app confirmed exploitable with no changes
Dec 05, 2025 Discoverer Lachlan Davidson releases his own PoC (~30 hours post-disclosure) Active exploitation observed in Datadog and Rapid7 honeypots Darktrace honeypot infected in 2 minutes after deployment
Dec 05–08 "emerald" and "nuts" malware campaigns deploy Cobalt Strike, Sliver, Nezha, FRP, Secret-Hunter; Mirai and Rondo botnets also active 362 unique attacker IPs observed; 152 with identifiable payloads
Dec 08, 2025 Rapid7 confirms exploitation using the public PoC
Dec 11, 2025 Follow-on CVEs disclosed: CVE-2025-55183 and CVE-2025-55184
Dec 12, 2025 Google GTIG identifies China-nexus threat clusters Iran-nexus activity also flagged
Dec 15, 2025 Microsoft confirms hundreds of compromised machines Coin miners and backdoors (SNOWLIGHT, HISONIC) deployed at scale Microsoft Defender for Cloud templates published
Dec 17, 2025 ⚠️ [NEW] Ransomware operators confirmed using React2Shell for initial access — malware deployed in under one minute post-exploitation (Reported by BleepingComputer, based on S-RM and Microsoft Defender)
Dec 29, 2025 AWS formally attributes activity to Earth Lamia and Jackpot Panda AWS Network Firewall Active Threat Defense rules updated
Jan 06, 2026 GreyNoise publishes full attacker fingerprint dataset (8.1M+ attack sessions recorded)
Jan 13, 2026 ⚠️ [NEW] IronGate Security identifies DPRK (North Korea) exploitation Indicators linked to Contagious Interview campaign EtherRAT (blockchain C2 backdoor) deployed post-exploitation Attacker staging involves downloading Node.js runtime before payload
Jan 26, 2026 Additional DoS vulnerability CVE-2026-23864 disclosed and patched
Mar 04, 2026 Dynatrace advisory updated with latest remediation guidance
---
## Riferimenti
| Fonte | Link |
|---------------------------------|-----------------------------------------------------------------------------------------------|
| Advisory ufficiale di React | https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components |
| React2Shell (Scopritore) | https://react2shell.com |
| Advisory Next.js | https://nextjs.org/blog/CVE-2025-66478 |
| Approfondimento Wiz | https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182 |
| Blog di sicurezza Microsoft | https://www.microsoft.com/en-us/security/blog/2025/12/15/defending-against-the-cve-2025-55182-react2shell-vulnerability-in-react-server-components/ |
| Google Threat Intelligence | https://cloud.google.com/blog/topics/threat-intelligence/threat-actors-exploit-react2shell-cve-2025-55182 |
| Bollettino di sicurezza AWS | https://aws.amazon.com/security/security-bulletins/AWS-2025-030/ |
| Attribuzione China-Nexus AWS | https://aws.amazon.com/blogs/security/china-nexus-cyber-threat-groups-rapidly-exploit-react2shell-vulnerability-cve-2025-55182/ |
| Palo Alto Unit 42 | https://unit42.paloaltonetworks.com/cve-2025-55182-react-and-cve-2025-66478-next/ |
| Ricerca Trend Micro | https://www.trendmicro.com/en_us/research/25/l/CVE-2025-55182-analysis-poc-itw.html |
| GreyNoise Observation Grid | https://www.greynoise.io/blog/cve-2025-55182-react2shell-opportunistic-exploitation-in-the-wild-what-the-greynoise-observation-grid-is-seeing-so-far |
| Analisi Darktrace | https://www.darktrace.com/blog/react2shell-how-opportunist-attackers-exploited-cve-2025-55182-within-hours |
| Advisory Dynatrace | https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/ |
| BleepingComputer — Ransomware | https://www.bleepingcomputer.com/news/security/critical-react2shell-flaw-exploited-in-ransomware-attacks/ |
| IronGate — Attività DPRK | https://www.irongatesecurity.com/ironintel/react2shell-cve-2025-55182 |
| Voce NVD | https://nvd.nist.gov/vuln/detail/CVE-2025-55182 |
---
**Crediti per la vulnerabilità:**
Scoperta originale e divulgazione responsabile a cura di **Lachlan Davidson** (29 novembre 2025).
---
*Ultimo aggiornamento: 16 aprile 2026*
*Questo documento è solo a scopo educativo e di sicurezza difensiva.*
| CVE ID | Descrizione | Gravità | Stato |
|---|
| CVE-2025-55182 | Esecuzione remota di codice RSC — questa vulnerabilità | 10.0 | Corretto |
| CVE-2025-66478 | RCE a valle di Next.js (duplicato confermato) | 10.0 | Rifiutato — duplicato |
| CVE-2025-55183 | Esposizione del codice sorgente tramite RSC | 5.3 | Corretto in 19.2.2+ |
| CVE-2025-55184 | Denial of Service tramite loop infinito nel parser RSC | 7.5 | Corretto in 19.2.2+ |
| CVE-2025-67779 | DoS — correzione incompleta per CVE-2025-55184 | 7.5 | Corretto in 19.2.3+ |
| CVE-2026-23864 | Ulteriore Denial of Service RSC (gennaio 2026) | 7.5 | Corretto |