Уплыў
Адсутныя загалоўкі бяспекі могуць быць выкарыстаны для выканання клікаў, міжсайтавых сцэнарыяў (XSS) або збору інфармацыі аб серверным асяроддзі [S2]. Калі загалоўкі, такія як Content-Security-Policy (CSP) або X-Frame-Options, непаслядоўна прымяняюцца на розных маршрутах, зламыснікі могуць нацэліцца на пэўныя неабароненыя шляхі, каб абыйсці кантроль бяспекі на ўсім сайце [S2].
Першапрычына
Next.js дазваляе распрацоўшчыкам наладжваць загалоўкі адказаў у next.config.js з дапамогай уласцівасці headers [S2]. У гэтай канфігурацыі выкарыстоўваецца супастаўленне шляху, якое падтрымлівае падстаноўныя знакі і рэгулярныя выразы [S2]. Уразлівасці бяспекі звычайна ўзнікаюць з-за:
- Няпоўнае пакрыццё шляху: Шаблоны падстаноўных знакаў (напрыклад,
/path*) могуць не ахопліваць усе прызначаныя падмаршруты, пакідаючы ўкладзеныя старонкі без загалоўкаў бяспекі [S2]. - Раскрыццё інфармацыі: па змаўчанні Next.js можа ўключаць у сябе загаловак
X-Powered-By, які раскрывае версію фрэймворка, калі ён відавочна не адключаны праз канфігурацыюpoweredByHeader[S2]. - Няправільная канфігурацыя CORS: Няправільна вызначаныя загалоўкі
Access-Control-Allow-Originу масівеheadersмогуць дазволіць несанкцыянаваны доступ з розных крыніц да канфідэнцыяльных даных [S2].
Канкрэтныя выпраўленні
- Шаблоны шляху аўдыту: пераканайцеся, што ўсе шаблоны
sourceуnext.config.jsвыкарыстоўваюць адпаведныя падстаноўныя знакі (напрыклад,/:path*) для глабальнага прымянення загалоўкаў, дзе неабходна [S2]. - Адключыць адбіткі пальцаў: усталюйце
poweredByHeader: falseуnext.config.js, каб прадухіліць адпраўку загалоўкаX-Powered-By[S2]. - Абмежаваць CORS: Усталюйце
Access-Control-Allow-Originдля пэўных давераных даменаў, а не падстаноўных знакаў у канфігурацыіheaders[S2].
Як FixVibe правярае гэта
FixVibe можа выканаць актыўнае закрытае зандаванне шляхам сканавання прыкладання і параўнання загалоўкаў бяспекі розных маршрутаў. Аналізуючы загаловак X-Powered-By і ўзгодненасць Content-Security-Policy на розных глыбінях шляху, FixVibe можа вызначыць прабелы ў канфігурацыі ў next.config.js.
