3.8 Testing for Session Puzzling

Суть вразливості:

Перевантаження сеансової змінної (також відоме як Session Puzzling) - це вразливість перебувати на рівні програми, яка може дозволити зловмиснику виконувати різні шкідливі дії:

- Обхід механізму автентифікації і видавати себе за законних користувачів.

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

- Керувати значеннями на стороні сервера непрямими методами, які неможливо передбачити або виявити.

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

Ця вразливість виникає, коли програма використовує ту саму змінну сеансу більш ніж для однієї мети. Зловмисник може отримати доступ до сторінок користувача, оскільки змінна сеансу встановлюється в одному контексті, а потім використовується в іншому.

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

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

Як протестувати

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

Наприклад: Дуже простим прикладом може бути функція скидання пароля, яка в точці входу може запитувати користувача надати деяку ідентифікуючу інформацію, таку як ім'я користувача або адресу електронної пошти. Ця сторінка може заповнити сеанс із цими ідентифікуючими значеннями, які отримані безпосередньо з боку клієнта. На цьому етапі в програмі можуть бути сторінки, що відображають приватні дані, що базуються на цьому об'єкті сеансу. Таким чином, зловмисник може обійти процес аутентифікації.