Next.js 16.4.5: aktualizacja bezpieczeństwa, kogo dotyczy

Next.js 16.4.5 i 15.5.29 z 3 listopada 2026 łatają siedem luk, w tym cztery w use cache i Cache Components. Kogo dotyczą, która linia ma poprawki i jak łatać.

Czas czytania: 9 min czytaniaOpublikowano:

Next.js 16.4.5 i 15.5.29, czyli listopadowa aktualizacja bezpieczeństwa z 2026 roku, łatają siedem luk, z czego cztery w use cache i Cache Components. Obie wersje trafiły do npm 3 listopada 2026, o 18:01 i 18:36 UTC, a tag latest wskazuje teraz 16.4.5. Na Next.js 16 uruchom npm install next@16.4.5, na 15 – npm install next@15.5.29. Dotyczy to także Next.js 16.4.4, wydania z poprawkami błędów z poprzedniego dnia, które żadnej z tych luk nie naprawia. 15.5.29 ma trzy poprawki: wstrzykiwanie odpowiedzi za proxy, obejście blokady SVG w optymalizacji obrazów i nagłówek z ciasteczkami w trasach Edge. Pozostałe cztery dotyczą tylko aplikacji 16.x z Cache Components lub use cache. Jeśli używasz Cache Components z root params, hostujesz sam przez next start, ustawiasz ciasteczka w trasach Edge albo optymalizujesz zdalne obrazy, zaktualizuj dziś, a my wyczyścilibyśmy też każdy cache, który przeżywa deploy. Każde twierdzenie poniżej sprawdziliśmy 4 listopada 2026 w advisories, wydaniach na GitHubie, rejestrze npm i na blogu Next.js. Żadnej z luk nie odtwarzaliśmy.

Co się zmieniło w Next.js 16.4.5 i 15.5.29

Noty wydania 16.4.5 (otwiera się w nowej karcie) wymieniają siedem advisories, a noty wydania 15.5.29 (otwiera się w nowej karcie) trzy z nich. W porównaniu 16.4.4 i 16.4.5 (otwiera się w nowej karcie) wydanie to osiem commitów: po jednej poprawce na advisory i podbicie wersji, bez innych zmian. Porównanie 15.5.28 i 15.5.29 (otwiera się w nowej karcie) dokłada do trzech poprawek trzy commity, które dotyczą tylko procesu wydań i CI samego Next.js. W rejestrze npm (otwiera się w nowej karcie) obie wersje mają te same zależności zewnętrzne, zakres peer dla Reacta i zakres Node.js co poprzednia łatka (>=20.9.0 w 16.4.5), a jedyną inną zmianą jest @next/env, przypięty do dokładnej wersji next, który przesuwa się razem z nim w lockfile.

WersjaW npm (UTC)Liniadist-tag 4 listopadaPoprawki z listopada
16.4.42 lis 2026, 10:4916.x, Active LTS-Brak
16.4.53 lis 2026, 18:0116.x, Active LTSlatestWszystkie siedem
15.5.2814 paź 2026, 17:3615.x, Maintenance LTS-Brak
15.5.293 lis 2026, 18:3615.x, Maintenance LTSbackportWstrzykiwanie odpowiedzi, obejście SVG, nagłówek Edge

Każde advisory ma na GitHubie poziom zagrożenia, wynik CVSS 4.0 i identyfikator CVE; odczytaliśmy je 4 listopada przez API advisories GitHuba (otwiera się w nowej karcie). Wpis Next.js (otwiera się w nowej karcie) podaje własną ocenę i żadnego CVE:

