На веб-сайтах можна знайти багато різних типів уразливостей безпеки, одна цікава з них називається «Фіксація сеансу». Фіксація сеансу – це проблема, коли зловмисник може вплинути на ідентифікатор сеансу, або ідентифікатор сеансу користувача, а потім використовувати його для отримання доступу до свого облікового запису. Цей тип уразливості може працювати двома способами: він може дозволити зловмиснику знайти або встановити ідентифікатор сеансу іншого користувача.
Як виконується атака фіксації сеансу
Ідентифікатор сеансу користувача часто є ключовою частиною автентифікації на веб-сайті і в багатьох випадках є єдиними даними, які ідентифікують конкретного користувача, який увійшов у систему. Проблема в тому, що якщо зловмисник може встановити або дізнатися ідентифікатор сеансу іншого Користувачі, вони можуть використовувати маркер сеансу, а потім мати змогу діяти як користувач.
Зазвичай це робиться шляхом обману користувача, який натискає фішингове посилання. Саме посилання є цілком законним, але містить змінну, яка встановлює вказаний ідентифікатор сеансу. Якщо користувач потім увійде в систему з ідентифікатором сеансу, а сервер не призначить йому новий ідентифікатор сеансу під час входу, зловмисник може просто встановити такий самий ідентифікатор сеансу та отримати доступ до облікового запису жертви.
Іншим способом зловмисник може виявити ідентифікатор сеансу жертви, якщо він з’являється в URL-адресі. Наприклад, якщо зловмисник може обдурити жертву, щоб вона надіслала їй посилання, і воно містить ідентифікатор сеансу жертви, зловмисник може використовувати ідентифікатор сеансу для доступу до облікового запису жертви. У деяких випадках це може статися абсолютно випадково. Наприклад, якщо користувач скопіює URL-адресу з ідентифікатором сеансу та вставить її другу або на форум, будь-який користувач, який перейде за посиланням, увійде в обліковий запис користувача.
Виправлення фіксації сеансу
Є кілька рішень цієї проблеми, і, як завжди, найкращим рішенням є впровадження якомога більше виправлень у рамках стратегії поглибленого захисту. Перше рішення полягає в тому, щоб змінити ідентифікатор сеансу користувача під час входу. Це запобігає зловмиснику коли-небудь вплинути на ідентифікатор сеансу користувача, який увійшов у систему. Ви також можете налаштувати сервер так, щоб він завжди приймав ідентифікатори сеансів, які він згенерував, і явно відхиляти будь-які ідентифікатори сеансів, надані користувачем.
Веб-сайт має бути налаштований так, щоб ніколи не розміщувати конфіденційні дані користувача, наприклад ідентифікатор сеансу, в URL-адресі, а також розміщувати його в параметрі запиту GET або POST. Це запобігає користувачеві випадково зламати власний ідентифікатор сеансу. Використовуючи як ідентифікатор сеансу, так і окремий маркер аутентифікації, ви подвоюєте кількість інформації, яку зловмисник потребує для отримання, і запобігаєте зловмисникам доступ до сеансів із відомими ідентифікаторами сеансів.
Важливо, щоб усі дійсні ідентифікатори сеансів для користувача були недійсними після натискання кнопки виходу. Ідентифікатор сеансу можна генерувати за кожним запитом, якщо ідентифікатори попередніх сеансів недійсні, це також перешкоджає зловмисникам використовувати відомий ідентифікатор сеансу. Цей підхід також значно зменшує вікно загрози, якщо користувач розкриває власний ідентифікатор сеансу.
Увімкнувши кілька цих підходів, стратегія глибокого захисту може усунути цю проблему як загрозу безпеці.