Що таке фіксація сеансу?

На веб-сайтах можна знайти багато різних типів уразливостей безпеки, одна цікава з них називається «Фіксація сеансу». Фіксація сеансу – це проблема, коли зловмисник може вплинути на ідентифікатор сеансу, або ідентифікатор сеансу користувача, а потім використовувати його для отримання доступу до свого облікового запису. Цей тип уразливості може працювати двома способами: він може дозволити зловмиснику знайти або встановити ідентифікатор сеансу іншого користувача.

Як виконується атака фіксації сеансу

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

Зазвичай це робиться шляхом обману користувача, який натискає фішингове посилання. Саме посилання є цілком законним, але містить змінну, яка встановлює вказаний ідентифікатор сеансу. Якщо користувач потім входить з ідентифікатором сеансу, а сервер не призначає йому новий ідентифікатор сеансу увійти, зловмисник може просто встановити однаковий ідентифікатор свого сеансу та мати доступ до жертви рахунок.

Іншим способом зловмисник може виявити ідентифікатор сеансу жертви, якщо він з’являється в URL-адресі. Наприклад, якщо зловмисник може обдурити жертву, щоб вона надіслала їй посилання, і воно містить ідентифікатор сеансу жертви, зловмисник може використовувати ідентифікатор сеансу для доступу до облікового запису жертви. У деяких випадках це може статися абсолютно випадково. Наприклад, якщо користувач скопіює URL-адресу з ідентифікатором сеансу та вставить її другу або на форум, будь-який користувач, який перейде за посиланням, буде ввійти в обліковий запис користувача.

Виправлення фіксації сеансу

Є кілька рішень цієї проблеми, і, як завжди, найкращим рішенням є впровадження якомога більше виправлень у рамках стратегії поглибленого захисту. Перше рішення — змінити ідентифікатор сеансу користувача під час входу. Це не дозволяє зловмиснику вплинути на ідентифікатор сеансу користувача, який увійшов у систему. Ви також можете налаштувати сервер так, щоб він завжди приймав ідентифікатори сеансів, які він згенерував, і явно відхиляти будь-які ідентифікатори сеансів, надані користувачем.

Веб-сайт має бути налаштований так, щоб ніколи не розміщувати конфіденційні дані користувача, такі як ідентифікатор сеансу, в URL-адресі, а також розміщувати його в параметрі запиту GET або POST. Це запобігає користувачеві випадково зламати власний ідентифікатор сеансу. Використовуючи як ідентифікатор сеансу, так і окремий маркер аутентифікації, ви подвоюєте кількість інформації, яку зловмисник потребує для отримання, і запобігаєте зловмисникам доступ до сеансів із відомими ідентифікаторами сеансів.

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

Увімкнувши кілька цих підходів, стратегія глибокого захисту може усунути цю проблему як загрозу безпеці.