Kritisk Next.js-feil, kan omgå innlogging: «Uakseptabelt»

Da Cloudflare prøvde å rulle ut en beskyttelse mot den kritiske Next.js-sårbarheten, endte de opp med å ta ned nettsteder over hele verden.

Alle bør snarest oppdatere til nyeste versjon av Next.js, spesielt om du hoster Next.js selv. 📸: Kurt Lekanger
Alle bør snarest oppdatere til nyeste versjon av Next.js, spesielt om du hoster Next.js selv. 📸: Kurt Lekanger Vis mer

På fredag gikk Next.js ut og advarte om en kritisk sårbarhet i Next.js, som av flere omtales som en av de alvorligste sårbarhetene i et rammeverk på lenge.

– Denne sårbarheten gjør det mulig for angripere å omgå autentisering og autorisasjon basert på middleware, noe som potensielt kan gi uautorisert tilgang til applikasjonen din, skriver autentiseringsleverandøren Clerk i en advarsel.

Sårbarheten – CVE-2025-29927 – ble først oppdaget og analysert av sikkerhetsanalytikeren Rachid Allam og publisert på hans blogg zhero_web_security.

«Når sårbarheten utnyttes, vil en angriper kunne omgå middlewaren og få tilgang til ruter i applikasjonen din som krever innlogging.»

Brukes ofte til autentisering

Middleware gjør det mulig å kjøre kode før en nettverksforespørsel (request) fullføres. I Next.js kan du basert på den innkommende requesten for eksempel endre request- eller response-headere, omdirigere brukere til en annen side, og mye mer.

Ett av de vanligste bruksområdene for middleware er autentisering:

Med middleware kan du beskytte enkelte ruter for en nettside basert på om brukeren er logget inn eller ikke. Dette er metoden kjente autentiserings-løsninger som Auth0 og Clerk typisk bruker.

Eksempel:

  • En bruker besøker for eksempel /dashboard/admin
  • Forespørselen går først innom middleware-en, som sjekker om session-cookien til brukeren er gyldig.
  • Så vil middlewaren sende brukeren videre til dashboardet, eller til en innloggingsside hvis brukeren ikke har de nødvendige tillatelsene.

Når sårbarheten utnyttes, vil en angriper kunne omgå denne sjekken og få tilgang til ruter i applikasjonen din som krever innlogging.

Fjernet fra dokumentasjon

En utvikler skriver på Reddit at han aldri har forstått hvorfor mange gjør autentisering eller autorisasjon i middleware, og at dette ofte er metoden som anbefales i dokumentasjon og i opplæringsvideoer.

– Auth-sjekker bør alltid primært bli gjort så nærme som mulig dataene du skal ha tilgang til, skriver utvikleren.

Han påpeker at kort tid etter at sårbarheten ble oppdaget, ble dokumentasjonen om middleware-funksjonaliteten i Next.js endret slik at autentisering ikke lenger er nevnt i oversikten over vanlige bruksområder.

Dette er pull requesten som ble merget inn av Lee Robinson i Vercel på søndag:

Autentisering er tatt vekk fra listen over vanlige bruksområder for middleware i Next.js.
Autentisering er tatt vekk fra listen over vanlige bruksområder for middleware i Next.js. Vis mer

Det kan selvfølgelig være tilfeldig, og begrunnelsen er blant annet at de ønsket å gjøre beskrivelsen mer generell og mer nyansert.

Ikke alle er like fornøyde med dokumentasjons-endringen:

– Hvor skal vi putte global auth da? Alle auth-biblioteker der ute bruker middleware til dette, fordi Next.js-dokumentasjonen eksplisitt anbefalte dette. Nå har vi en av de mest kritiske sårbarhetene i et stort rammeverk jeg har sett på lenge, skriver utvikleren "soulchild" i en kommentar til PR-en.

– Denne PR-en får det til å se ut som: Ok, det var ikke meningen at du skulle putte auth der uansett. Dette er uakseptabelt, skriver utvikleren.

Cloudflare prøvde å fikse, gjorde vondt verre

Etter at sårbarheten ble kjent, rullet Cloudflare ut en såkalt WAF-regel (Web Application Firewall) som automatisk skulle blokkere nettverksforespørsler som prøver å omgå Next.js middleware.

Det viste seg imidlertid at dette skapte problemer for flere nettsteder, og vi i kode24 har også hørt om tilfeller der nettsteder sluttet å fungere etter at Cloudflare rullet ut fiksen.

– Vi har nå endret denne WAF-regelen til opt-in, siden nettsteder som brukte auth-middleware med tredjeparts auth-leverandører opplevde at forespørsler feilet, skriver Cloudflare.

Beskyttet hos Vercel

Alle versjoner av Next.js fra 11.1.4 til 13.5.6, versjon 14.x før 14.2.25 og 15.x før 15.2.3 er berørt av sårbarheten.

Lee Robinson i Vercel skriver at Next.js-applikasjoner som er hostet hos Vercel eller Netlify ikke er berørt – og automatisk beskyttet.

Hvis du derimot hoster Next.js selv, og bruker middleware til auth eller sikkerhets-sjekker, må du oppdatere snarest.

Det er antagelig lurt uansett å oppdatere til en av disse versjonene:

  • For Next.js 15.x, fikset i 15.2.3
  • For Next.js 14.x, fikset i 14.2.25
  • For Next.js 13.x, fikset i 13.5.9
  • For Next.js 12.x, fikset i 12.3.5

💬 Er du berørt av Next.js-sårbarheten eller fikk trøbbel da Cloudflare prøvde å fikse problemet? Hør gjerne fra deg i kommentarfeltet!