
Exploit proof-of-concept per Next.js CVE-2025-66478, che dimostra RCE tramite deserializzazione insicura e contaminazione del prototipo nelle Server Actions. Include un'app vulnerabile e uno script di exploit in Python per la ricerca sulla sicurezza.
Questo repository contiene una Prova di Concetto (PoC) per riprodurre e studiare la vulnerabilità Next.js CVE-2025-66478. Consiste in un'applicazione Next.js vulnerabile e uno script di exploit in Python per testare la vulnerabilità.
Si tratta di una vulnerabilità di Esecuzione di Codice Remoto (RCE) che si verifica nell'elaborazione delle Server Actions di Next.js.
Punti salienti:
__proto__.| Elemento | Descrizione |
|---|
| CVE ID | CVE-2025-66478 |
| Tipo | Esecuzione di Codice Remoto (RCE) |
| Causa principale | Deserializzazione non sicura nel protocollo RSC Flight |
| Gravità (CVSS) | 10.0 (Critico) |
| Impatto | Esecuzione arbitraria di comandi di sistema sul server |
__proto__.Object.prototype.then in tutti gli oggetti. La logica di Next.js identifica erroneamente questi oggetti come Promise (Thenable).await su questa "falsa Promise", il codice JavaScript malevolo iniettato nel metodo then viene eseguito (ad esempio, child_process.execSync).sequenceDiagram
participant Attacker
participant Server as Next.js Server
Attacker->>Server: POST / (JSON with "__proto__": {"then": ...})
Note right of Server: JSON Parsing Pollutes Object.prototype
Server->>Server: Application Logic encounters an Object
rect rgb(200, 150, 150)
Note right of Server: "Thenable" Check Gadget
Server->>Server: Checks: typeof obj.then === 'function'?
Server-->>Server: YES (due to pollution)
end
Server->>Server: Await/Execute malicious .then()
Note right of Server: Malicious JS Code Runs (RCE)
Server-->>Attacker: Response (Action Redirect / Error info)Di conseguenza, mentre il server elabora questa Promise manipolata, esegue codice JavaScript iniettato dall'attaccante, che può portare all'esecuzione di comandi di sistema. Il file main.py incluso è un codice di esempio che riproduce questo scenario di attacco.
Questa vulnerabilità interessa le applicazioni Next.js che utilizzano l'App Router.
Versioni corrette:
next.js/: Codice di esempio dell'applicazione web Next.js vulnerabile.exploit/: Script di esecuzione dell'exploit scritto in Python (main.py).Prima di tutto, devi eseguire il server Next.js di destinazione.
Spostati nella directory next.js:
cd next.js
Installa le dipendenze:
npm install
# Puoi anche usare yarn o pnpm.
Avvia il server di sviluppo:
npm run dev
Verifica di poter accedere a http://localhost:3000 tramite il tuo browser.
Ora puoi testare la vulnerabilità utilizzando lo script Python.
Spostati nella directory exploit dalla radice del progetto:
cd exploit
(Opzionale) Si consiglia di utilizzare un ambiente virtuale:
python3 -m venv venv
source venv/bin/activate # Per Windows: venv\Scripts\activate
Installa le librerie necessarie:
Il modulo requests è richiesto.
pip install requests
Esegui lo script:
python main.py
Di default, punta all'indirizzo locale (http://localhost:3000). Per testare un indirizzo diverso, usa l'opzione --url:
python main.py --url http://target-ip:3000
Questo codice è fornito solo per scopi di ricerca sulla sicurezza e didattici. Usare questo strumento contro sistemi o reti senza autorizzazione preventiva è illegale, e l'utente è l'unico responsabile per qualsiasi problema derivante da tale uso.