Next.js zakrpio ImageResponse propust koji može izvršiti kod

Vercel je 22. septembra objavio ispravku za CVE-2026-94545, kritičnu ranjivost u Next.js funkciji ImageResponse. Propust pogađa Next.js od verzije 16.2.0 do 16.3.5 kada ImageResponse radi u Node.js okruženju, koje je podrazumevano, a zakrpljen je izdanjem 16.3.6. Vercel mu je dodelio CVSS ocenu 9,5, jer u određenim okolnostima može omogućiti izvršavanje koda na serveru.
Rizik se odnosi na aplikacije koje vrednosti pod kontrolom napadača, na primer tekst preuzet iz URL zahteva, prosleđuju u SVG sadržaj, atribute ili stilove tokom pravljenja slike. ImageResponse se često koristi za generisanje Open Graph i drugih slika za društvene mreže, pa relevantna mesta mogu biti route handleri i datoteke opengraph-image.
Kako nastaje rizik u toku generisanja slike
ImageResponse koristi Vercelovu biblioteku Satori da raspored elemenata pretvori u SVG, pre završnog generisanja PNG slike. Satorijevo obaveštenje navodi da određene vrednosti mogu dospeti u SVG izlaz bez odgovarajućeg izbegavanja posebnih znakova. Posebno oblikovana vrednost tada može biti protumačena kao SVG kod, a ne kao običan tekst.
Vercel navodi da u Next.js takav ulaz može dosegnuti ranjivosti u drugim zavisnostima i dovesti do izvršavanja koda, bez navođenja konkretnih biblioteka. Satori istom CVE-u dodeljuje umerenu ocenu 5,3 i naglašava da posledice zavise od načina na koji se SVG izlaz koristi.
Koje verzije zahtevaju akciju
Next.js 15 nije pogođen, kao ni Edge varijanta ImageResponse. Ipak, dokumentacija za Next.js označava Edge runtime kao zastareo, dok obaveštenje ne preporučuje prelazak na njega kao meru ublažavanja. Za direktne korisnike Satorija dostupna je ispravka u verziji 0.33.5.
Za Next.js 16 jedino navedeno zakrpljeno izdanje je 16.3.6. U npm registru 23. septembra nije bilo ispravljenog izdanja za granu 16.2, što znači da aplikacije na toj grani treba da pređu na 16.3.6. Next.js 15.5.26 donosi dodatno bezbednosno ojačavanje za next/og u grani 15.5.
Provera implementacije i prioriteti
Timovi treba direktno da provere instaliranu verziju Next.js, jer npm audit tog dana nije prijavljivao pogođeni Next.js 16.3.5. Satori je uključen u paket Next.js, zbog čega se ne mora pojaviti kao zasebna zavisnost u lockfile-u. Takođe, javno obaveštenje ne nudi način da se proveri da li je pogođena ruta bila zloupotrebljena pre zakrpe.
Ako nadogradnja mora da sačeka, privremena mera je da se vrednosti pod kontrolom korisnika ne umeću u SVG sadržaj, atribute i stilove koje Node.js ImageResponse obrađuje. Praktičan poslovni zaključak je jasan: popisati sva korišćenja next/og i opengraph-image, proveriti poreklo vrednosti koje stižu do SVG-a i dati prednost prelasku na Next.js 16.3.6.

