Фіксація сесії

Фіксація сесії

Зловмисник знав ідентифікатор сесії ще до вашого входу.

Що таке Фіксація сесії?

Фіксація й перехоплення відрізняються тим, коли зловмисник отримує ідентифікатор сесії. Той, хто перехоплює сесію, викрадає його після вашої автентифікації. Фіксація підкидає відоме значення раніше й дає вашому власному входу зробити його автентифікованим. Ви вкладете в посилання чинний анонімний ідентифікатор, простежите, як жертва входить, і відкриєте її панель із тим самим рядком. Обробник читає const sid = req.cookies.sid || crypto.randomUUID() . Виправлення безумовно видає новий ідентифікатор під час кожної автентифікації та кожної зміни привілеїв, тому ентропія й HttpOnly цю проблему не розв'язують.

Що ви дізнаєтесь у Фіксація сесії

Фіксація сесії — Кроки навчання

  1. План Боба

    Боб не може викрасти пароль Аліси, і йому це не потрібно. Він хоче підкинути їй ідентифікатор сесії, який уже знає, а потім дати їй увійти з цим ідентифікатором, щоб сесія, на якій вона автентифікується, опинилася під його контролем. Спочатку йому потрібен ідентифікатор сесії, який можна підкинути. Він сам відкриває портал Sundermark Logistics, і цей застарілий портал видає браузеру Боба анонімний ідентифікатор сесії та одразу виводить цей ідентифікатор в адресному рядку як значення ?sid , як і для будь-якого відвідувача.

  2. Чинний ідентифікатор сесії, який можна підкинути

    Боб відкриває інспектор cookie в браузері. Портал уже видав йому ідентифікатор сесії, хоча він ще не входив і нічого не робив. Ідентифікатор анонімний, але це справжнє значення, яке видав сервер і яке сервер визнає. Цей ідентифікатор Боб і підкине Алісі.

  3. Перетворіть його на посилання-пастку

    Боб не мусить нічого створювати. Ідентифікатор сесії, який йому видав сервер, уже вписаний в адресу як ?sid=SID-9F3A2B1C7D , а в порталі є застаріла особливість: він копіює цей sid прямо з URL у cookie відвідувача. Тож посилання в такому вигляді вже є пасткою. У будь-кого, кому Боб його надішле, у cookie опиняється ідентифікатор сесії Боба, щойно ця людина відкриє посилання.

  4. Надішліть пастку Алісі

    Боб обирає ціллю Алісу — працівницю, до чийого облікового запису на порталі він хоче дістатися. Він відкриває свою пошту й пише їй лист, замаскований під звичайне ІТ-сповіщення про доступ, із тим самим посиланням з ідентифікатором сесії в тексті. Йому потрібно лише, щоб вона відкрила лист і увійшла.

  5. Звичайне сповіщення про доступ

    Поза робочим часом Аліса отримує лист, який виглядає як планове ІТ-обслуговування: потрібно підтвердити доступ до порталу до кінця дня. Посилання веде на справжній портал, тож нічого не впадає в око.

  6. Один клік віддає cookie

    Аліса натискає посилання. Воно відкриває справжню сторінку входу в портал, усе так, як вона й очікувала. Чого вона не бачить: портал щойно скопіював sid із посилання в її сховище cookie. Тепер її браузер зберігає ідентифікатор сесії Боба.

  7. Аліса входить на портал

    Аліса входить зі своїми обліковими даними Sundermark, як і просило сповіщення. Портал вітає її й відкриває їй панель. Усе виглядає нормально: її обліковий запис, її дані, її сесія.

  8. Ідентифікатор, який мав змінитися

    Ось вада, яку тепер видно. Безпечний вхід видає зовсім новий ідентифікатор сесії в ту мить, коли користувач автентифікується, а той, з яким він прийшов, відкидається. Ідентифікатор Аліси не змінився. Cookie на її автентифікованій панелі байт у байт збігається зі значенням, що надійшло з посилання в листі, — зі значенням, яке підкинув Боб.

  9. Боб оновлює сторінку й потрапляє в її обліковий запис

    У браузері Боба досі відкрита сторінка входу — та, яку він завантажив із підкинутим ідентифікатором сесії. Через хвилину після входу Аліси він просто оновлює цю сторінку. Його підкинутий ідентифікатор тепер прив'язаний до її автентифікованої сесії, тож портал сприймає його запит як її запит і одразу перенаправляє Боба на її панель. Ні пароля, ні крадіжки, ні шкідливої програми.

  10. Назвіть, що сталося

Охоплення стандартів безпеки

OWASP Top 10

  • A07:2025 Authentication Failures
  • A07:2021 Identification and Authentication Failures

CWE

  • CWE-384 Session Fixation
  • CWE-613 Insufficient Session Expiration

MITRE ATT&CK

  • T1539 Steal Web Session Cookie

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security