Impact
Sigurnosna zaglavlja koja nedostaju mogu se iskoristiti za izvođenje klikova, skriptiranja na više lokacija (XSS) ili prikupljanja informacija o okruženju servera [S2]. Kada se zaglavlja kao što su Content-Security-Policy (CSP) ili X-Frame-Options nedosljedno primjenjuju na rute, napadači mogu ciljati određene nezaštićene staze kako bi zaobišli sigurnosne kontrole na cijeloj web lokaciji.
Osnovni uzrok
Next.js omogućava programerima da konfigurišu zaglavlja odgovora u next.config.js koristeći headers svojstvo [S2]. Ova konfiguracija koristi podudaranje staza koje podržava zamjenske znakove i regularne izraze [S2]. Sigurnosne ranjivosti obično proizlaze iz:
- Nepotpuna pokrivenost putanje: Obrasci zamjenskih znakova (npr.
/path*) možda neće pokriti sve predviđene potputeve, ostavljajući ugniježđene stranice bez sigurnosnih zaglavlja [S2]. - Otkrivanje informacija: Podrazumevano, Next.js može uključivati zaglavlje
X-Powered-By, koje otkriva verziju okvira osim ako nije eksplicitno onemogućeno prekopoweredByHeaderkonfiguracije ZXCVFIX2ZVIBETOV. - CORS Pogrešna konfiguracija: Neispravno definirana zaglavlja
Access-Control-Allow-Originunutarheadersniza mogu dozvoliti neovlašteni pristup osjetljivim podacima s više izvora na povjerljivim podacima ZXCVFIXZVIBETO.
Betonski popravci
- Uzorci putanje revizije: Osigurajte da svi
sourceobrasci unext.config.jskoriste odgovarajuće zamjenske znakove (npr./:path*) za primjenu zaglavlja globalno gdje je potrebno ZXCVFIXEN3ZVIBETOK. - Onemogući otisak prsta: Postavite
poweredByHeader: falseunext.config.jsda spriječite slanjeX-Powered-Byzaglavlja [S2]. - Ograniči CORS: Postavite
Access-Control-Allow-Originna određene pouzdane domene, a ne na zamjenske znakove uheaderskonfiguraciji [S2].
Kako FixVibe testira za to
FixVibe bi mogao izvršiti aktivnu gated sondu indeksiranjem aplikacije i upoređivanjem sigurnosnih zaglavlja različitih ruta. Analizom zaglavlja X-Powered-By i konzistentnosti Content-Security-Policy na različitim dubinama puta, FixVibe može identificirati konfiguracijske praznine u next.config.js.