AdvisoryCo idzie nie takBlog Next.jsGitHub (CVSS 4.0)Poprawka w 
GHSA-mfr8-8qww-v76h (otwiera się w nowej karcie), CVE-2026-119790Wynik use cache dla jednej wartości root param trafia do innych, gdy funkcję wywołuje też unstable_cacheHighModerate (6,3)16.4.5
GHSA-vc7v-qv4w-wrv8 (otwiera się w nowej karcie), CVE-2026-119351Zewnętrzny wpis use cache zapisuje się bez root param, który odczytał wewnętrznyMediumModerate (6,3)16.4.5
GHSA-vvgp-ww4w-46vf (otwiera się w nowej karcie), CVE-2026-119350Jedno żądanie może zatruć powłokę fallback, którą dzieli cała rodzina trasMediumModerate (6,3)16.4.5
GHSA-rhh4-g77r-r9qj (otwiera się w nowej karcie), CVE-2026-119349Różne binarne argumenty funkcji use cache dostają ten sam klucz cacheMediumModerate (6,3)16.4.5
GHSA-pc58-hwjq-p385 (otwiera się w nowej karcie), CVE-2026-119348Przekazana dalej odpowiedź z fetch zachowuje nagłówki ramkowania skompresowanej treści przy rozpakowanym bodyMediumModerate (6,3)16.4.5, 15.5.29
GHSA-7qx7-33qx-rqx2 (otwiera się w nowej karcie), CVE-2026-119347SVG podszyte pod AVIF omija dangerouslyAllowSVG: falseMediumModerate (6,9)16.4.5, 15.5.29
GHSA-f3mh-rxg3-f5g2 (otwiera się w nowej karcie), CVE-2026-119346Ciasteczko ustawione w trasie Edge ląduje w nagłówku x-middleware-set-cookie, który JavaScript z tego samego originu może odczytaćMediumModerate (6,0)16.4.5, 15.5.29

Root param to parametr trasy w root layoucie, na przykład [locale] albo [tenant] w app/[tenant]/layout.tsx, odczytywany przez next/root-params. Według advisories wpis use cache powinien zależeć od każdego root param, który odczytuje jego funkcja, obok argumentów, z których use cache buduje klucz wpisu. Dwa z czterech błędów cache gubią root param z klucza, więc aplikacja, która rozdziela najemców, serwisy albo języki przez root param, może podać zbuforowane dane jednego najemcy drugiemu.

Czy listopadowe luki są wysokie czy średnie?

Jedno i drugie, zależnie od źródła. Zapowiedź z 27 października (otwiera się w nowej karcie) mówiła o „seven medium vulnerabilities”. Wpis z 3 listopada nazywa wyciek przez unstable_cache lukę High, a pozostałe sześć Medium. Advisories na GitHubie i obie noty wydania dają wszystkim siedmiu Moderate. Wyniki leżą blisko siebie: sześć advisories ma od 6,0 do 6,3, a obejście SVG ma 6,9, najwięcej, jako jedyne z wektorem CVSS bez wymagań ataku (AT:N) przy niskiej złożoności i bez udziału użytkownika. Jeśli śledzisz wyciek przez unstable_cache, zapisz ocenę High, bo wyciek między najemcami to poważna sprawa dla aplikacji multi-tenant, niezależnie od wyniku.

Kogo dotyczą luki Next.js z listopada 2026

Każde advisory wymaga konkretnej konfiguracji. Znajdź swoją w lewej kolumnie; warunki pochodzą z advisories i wpisu Next.js.

Dotyczy cię, jeśliAdvisoryLinie
Masz włączone Cache Components, a jedna publiczna funkcja use cache, która odczytuje root param, jest wywoływana bezpośrednio i wewnątrz unstable_cache, a wywołanie przez unstable_cache trafia na trwające pierwsze wypełnienie wpisu po starcie procesu (poza tym wyścigiem takie zagnieżdżenie rzuca błąd)GHSA-mfr816.x od 16.3.0
Wewnętrzna funkcja use cache odczytuje root param i zwraca gotowe dane obok wciąż oczekującego promise, a zewnętrzna funkcja use cache kończy się, nie czekając na niegoGHSA-vc7v16.x od 16.2.0
Hostujesz sam przez next start, z cacheComponents: true i partialPrefetching nieustawionym lub false, a trasa dynamiczna ma blokującą powłokę fallback o kształcie opisanym w advisoryGHSA-vvgp16.x od 16.4.0
Funkcja use cache przyjmuje binarne argumenty (Uint8Array, Blob), które odróżniają użytkowników lub kontaGHSA-rhh416.x
Hostujesz sam, route handler albo fetch cache zwraca pobrany Response bez zmian, a reverse proxy HTTP/1.1 kolejkuje żądania z pipeliningiem na wspólnym połączeniu z backendemGHSA-pc5816.x, 15.x i starsze
Hostujesz sam optymalizator obrazów (/_next/image), zostawiasz images.dangerouslyAllowSVG na domyślnym false, optymalizujesz obrazy z dozwolonego źródła, nad którym atakujący ma kontrolę, i używasz natywnego backendu, który umie dekodować SVGGHSA-7qx716.x, 15.x
Route handler Edge w App Routerze albo trasa API Edge w Pages Routerze ustawia ciasteczko przez NextResponse.cookies.set()GHSA-f3mh16.x, 15.x

