Cookie переносит идентификатор; смена его значения требует согласованного изменения серверного сеанса.
Фиксация сессии
Определение
Фиксация сессии — атака, при которой пользователь входит в систему с идентификатором сессии, уже известным злоумышленнику.
Также ищут: Session fixation · fixed session ID · pre-auth session reuse
Зачем это знать
Если идентификатор не меняется при повышении прав, знание гостевой сессии превращается в захват сессии вошедшего пользователя.
Карта понятия
Сравнить
Связано
Что подтверждено
При фиксации злоумышленник не угадывает новый идентификатор, а добивается использования заранее известного ID до и после входа жертвы.
Граница применимости: Модель атаки с фиксацией сессии.
Приложение должно создавать новый идентификатор сессии после входа и любого повышения прав, а предыдущий — уничтожать.
Граница применимости: Обновление идентификатора сессии.
В строгой модели управления сеансами приложение принимает только идентификаторы, которые само выдало. Произвольное значение из запроса не становится действующим сеансом лишь потому, что похоже по формату.
Граница применимости: Рекомендация OWASP для модели с серверным состоянием и строгим приёмом идентификаторов.
Защищённое TLS-соединение не меняет идентификатор сеанса приложения автоматически. Если известный заранее идентификатор пережил вход с повышением прав, шифрование транспорта само не устранило фиксацию.
Граница применимости: Разделение защиты канала и смены идентификатора при переходе к аутентифицированному состоянию.
При смене идентификатора на входе проверяют не только получение нового значения, но и прекращение действия прежнего. Выдача нового идентификатора без уничтожения старого оставляет незакрытым прежний путь к сеансу.
Граница применимости: Рекомендация OWASP по обновлению идентификатора после изменения уровня прав; область проверки задаёт модель сеанса приложения.
Не путать
TLS защищает сетевой участок, а предотвращение фиксации меняет состояние приложения на входе и при повышении прав.
Что проверить
- Принимайте только выданные приложением идентификаторы.
- Заменяйте идентификатор после входа и повышения прав.
- Уничтожайте предыдущее значение на сервере.
- Не считайте новый TLS-сеанс сменой сеанса приложения.
- Проверьте запрос со старой cookie после входа.
- Проверьте переход из обычной роли в привилегированную.
- Проверьте, что журнал проверки не раскрывает сами идентификаторы.
Первоисточники
- Session Management Cheat Sheet
Описывает entropy, cookie transport, renewal после privilege change, timeouts, logout и server-side invalidation sessions.
- Session Management Cheat Sheet
Описывает entropy, cookie transport, renewal после privilege change, timeouts, logout и server-side invalidation sessions.
- RFC 8446: The Transport Layer Security Protocol Version 1.3
Определяет TLS 1.3, включая encrypted channel, PSK authentication, PSK identity и PSK+(EC)DHE modes.
Утверждения: 04
- Cookies: HTTP State Management Mechanism
Базовый стандарт Cookie и Set-Cookie: синтаксис, атрибуты Secure, HttpOnly, Path, Domain. SameSite в нём НЕТ — он появился в 6265bis, см. ietf-6265bis-cookies.