Penetration Test Next.js: Middleware Bypass, Cache Poisoning e Sicurezza React Moderna
Le applicazioni Next.js combinano server rendering, edge middleware, ISR cache e server actions — ognuna è una superficie di attacco unica. Le vulnerabilità Next.js del 2024 includono CVE-2024-43481 (bypass middleware, CVSS 9.1), CVE-2024-46982 (cache poisoning ISR) e CVE-2024-34351 (SSRF). Matproof Sentinel esegue penetration test Next.js mirati, con prova di sfruttamento e report audit-ready DORA / NIS2 / ISO 27001 da 149 €.
Perché Next.js richiede attenzione specifica al penetration test
Next.js è il framework React più popolare per applicazioni full-stack moderne, ma la sua superficie di attacco unica richiede competenze specifiche per il penetration testing. La vulnerabilità CVE-2024-43481 (CVSS 9.1, divulgata marzo 2024) permette il bypass completo del middleware di autenticazione tramite manipolazione dell'header x-middleware-subrequest — un attaccante non autenticato può accedere a route protette inclusi pannelli admin e endpoint di transazione. CVE-2024-46982 espone applicazioni Next.js al cache poisoning ISR (Incremental Static Regeneration), permettendo a un attaccante di manipolare il contenuto servito ad altri utenti. CVE-2024-34351 abilita attacchi SSRF tramite la gestione errata di URL relativi nella libreria server. Oltre alle CVE specifiche, le Server Actions di Next.js 13+ introducono nuovi pattern di sicurezza: validazione input lato server, autorizzazione esplicita per ogni action, e gestione corretta dei revalidate tag per evitare cache poisoning. Per le aziende italiane sotto DORA Art. 24 o NIS2 (D.Lgs. 138/2024), un pentest Next.js con prova di sfruttamento è il modo standard per dimostrare la conformità tecnica.
- CVE-2024-43481 (CVSS 9.1): bypass completo del middleware Next.js tramite header x-middleware-subrequest — un attaccante non autenticato accede a route protette, inclusi pannelli admin e endpoint di pagamento.
- CVE-2024-46982: cache poisoning ISR — attaccante manipola la cache statica rigenerata, servendo contenuto compromesso ad altri utenti senza autenticazione richiesta.
- CVE-2024-34351: SSRF tramite URL relativi malformati nella libreria server Next.js — accesso a endpoint di metadata cloud (AWS IMDSv1, Google metadata server) e servizi interni.
- Server Actions (Next.js 13+): nuovo modello di sicurezza richiede validazione input lato server, autorizzazione esplicita per ogni action — un Server Action senza guardia equivale a un endpoint API pubblico.
- Cache strategies (ISR, dynamic, force-static): configurazioni errate possono esporre dati cached tra utenti diversi — particolarmente critico per applicazioni multi-tenant SaaS.
- Edge middleware su Vercel / Cloudflare: ambienti di esecuzione limitati (Web APIs, no Node.js full) richiedono test specifici per evitare bypass tramite differenze di ambiente.
- Per applicazioni italiane sotto DORA Art. 24, BaFin BAIT equivalent (Banca d'Italia Circolare 285/2013) o NIS2 (D.Lgs. 138/2024), un pentest Next.js documentato è richiesto come prova di conformità tecnica.
Cosa testiamo specificamente in un'applicazione Next.js
- Middleware bypass (CVE-2024-43481): test con header x-middleware-subrequest manipolati per accedere a route protette; verifica versioni Next.js < 14.2.25 / < 13.5.7 / < 15.0.4.
- ISR cache poisoning (CVE-2024-46982): test di manipolazione cache rigenerata tramite header x-now-route-matches; verifica configurazione revalidate-on-stale.
- SSRF via Next.js server (CVE-2024-34351, fetch interno): URL relativi malformati, tentativo di accesso a endpoint metadata cloud (169.254.169.254/), servizi interni della rete VPC.
- Server Actions security: validazione input Zod / Yup, autorizzazione esplicita per ogni action, gestione corretta di useFormState con sanitizzazione output.
- API routes: OWASP Top 10 standard (injection, broken auth, IDOR), validazione tipo TypeScript runtime con Zod, rate limiting (assente di default in Next.js).
- Configurazione next.config.js: header di sicurezza (Content-Security-Policy strict, Strict-Transport-Security con preload), images.remotePatterns per evitare bypass di whitelist.
- Authentication patterns: Next-Auth / Auth.js, Clerk, Lucia — verifica JWT signing, session cookie flags (Secure, HttpOnly, SameSite), gestione corretta del CSRF.
- Vercel-specific: edge functions vs node runtime, environment variables esposte client-side (NEXT_PUBLIC_*), preview deployments con autenticazione e protezioni IP.
- Composition Analysis: package.json + package-lock.json per CVE in dipendenze (next, react, react-dom), audit transitive con npm audit --production.
- TypeScript strict mode: noUncheckedIndexedAccess per evitare runtime errors da indici undefined, strictNullChecks per integrità tipo.
Esempio di finding
CVE-2024-43481 — Middleware bypass tramite header x-middleware-subrequest
L'applicazione Next.js 14.2.3 espone CVE-2024-43481, che permette il bypass completo del middleware di autenticazione tramite il valore manipolato dell'header HTTP x-middleware-subrequest. Un attaccante non autenticato può inviare una richiesta come 'GET /admin/users HTTP/1.1 + x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware' che fa saltare l'esecuzione del middleware authentication.ts. Il test ha permesso di accedere a /admin/users (pannello amministrativo con elenco completo utenti, email, ruoli), /admin/orders (pannello ordini con dati di pagamento parziali), e /api/admin/* endpoint senza autenticazione. La vulnerabilità è documentata e patchata in Next.js ≥ 14.2.25, ≥ 13.5.7, ≥ 15.0.4. Tempo di sfruttamento: 12 secondi.
Correzione: Azione immediata (priorità 1): aggiornare Next.js a versione patchata: ≥ 14.2.25 per linea 14.x, ≥ 13.5.7 per linea 13.x, ≥ 15.0.4 per linea 15.x. Verifica: dopo aggiornamento, tentare nuovamente lo sfruttamento con stesso payload — deve restituire 401/403. Azioni complementari: implementare autorizzazione di second livello al livello API route / Server Action (mai affidarsi solo al middleware come unica difesa); abilitare Content-Security-Policy strict con report-uri per detectare tentativi di sfruttamento; configurare WAF (Cloudflare, AWS WAF) con regola di blocco esplicito per header x-middleware-subrequest da fonti non interne.
Riferimento: CVE-2024-43481 (CVSS 9.1) · CWE-285 Improper Authorization · OWASP A01:2021 Broken Access Control · Next.js Security Advisory GHSA-7gfc-8cq8-jh5f · Vercel post-mortem mag 2024
Pentest Next.js: opzioni a confronto
| — | Scan gratuito | Matproof Sentinel | Consulenza tradizionale |
|---|---|---|---|
| Motore di scansione automatizzato | ✓ (anteprima 3 min) | ✓ Scansione completa | ✗ Solo manuale |
| Copertura OWASP Top 10 | Parziale | ✓ Completa | ✓ Completa |
| Prova di exploit | ✗ | ✓ Per finding | ✓ Per finding |
| Mapping normativo (DORA/NIS2/ISO 27001) | ✗ | ✓ Automatizzato | ✓ Manuale |
| Report PDF pronto per l'audit | ✗ | ✓ Immediato | ✓ Consegna 2–4 settimane |
| Scansioni continue / ricorrenti | ✗ | ✓ Per deploy | ✗ Impegno annuale |
| Tempo al primo risultato | ~3 min | ~30 min scansione completa | 2–4 settimane |
| Prezzo | €0 | Da €149 | €8.000–€25.000 |
| Revisione codice sorgente (SAST) | ✗ | ✓ Piano Growth | ✓ In scope |
| Test API (REST/GraphQL) | ✗ | ✓ Automatizzato | ✓ Manuale |
Pacchetti pentest Next.js
- 1 scansione pentest completa
- Risultati prioritizzati da AI con CVSS 3.1
- Proof-of-exploit per ogni finding
- Report PDF (pronto per l'audit)
- Mapping normativo (DORA, NIS2, ISO 27001)
- Scansioni illimitate (fino a 3 domini)
- Monitoraggio continuo
- Integrazione CI/CD (GitHub, GitLab)
- Tutti i mapping normativi
- Supporto prioritario
- Scansioni + domini illimitati
- Test autenticati / White-Box
- Test API e infrastruttura cloud
- Account manager dedicato
- SLA risposta 24h
Domande frequenti sul pentest Next.js
Quali versioni Next.js sono affette da CVE-2024-43481?
Tutte le versioni Next.js < 14.2.25 (linea 14.x), < 13.5.7 (linea 13.x) e < 15.0.4 (linea 15.x) sono vulnerabili. La vulnerabilità è stata divulgata e patchata il 14 marzo 2024. Versioni Next.js < 12.x non sono direttamente affette ma sono in End-of-Life dal 2023 e dovrebbero essere migrate.
Il pentest copre Vercel, Cloudflare Workers, AWS Amplify o solo hosting self-hosted?
Copriamo tutti i target di deployment Next.js: Vercel (con specifiche Edge Functions vs Node Runtime), Cloudflare Workers + Pages, AWS Amplify, Netlify, e self-hosted (Node.js, Docker, Kubernetes). Per Vercel testiamo anche le configurazioni preview deployments con autenticazione, Edge Config, e KV store. Per Cloudflare, i Durable Objects e D1 database connections.
Testate anche le applicazioni Next.js App Router (Next.js 13+) o solo Pages Router?
Testiamo entrambi. L'App Router (Next.js 13+) ha pattern di sicurezza nuovi: Server Actions, Streaming SSR, parallel routes con autenticazione differenziata, layout-level data fetching. Per il Pages Router classico (ancora in uso in 65% delle codebase Next.js secondo Vercel 2024) testiamo i pattern legacy: getServerSideProps, API routes /pages/api/*, middleware al livello pages.
Quanto tempo richiede un pentest Next.js completo?
La scansione automatica completa (CVE-2024-43481, cache poisoning, SSRF, Server Actions, API routes OWASP Top 10) richiede circa 60 minuti per un'applicazione Next.js tipica. Per applicazioni complesse (microservizi Next.js, multi-tenant SaaS, edge deployment globale) il tempo si estende a 2-3 ore. Il report audit-ready è consegnato entro 24 ore.
Possiamo integrare Matproof Sentinel nel nostro pipeline CI/CD con Vercel o Cloudflare?
Sì, nei piani Starter (299 €/mese) e Growth (799 €/mese). Per Vercel: integrazione tramite GitHub Actions che si attiva su preview deployments — scan rapido (15 min) ad ogni PR, scan completo settimanale su production. Per Cloudflare: webhook integration con Cloudflare Workers Deployment events. I findings Critical/High possono automaticamente bloccare il merge tramite GitHub Status Checks.
Testate anche le applicazioni Next.js con tRPC, GraphQL o REST API?
Tutti i pattern API: tRPC (con specifiche per validation Zod e router authorization), GraphQL (Apollo Server, GraphQL Yoga, urql) con focus su query depth limiting, introspection in production, e batch attacks. REST API classico OWASP API Top 10 (2023). Per applicazioni che combinano client React + tRPC + Server Actions, testiamo l'intera catena: validazione client-side (sempre saltabile), middleware tRPC, autorizzazione lato server, e ritorno dei dati.
Il report Matproof Sentinel è accettato per audit DORA Art. 24 o NIS2 italiani?
Sì. Il report tecnico è strutturato con mapping esplicito a: DORA Art. 24 (test di intrusione regolari), DORA Art. 25 (vulnerability management), NIS2 Art. 21 (misure tecniche) come trasposta in D.Lgs. 138/2024, e ISO 27001:2022 A.8.29 (security testing in development). Per Banca d'Italia (Circolare 285/2013 / Disposizioni in materia di rischio operativo), il report fornisce la base tecnica per le ispezioni di vigilanza.
Cosa succede se troviamo Critical findings durante il pentest?
Notifica immediata via email entro 15 minuti dalla detection. Il report include: severity CVSS 3.1, riproduzione step-by-step con comando exact, evidence (screenshot, request/response), impact analysis, e remediation actionable con example code. Per Critical findings con potential immediate exploitation, offriamo emergency response: chiamata diretta con un security engineer Matproof entro 2 ore lavorative (incluso nel piano Growth, su richiesta nel piano Starter).
Argomenti correlati
Approfondisci — articoli correlati dal blog
Proteggi la tua applicazione Next.js ora
Primo scan in 3 minuti, pentest Next.js completo in 60 minuti con prova di sfruttamento per ogni finding. Report audit-ready DORA / NIS2 / ISO 27001 da 149 €.
Avvia scan gratuito