Wpis Next.js zawęża dwie z nich. Wyciek ciasteczek w Edge nie odtworzył się w route handlerach Node.js ani przy cookies().set(). Wymaga też, by na twoim originie działał już JavaScript atakującego, więc nie jest sposobem na uruchomienie skryptu. Wstrzykiwanie odpowiedzi wymaga opisanego zachowania proxy z pipeliningiem i nie dotyczy każdego reverse proxy. Trzy advisories (zatrucie powłoki, wstrzykiwanie odpowiedzi i obejście SVG) opisują wyłącznie self-hosting. Wpis w changelogu Netlify o lukach Next.js (otwiera się w nowej karcie), zaktualizowany 4 listopada, wymienia cztery z siedmiu jako dotyczące stron na Netlify i wydaje adapter @netlify/plugin-nextjs 5.16.6 na przypadek ciasteczek w Middleware.

Jak sprawdzić, czy twoja aplikacja używa podatnych wzorców

Z katalogu głównego projektu te polecenia znajdą konfiguracje z tabeli:

npx next --version                                      # poniżej 16.4.5 lub 15.5.29: aktualizuj
grep -rn "cacheComponents\|partialPrefetching" next.config.*
grep -rln "next/root-params" app src lib 2>/dev/null    # root params w kodzie z cache
grep -rln "unstable_cache" app src lib 2>/dev/null      # razem z "use cache": GHSA-mfr8
grep -rln "runtime = \"edge\"" app src pages 2>/dev/null # trasy Edge: szukaj cookies.set()

Przy ciasteczkach w Edge wyślij żądanie do trasy, która ustawia ciasteczko, i poszukaj wewnętrznego nagłówka w odpowiedzi. Po aktualizacji commit z poprawką (otwiera się w nowej karcie) usuwa go z odpowiedzi Edge:

curl -s -D - -o /dev/null https://your-app.example/api/login | grep -i x-middleware-set-cookie

Które wersje Next.js dostają poprawkę?

Tylko dwie linie LTS. Polityka wsparcia Next.js (otwiera się w nowej karcie) stawia 16.x w Active LTS, a 15.x w Maintenance LTS z aktualizacjami bezpieczeństwa do 31 stycznia 2027; 14.x i starsze nie są wspierane. W npm 3 listopada nie pojawiło się żadne wydanie 16.2.x ani 16.3.x: najnowsze to wciąż 16.2.12 (25 lipca) i 16.3.8 (30 września).

  • Od 16.0 do 16.4.4: przejdź na 16.4.5. Nie ma backportu dla 16.2 ani 16.3, więc razem z łatką dostajesz aktualizację wersji minor. Przed przejściem przeczytaj noty wydania 16.4.4 (otwiera się w nowej karcie) i zmiany w 16.4.
  • Od 15.0 do 15.5.28: przejdź na 15.5.29. Luki w cache nie dotyczą 15.x.
  • 14.x i starsze: advisory o wstrzykiwaniu odpowiedzi ma w polu wersji jednocześnie >= 16.0.0 i < 16.0.0, co czytamy jako każdą wersję, a najnowsze 14.x w npm to wciąż 14.2.35 z grudnia 2025. Pozostałe sześć nie wymienia żadnej wersji poniżej 15.0.0. Advisory nie podaje obejścia, a 14.x nie dostaje łatki, więc wyjściem jest 15.5.29 albo 16.4.5. Pola z wersjami w samych advisories czytaj ostrożnie. 4 listopada większość z nich nie podawała żadnej wersji z poprawką. Advisory o zagnieżdżonym use cache wskazywało 16.4.2, czemu przeczą noty wydania 16.4.5, a trzy podawały 16.4.2 jako ostatnią podatną wersję, choć 16.4.3 i 16.4.4 nie mają żadnej poprawki bezpieczeństwa. Żadnego z siedmiu nie było jeszcze w globalnej GitHub Advisory Database (jej API zwracało 404 dla każdego), a Dependabot alarmuje tylko o advisories zweryfikowanych przez GitHuba (otwiera się w nowej karcie). Brak alertu Dependabota nie znaczy więc dziś, że masz łatkę. Kieruj się notami wydania: 16.4.5 i 15.5.29.

