Skip to main content

V3.4.4 Cookie-based Session Management

Requirement:#

Verify that cookie-based session tokens use the "__Host-" prefix so cookies are only sent to the host that initially set the cookie.

Explanation:#

Префикс "__Host-" - это элемент безопасности, который помогает предотвратить некоторые атаки cookie-based, ограничивая область действия cookie-файлов хостом, на котором они были изначально установлены.

The "__Host-" Prefix:

Префикс "__Host-" - это специальный префикс, который может применяться к файлам cookie. Когда cookie имеет префикс "__Host-", его действие ограничивается хостом, на котором он был изначально создан. Это означает, что cookie отправляется только в домен веб-приложения, которое его создало, без включения в какие-либо поддомены или другие связанные домены.

Preventing Subdomain Cookie Leakage:

Одним из основных преимуществ использования префикса "__Host-" с точки зрения безопасности является предотвращение утечки файлов cookie, известной как "subdomain cookie leakage". Без префикса "__Host-" файл cookie, установленный на основном домене (например, example.com), будет отправлен также на все поддомены (например, app.example.com, api.example.com). Такое поведение может привести к риску безопасности, особенно если один из поддоменов окажется скомпрометированным или контролируемым злоумышленниками.

Domain vs. Host Prefix:

Префикс "__Host-" отличается от обычного атрибута "Domain" в файлах cookie. Атрибут "Domain" может установить область действия cookie на определенный домен и его поддомены (например, ".example.com"), но он имеет ограничения по предотвращению утечки cookie из поддоменов. Префикс "__Host-", однако, является гораздо более ограничительным и предотвращает отправку cookie на поддомены.

Cookies with "__Host-" Prefix:

Файлы cookie с префиксом "__Host-" должны соответствовать следующим правилам:

  • Они должны иметь атрибут "Secure", то есть передаваться только с использованием HTTPS соединения.
  • Они должны быть снабжены атрибутом "HttpOnly", предотвращающим доступ к cookie со стороны клиентского скрипта.

Example:

Если сессионный cookie задан с префиксом "__Host-", например, "__Host-session-token", то он будет отправлен только на запросы, сделанные на "example.com", а не на любой из его поддоменов, например, "app.example.com" или "api.example.com".

Remediation:#

Check for '__Host-' Prefixed Cookies:

Просмотрите кодовую базу и конфигурацию приложения, чтобы выявить все случаи установки cookie-файлов для управления сеансами или хранения других конфиденциальных данных. Ищите файлы cookie с именами, начинающимися с префикса "__Host-".

Verify Cookie Attributes:

Для всех найденных cookies с префиксом "__Host-" убедитесь, что у них установлены следующие атрибуты:

  • Secure: Этот атрибут гарантирует, что cookie будет отправляться только по защищенным (HTTPS) соединениям.
  • HttpOnly: Этот атрибут предотвращает доступ сценариев на стороне клиента к cookie, что повышает его безопасность.

Update Cookie Settings:

Если вы обнаружили файлы cookie, используемые для управления сессиями или хранения конфиденциальных данных, без префикса "__Host-", измените свой код таким образом, чтобы добавить префикс к этим файлам cookie. Кроме того, убедитесь, что для этих файлов установлены атрибуты 'Secure' и 'HttpOnly'.

Use "__Host-" Prefix with Caution:

Следует помнить, что использование префикса "__Host-" подходит не для всех файлов cookie. Он предназначен, в частности, для файлов cookie, используемых для управления сессиями, или файлов cookie, содержащих конфиденциальные данные. Если у вас есть другие файлы cookie, предназначенные для других целей (например, предпочтения, аналитика), префикс "__Host-" для них использовать не следует.

Security Review:

Проведите анализ безопасности вашего приложения, включая тестирование на безопасность (например, тестирование на проникновение), чтобы убедиться, что cookie с префиксом "__Host-" эффективно предотвращают утечку cookie с поддоменов и помогают защититься от cookie-based атак.

Пример установки сессионного cookie с префиксом "__Host-" 

Пример установки сессионного cookie с префиксом '__Host-'
from flask import Flask, make_response
app = Flask(__name__)
@app.route('/')
def set_cookie():
# Replace 'your_cookie_value' with the actual value you want to set in the cookie
cookie_value = 'your_cookie_value'
# Create the response with the cookie and set the "__Host-" prefix
response = make_response('Cookie with "__Host-" prefix set successfully!')
response.set_cookie('__Host-session-token', value=cookie_value, secure=True, httponly=True)
return response
if __name__ == '__main__':
app.run(debug=True)

В этом примере / устанавливает сессионный cookie с именем "__Host-session-token" и значением, указанным в cookie_value. Префикс "__Host-" добавляется к имени cookie, чтобы ограничить область его действия хостом, на котором он был изначально установлен. Для повышения безопасности cookie также устанавливаются атрибуты 'Secure' и 'HttpOnly'.

Следует помнить, что использование префикса "__Host-" целесообразно только для файлов cookie, используемых для управления сеансом работы или содержащих конфиденциальные данные. Для других файлов cookie, имеющих иное назначение (например, предпочтения, аналитика), использование префикса "__Host-" необязательно.

Additional: