Небезопасные Cookie: флаги HttpOnly, Secure и SameSite
Cookie используются для хранения сессий авторизованных пользователей.
Отсутствие флагов HttpOnly (защита от чтения cookie через JavaScript при XSS) и Secure (передача только по зашифрованному каналу) делает сессию уязвимой для перехвата.
Степень критичности и чем опасна уязвимость
Кража сессионных cookie позволяет злоумышленнику войти в аккаунт пользователя без ввода логина и пароля.
Как наш сканер находит эту уязвимость
Site Check анализирует заголовки Set-Cookie на наличие обязательных атрибутов HttpOnly, Secure и SameSite.
Диагностика сетевых заголовков и серверных политик выполняется сбором и парсингом HTTP response headers на корневом и вспомогательных путях. Оценивается присутствие политик Content-Security-Policy, Strict-Transport-Security, X-Frame-Options, а также атрибутов безопасности куки-файлов (HttpOnly, Secure, SameSite).
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
// Пример правильной установки сессионной cookie в Node.js / Express:
res.cookie('session_id', token, {
httpOnly: true,
secure: true,
sameSite: 'lax',
maxAge: 86400000,
});
- Всегда добавляйте флаг HttpOnly для сессионных cookie.
- Используйте флаг Secure для предотвращения передачи по незащищенному HTTP.
- Устанавливайте SameSite=Lax или Strict для защиты от CSRF-атак.
Анатомия атаки и реальные последствия для проекта
Куки сессий без флагов HttpOnly и Secure могут быть прочитаны вредоносным JavaScript при XSS-атаке (через document.cookie) и переданы открытым текстом по незашифрованному HTTP-каналу.
Влияние на соответствие стандартам: Нарушение требований безопасности стандартов OWASP Top 10 (A05:2021 Security Misconfiguration), ISO/IEC 27001 и отраслевых норм 152-ФЗ.
Матрица эшелонированной защиты (Defense-in-Depth)
| Уровень защиты | Техническое действие | Инструмент / Механизм |
|---|---|---|
| Периметр веб-сервера (Nginx / Edge) | Применение изолирующих правил блокировки для маршрутов, связанных с missing-cookie-security | Nginx Security Directives |
| Среда исполнения и конфигурация | Отключение отладочных механизмов и разграничение прав доступа к компоненту missing-cookie-security | Runtime Security Hardening |
| Пайплайн DevSecOps контроля | Автоматическое тестирование конфигурации missing-cookie-security в CI/CD пайплайне при каждом релизе | Site Check Security Gate |
Верификация устранения: команды для быстрой проверки
После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:
curl -I -s https://ваш-домен.com/ | grep -i "Set-Cookie"
# Должны присутствовать Secure; HttpOnly; SameSite=Lax (или Strict)
Рекомендации DevSecOps для безопасного развертывания
При установке сессионных кук в Express, Next.js или Django всегда выставляйте httpOnly: true, secure: true, sameSite: "lax".
- ✓ Внедрить строгую политику Content-Security-Policy без небезопасных инлайн-скриптов
- ✓ Включить заголовок HSTS с директивой includeSubDomains и сроком не менее 1 года
- ✓ Установить флаги Secure, HttpOnly и SameSite=Lax для всех авторизационных куки
- ✓ Настроить редирект HTTP на HTTPS с корректным статус-кодом 301 Permanent
Часто задаваемые вопросы по устранению
Корректно настроенные заголовки безопасности формируют первый эшелон браузерной защиты клиентов. Отсутствие современных директив CSP и HSTS оставляет пользователей беззащитными перед атаками типа Clickjacking, MIME-sniffing и перехватом трафика в небезопасных сетях Wi-Fi.
Для предотвращения вектора «Небезопасные Cookie: флаги HttpOnly, Secure и SameSite» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.