FixVibe
Covered by FixVibemedium

Заголовки безпеки HTTP: впровадження CSP і HSTS для захисту на стороні браузера

У цьому дослідженні досліджується критична роль заголовків безпеки HTTP, зокрема політики безпеки вмісту (CSP) і суворої безпеки транспортування HTTP (HSTS), у захисті веб-додатків від поширених уразливостей, таких як міжсайтовий сценарій (XSS) і атаки на пониження версії протоколу.

CWE-1021CWE-79CWE-319

Роль заголовків безпеки

Заголовки безпеки HTTP забезпечують стандартизований механізм для веб-додатків, щоб інструктувати браузери застосовувати певні політики безпеки під час сеансу [S1] [S2]. Ці заголовки діють як критично важливий рівень глибокого захисту, пом’якшуючи ризики, які можуть бути не повністю враховані лише логікою програми.

Політика безпеки вмісту (CSP)

Політика безпеки вмісту (CSP) — це рівень безпеки, який допомагає виявляти та пом’якшувати певні типи атак, зокрема міжсайтовий сценарій (XSS) і атаки з впровадженням даних [S1]. Визначаючи політику, яка визначає, яким динамічним ресурсам дозволено завантажувати, CSP запобігає виконанню браузером шкідливих сценаріїв, впроваджених зловмисником [S1]. Це фактично обмежує виконання неавторизованого коду, навіть якщо в програмі існує вразливість ін’єкції.

HTTP Strict Transport Security (HSTS)

HTTP Strict Transport Security (HSTS) — це механізм, який дозволяє веб-сайту інформувати браузери про те, що до нього можна отримати доступ лише за допомогою HTTPS, а не HTTP [S2]. Це захищає від атак із зниженням версії протоколу та викрадення файлів cookie, гарантуючи, що весь зв’язок між клієнтом і сервером зашифрований [S2]. Коли браузер отримує цей заголовок, він автоматично перетворює всі наступні спроби отримати доступ до сайту через HTTP у запити HTTPS.

Вплив відсутніх заголовків на безпеку

Програми, у яких не вдається реалізувати ці заголовки, мають значно вищий ризик компрометації на стороні клієнта. Відсутність політики безпеки вмісту дозволяє виконувати неавторизовані сценарії, що може призвести до викрадення сеансу, несанкціонованого викрадання даних або пошкодження [S1]. Подібним чином відсутність заголовка HSTS робить користувачів вразливими до атак типу "людина посередині" (MITM), особливо на початковому етапі підключення, коли зловмисник може перехопити трафік і перенаправити користувача на шкідливу або незашифровану версію сайту [S2].

Як FixVibe перевіряє це

FixVibe уже включає це як перевірку пасивного сканування. headers.security-headers перевіряє публічні метадані відповіді HTTP на наявність і силу Content-Security-Policy, Strict-Transport-Security, X-Frame-Options або frame-ancestors, X-Content-Type-Options, Referrer-Policy і Permissions-Policy. Він повідомляє про відсутні або слабкі значення без перевірки експлойтів, а його запит на виправлення надає приклади заголовків, готових до розгортання, для стандартних налаштувань додатків і CDN.

Керівництво з виправлення

Щоб покращити стан безпеки, веб-сервери мають бути налаштовані на повернення цих заголовків на всіх робочих маршрутах. Надійний CSP має бути адаптований до конкретних вимог до ресурсів програми, використовуючи такі директиви, як script-src і object-src, щоб обмежити середовище виконання сценаріїв [S1]. Для безпеки транспортування заголовок Strict-Transport-Security слід увімкнути відповідною директивою max-age, щоб забезпечити постійний захист у сеансах користувача [S2].