Jak zaktualizować Next.js do 16.4.5 lub 15.5.29

  1. Sprawdź, którą wersję masz

    Uruchom npx next --version albo npm ls next. W monorepo sprawdź każdą aplikację: każda, która rozwiązuje się do wersji poniżej 16.4.5 na 16.x albo poniżej 15.5.29 na 15.x, wymaga aktualizacji.

  2. Zainstaluj wersję z poprawkami

    Uruchom npm install next@16.4.5 na 16.x albo npm install next@15.5.29 na 15.x (pnpm add i yarn add działają tak samo). Node.js i zakres peer dla Reacta się nie zmieniają, więc react i react-dom zostają bez zmian.

  3. Sprawdź, co rozwiązał lockfile

    Uruchom ponownie npm ls next i wdrażaj z czystej instalacji. Zakres z daszkiem, np. ^16.4.4 w package.json, bierze 16.4.5 dopiero po aktualizacji lockfile.

  4. Wyczyść cache, który przeżywa deploy

    Wpisy zapisane przed poprawką zostają błędne także po niej: wyciek przez unstable_cache trwa, dopóki wpis nie zostanie zrewalidowany lub usunięty, a zatruta powłoka zachowuje swój błąd 404 po restartach. Advisories nie każą niczego czyścić; to nasza własna rada: jeśli używasz współdzielonego cache handlera albo trwałego wolumenu na cache, wyczyść go po aktualizacji. Na Netlify postępuj według jego changelogu: wyczyść branch deploys i Deploy Previews, których deploy produkcyjny nie czyści.

  5. Obejścia stosuj tylko, dopóki nie możesz zaktualizować

    Advisory o unstable_cache podaje, że niewywoływanie funkcji use cache wewnątrz unstable_cache jest pełnym obejściem. Obejście dla powłoki to partialPrefetching: true w next.config. Pozostałe pięć nie podaje żadnego, więc zaktualizuj, gdy tylko możesz.

Na co uważać

  • 16.4.4 nie ma łatki. Ukazało się dzień wcześniej i to wydanie z poprawkami błędów. Zgłoszenie bezpieczeństwa zamykaj dopiero na 16.4.5 albo 15.5.29.
  • Komentarz przy instalacji mówi „16.5”. We wpisie Next.js linia npm install next@16.4.5 ma komentarz # for 16.5. Polecenie jest poprawne. 16.5 jest wciąż w canary (16.5.0-canary.40 w npm 4 listopada), więc nie szukaj wydania 16.5.
  • Wpis o wydaniu nie linkuje advisory o powłoce. Opisuje zatrucie współdzielonej powłoki bez linku. GHSA-vvgp-ww4w-46vf jest w notach wydania 16.4.5.
  • Brak doniesień o atakach. Żadne ze źródeł nie wspomina o wykorzystaniu luk w praktyce ani o publicznym proof of concept. Advisories są publiczne od 3 listopada, więc to nie powód, by czekać.
  • Kiedy czytaliśmy źródła. Wpisy Next.js, oba wydania na GitHubie, siedem advisories, rejestr npm, politykę wsparcia i changelog Netlify – wszystko 4 listopada 2026. Nie uruchamialiśmy 16.4.5 na demo i nie odtwarzaliśmy żadnej luki.
Jakie luki łata Next.js 16.4.5?

