drošība · 6 min · 26.07.2026

Next.js pāriet uz plānotiem drošības laidieniem: pirmajā aizvērti deviņi caurumi

Vercel 21. jūlijā izlaida Next.js versijas 16.2.11 un 15.5.21. Tajās aizvērti deviņi drošības caurumi: četri ar augstu bīstamību, pieci ar vidēju. Neviens no tiem uzbrukumos nav izmantots. Laidiena datums bija zināms nedēļu iepriekš.

Tas ir pirmais rezultāts jaunajai kārtībai, ko komanda izsludināja 13. jūlijā. Līdz šim Next.js drošības ielāpi parādījās bez brīdinājuma. Tagad aptuveni reizi mēnesī blogā iznāks iepriekšējs paziņojums ar plānoto datumu un augstāko gaidāmo bīstamības pakāpi. Paši CVE apraksti joprojām paliek slēgti līdz ielāpa publicēšanai.

Kāpēc Vercel pārgāja uz kalendāru

Paziņojumā nosaukts konkrēts iemesls. Ievainojamību atradumu apjoms aug, jo meklēšanā iesaistīti valodas modeļi. Kā piemēru Vercel min Mozilla, kas vienā Firefox laidienā aizvēra 271 problēmu, visas atrastas ar Anthropic rīku Mythos Preview. Pati Vercel pret Next.js kodu dzen tādas pašas klases rīkus, tostarp savu atvērtā koda projektu deepsec. Kļūdu atlīdzības programmas tvērums ir paplašināts.

Otrs iemesls ir praktisks. Iepriekšēja izziņošana dod laiku hostinga pakalpojumu sniedzējiem un platformu partneriem sagatavot ugunsmūra kārtulas tām lietotnēm, kuras ielāpu vēl nav uzlikušas. Izstrādes komandām grafiks ļauj ieplānot atjaunināšanas logu, nevis reaģēt uz negaidītu paziņojumu piektdienas vakarā.

Šāds izziņots drošības laidiens ir kļuvis par ierastu praksi lielos atvērtā koda projektos, raksta Next.js komanda.

Izziņošanai ir arī otra puse. Brīdī, kad ielāps iznāk, publisks kļūst arī koda diff. Tā ir gatava norāde uz vietu, kas bija salauzta. Lēni atjauninātas lietotnes paliek atklātas. Tāpēc iepriekšējā paziņojumā nosaukta tikai augstākā bīstamības pakāpe un plānotais datums. Ne komponente, ne apraksts tur neparādās. Detaļas nāk klāt tikai kopā ar versiju.

Ārkārtas gadījumiem kārtība nemainās. Ja caurums jau tiek izmantots uzbrukumos vai atklāšana nevar gaidīt, ielāps iznāks uzreiz, tāpat kā decembrī ar React2Shell.

Četri augstas bīstamības caurumi

Trīs no četriem skar App Router lietotnes ar vismaz vienu Server Action. Tā šodien ir liela daļa jauno Next.js projektu.

CVE-2026-64641 ļauj ar īpaši veidotu pieprasījumu noslogot procesoru tiktāl, ka process pārstāj apkalpot pārējos pieprasījumus. Uzbrucējam nav vajadzīga autentifikācija. Vienai lietotnei ar vienu procesu tas nozīmē pilnu apstāšanos.

CVE-2026-64642 apiet middleware slāni. Caurums nostrādā tikai konkrētā salikumā: App Router ar Turbopack būvējumu plus tieši viens ieraksts config.i18n.locales sarakstā. Ja middleware veic autentifikācijas vai piekļuves pārbaudi, uzbrucējs to izlaiž. Šo konfigurāciju var pārbaudīt dažās sekundēs, atverot next.config.js.

CVE-2026-64645 skar rewrites() un redirects() kārtulas, kuru ārējā mērķa adrese tiek būvēta no pieprasījuma datiem. Šādu kārtulu var pavērst uz jebkuru resursdatoru neatkarīgi no tā, kāds saimniekvārda sufikss norādīts pašā kārtulā. Pārrakstīšanas gadījumā iznākums ir SSRF, novirzīšanas gadījumā atvērtā novirze.

CVE-2026-64649 ir otrs SSRF. Tas skar Server Actions uz pašu uzturētiem serveriem. Ja uzbrucējs kontrolē ar Host saistītās galvenes, serveri var piespiest sūtīt izejošu pieprasījumu uz svešu adresi. Mākoņa vidē tas parasti nozīmē piekļuvi metadatu galapunktam.

Vidējā bīstamība: attēli, atmiņa un kešatmiņa

CVE-2026-64643 atklāj Server Actions un use cache galapunktu identifikatorus. Pats par sevi tas neko nesalauž. Uzbrucējam tas dod karti tālākiem soļiem.

CVE-2026-64644 attiecas uz pašu uzturētu Next.js ar noklusējuma attēlu ielādētāju. Ļaunprātīgs SVG var izsmelt procesora resursus /_next/image galapunktā. Attālinātu attēlu apstrāde pēc noklusējuma nav ieslēgta, tāpēc skarti ir tie, kas to apzināti konfigurējuši.

CVE-2026-64646 ļauj neierobežoti audzēt Server Action pieprasījuma apjomu Edge izpildlaikā līdz atmiņas izsmelšanai.

Divi pēdējie ieraksti ir kešatmiņas sajaukšana servera pusē. CVE-2026-64648 nostrādā, kad fetch tiek izsaukts formā fetch(new Request(init), aDifferentInit). Atbilde var atnākt no cita pieprasījuma ar to pašu adresi, bet citu ķermeni. CVE-2026-64647 dara to pašu, kad pieprasījuma ķermenī ir nederīgas UTF-8 baitu virknes. Vercel piemērā UTF-16 virknes 삃삃 un 섄섄 nonāk vienā kešatmiņas šūnā. Lietotnei, kas kešo atbildes ar personas datiem, tas nozīmē svešu datu atdošanu nepareizajam lietotājam.

Ko darīt tagad

Atjauninājums ir viena komanda uzturētajam zaram:

  • npm install next@16.2.11 aktīvajam LTS zaram
  • npm install next@15.5.21 uzturēšanas LTS zaram

Kura versija patiesībā ir uzstādīta, parāda npm ls next. Monorepozitorijos tas ir vērts pārbaudes: blakus lietotnes bieži velk atšķirīgu Next.js versiju caur savām atkarībām.

Labojumi jau ir arī priekšlaidienos v16.3.0-canary.92 un v16.3.0-preview.7. Stabilajā 16.3 tie nonāks līdz ar tās iznākšanu. Vecāki zari ielāpus nesaņem, tāpēc lietotnēm uz 14.x vai 13.x vienīgais ceļš ir pāreja uz atbalstītu versiju.

Ja atjaunināšana prasīs laiku, divus caurumus var sašaurināt ar konfigurāciju. Middleware apiešana pazūd, ja projektu nebūvē ar Turbopack vai config.i18n.locales sarakstā ir vairāk par vienu ierakstu. SSRF pret pārrakstīšanas kārtulām pazūd, ja mērķa saimniekvārds ir ierakstīts konfigurācijā fiksēti, bez pieprasījuma datiem.

Deviņus šā mēneša atradumus Vercel saņēma caur savu atvērtā koda kļūdu atlīdzības programmu HackerOne platformā un no saviem pētniekiem. Nākamā paziņojuma par gaidāmo laidienu jāparādās Next.js blogā aptuveni pēc mēneša.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie