Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 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
191 anno 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.

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();
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 middleware:middleware:... per simulare una catena annidata. In pratica: il formato esatto del payload dipende dalla versione di Next.js e dalla struttura del progetto.

  3. 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).


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:
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:
# 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.
Scarica lo strumento