Siedem, opublikowanych jako advisories na GitHubie 3 listopada 2026: dwa wycieki cache między wartościami root params (use cache wywołane przez unstable_cache oraz zagnieżdżone use cache), zatrucie współdzielonej powłoki fallback przy self-hostingu z next start, wspólne klucze cache dla binarnych argumentów use cache, wstrzykiwanie odpowiedzi za proxy HTTP/1.1 z pipeliningiem, obejście blokady SVG w optymalizacji obrazów i wyciek ciasteczek HttpOnly w trasach Edge. 16.4.5 zawiera te siedem poprawek i nic więcej.

Czy listopadowa aktualizacja Next.js to luki wysokie czy średnie?

Zależy od źródła. Blog Next.js ocenia GHSA-mfr8-8qww-v76h (use cache wywołane przez unstable_cache) jako High, a pozostałe sześć jako Medium. Advisories na GitHubie i obie noty wydania dają wszystkim siedmiu Moderate, z wynikami CVSS 4.0 od 6,0 do 6,9, a zapowiedź z 27 października mówiła o siedmiu średnich lukach.

Które wersje Next.js są podatne na luki z listopada 2026?

Każde wydanie 16.x przed 16.4.5 ma co najmniej jedną z nich, także 16.4.4, które nie zawiera żadnej poprawki bezpieczeństwa. Na 15.x trzy advisories dotyczą wersji do 15.5.28 i są naprawione w 15.5.29. Linie 16.2 i 16.3 nie dostały nowej łatki, więc te aplikacje przechodzą na 16.4.5. Advisory o wstrzykiwaniu odpowiedzi w polu wersji obejmuje też wersje poniżej 16.0.0, a niewspierane 14.x nie ma wersji z poprawką.

Jak zaktualizować Next.js do 16.4.5 lub 15.5.29?

Uruchom npm install next@16.4.5 na 16.x albo npm install next@15.5.29 na 15.x (pnpm add i yarn add działają tak samo), a potem sprawdź, czy lockfile rozwiązał tę wersję. Wymagania Node.js i Reacta są takie same jak w 16.4.4 i 15.5.28. Jeśli twój cache przeżywa deploy, radzimy też wyczyścić go po aktualizacji, bo według advisories podatne wpisy trwają, dopóki nie zostaną zrewalidowane lub usunięte.

Czy luki CVE w Next.js z listopada 2026 są wykorzystywane?

Ani wpis Next.js, ani żadne z siedmiu advisories nie wspomina o wykorzystaniu luk w praktyce ani o publicznym proof of concept, stan na 4 listopada 2026. Advisories ukazały się 3 listopada razem z łatkami, więc szczegóły są już publiczne: zaktualizuj, zamiast czekać na doniesienia.

Więcej informacji

November 2026 Security Release (otwiera się w nowej karcie)Wpis Next.js z 3 listopada 2026: siedem luk, ich ocena i polecenia instalacji.nextjs.org
Wydanie Next.js v16.4.5 (otwiera się w nowej karcie)Noty wydania z siedmioma advisories, każde z linkiem.github.com
Wydanie Next.js v15.5.29 (otwiera się w nowej karcie)Wydanie Maintenance LTS z trzema advisories, które dotyczą 15.x.github.com
Advisories bezpieczeństwa Next.js (otwiera się w nowej karcie)Każde advisory z warunkami, wynikiem CVSS, CVE i obejściem, jeśli istnieje.github.com
next w rejestrze npm (otwiera się w nowej karcie)Każda wersja z datą publikacji, zależnościami i dist-tagami.registry.npmjs.org
Polityka wsparcia Next.js (otwiera się w nowej karcie)Które wersje główne dostają aktualizacje bezpieczeństwa i do kiedy.nextjs.org
AI dla programistówNowości web dev: RCE w React i Next.js, fast mode Opus 5.5Nowości web dev z 11–18 października 2026: łatki React i Next.js na trzy krytyczne RCE, fast mode dla Claude Opus 5.5 bez preview i Python na Vercel w GA.

Napisz, co budujemy.

Odpowiadamy w ciągu jednego dnia roboczego.