FixVibe
Covered by FixVibemedium

Next.js saugos antraštės neteisinga konfigūracija next.config.js

Next.js programos, naudojančios next.config.js antraštėms tvarkyti, yra jautrios saugos spragoms, jei kelių atitikimo modeliai yra netikslūs. Šiame tyrime nagrinėjama, kaip netinkamai sukonfigūravus pakaitos simbolius ir reguliariąją išraišką, trūksta saugos antraščių jautriuose maršrutuose ir kaip sustiprinti konfigūraciją.

CWE-1021CWE-200

Poveikis

Trūkstamos saugos antraštės gali būti panaudotos spustelėjimų užgrobimui, kelių svetainių scenarijams (XSS) arba informacijos apie serverio aplinką [S2] rinkimui. Kai antraštės, pvz., Content-Security-Policy (CSP) arba X-Frame-Options, nenuosekliai taikomos įvairiuose maršrutuose, užpuolikai gali nukreipti konkrečius neapsaugotus kelius, kad apeitų visos svetainės saugos valdiklius ZXCVFIXZVIBETOKEN3.

Pagrindinė priežastis

Next.js leidžia kūrėjams konfigūruoti atsakymų antraštes next.config.js naudojant headers ypatybę [S2]. Ši konfigūracija naudoja kelių atitikimą, kuris palaiko pakaitos simbolius ir reguliariąsias išraiškas [S2]. Saugumo spragos paprastai kyla dėl:

  • Nepilnas kelio aprėptis: pakaitos simbolių šablonai (pvz., /path*) gali neaprėpti visų numatytų antrinių maršrutų, todėl įdėtieji puslapiai lieka be saugos antraščių [S2].
  • Informacijos atskleidimas: pagal numatytuosius nustatymus Next.js gali apimti X-Powered-By antraštę, kuri atskleidžia sistemos versiją, nebent ji būtų aiškiai išjungta per poweredByHeader konfigūraciją ZXCVFIXZVICVOKEN2.
  • CORS netinkama konfigūracija: netinkamai apibrėžtos Access-Control-Allow-Origin antraštės headers masyve gali leisti neteisėtai kryžminės kilmės prieigą prie neskelbtinų duomenų ZXCVFIXZVIBETOKEN2.

Betono pataisymai

Audito kelio šablonai: įsitikinkite, kad visi source šablonai next.config.js naudokite atitinkamus pakaitos simbolius (pvz., /:path*), kad prireikus antraštės būtų taikomos visame pasaulyje.

  • Išjungti pirštų atspaudus: nustatykite poweredByHeader: false laukelyje next.config.js, kad X-Powered-By antraštė nebūtų siunčiama [S2].
  • Apriboti CORS: nustatykite Access-Control-Allow-Origin konkretiems patikimiems domenams, o ne pakaitos simboliams headers konfigūracijoje [S2].

Kaip FixVibe tai tikrina

FixVibe galėtų atlikti aktyvųjį zondą, tikrindamas programą ir palygindamas įvairių maršrutų saugos antraštes. Analizuodamas X-Powered-By antraštę ir Content-Security-Policy nuoseklumą skirtinguose kelio gyliuose, FixVibe gali nustatyti next.config.js konfigūracijos spragas.