Podatność w framework Next.js umożliwia atakującemu manipulowanie docelowym hostem w regułach rewrites() lub redirects(), jeśli nazwa hosta jest budowana na podstawie danych wejściowych z żądania. Prowadzi to do ataku SSRF (Server-Side Request Forgery) lub Open Redirect, co może skutkować nieautoryzowanym dostępem do wewnętrznych zasobów lub przekierowaniem użytkowników na złośliwe witryny.
▸ Pokaż oryginał (EN)
Next.js is a React framework for building full-stack web applications. In versions 12.0.0 through 15.5.20 and 16.0.0 through 16.2.10, a rewrites() or redirects() rule that builds its external destination hostname from request-controlled input can be pointed at an arbitrary hostname, regardless of the rule's hostname suffix. For a rewrite, Next.js proxies the request to that arbitrary host and serves the response from the application's origin, leading to Server-Side Request forgery. A redirects() rule configured this way is vulnerable to an Open Redirect. This issue has been fixed in versions 15.5.21 and 16.2.11.
Gdy reguła rewrites() buduje docelową nazwę hosta z danych kontrolowanych przez żądanie sieciowe (np. nagłówków lub parametrów URL), atakujący może wskazać dowolny host, omijając ograniczenia sufiksu hostname zdefiniowane w regule. W przypadku rewrite Next.js pośredniczy w żądaniu, przesyłając je do wskazanego przez atakującego hosta i zwracając odpowiedź z serwera aplikacji, co stanowi klasyczny SSRF. W przypadku reguły redirects() skonfigurowanej w analogiczny sposób możliwe jest przekierowanie użytkownika na dowolny zewnętrzny adres URL (Open Redirect).
Atakujący może uzyskać dostęp do wewnętrznych zasobów infrastruktury niedostępnych publicznie (SSRF) lub przekierować użytkowników aplikacji na kontrolowane przez siebie, potencjalnie złośliwe strony internetowe (Open Redirect), co może być wykorzystane do phishingu lub kradzieży danych uwierzytelniających.
Należy zaktualizować Next.js do wersji 15.5.21 (gałąź 15.x) lub 16.2.11 (gałąź 16.x), w których problem został naprawiony. Patche dostępne są w repozytoriach GitHub projektu pod wskazanymi tagami wydań.
Vercel Next.js w wersjach 12.0.0 – 15.5.20 oraz 16.0.0 – 16.2.10
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XVercel Next.js
APPVercel12.0.0 – 15.5.21 (bez)16.0.0 – 16.2.11 (bez)
Powiązane podatności
RCE bez uwierzytelnienia w React Server Components (deserializacja)
Pominięcie autoryzacji w middleware Next.js przez nagłówek x-middleware-subrequest
Vercel Next.js — nadmierne zużycie CPU przez spreparowane żądania (DoS)
Ominięcie uwierzytelniania middleware w Next.js App Router z Turbopack
SSRF w Next.js — przekierowanie żądań przez Server Actions do złośliwego hosta