Порушена автентифікація користувачів

Порушена автентифікація користувачів

6-значний код лишається секретом, лише поки кількість спроб обмежена.

Що таке Порушена автентифікація користувачів?

Ендпоінт може правильно перевіряти облікові дані й усе одно не захищати цю перевірку від автоматизації: ні ліміту спроб, ні блокування, ні обмеження частоти запитів. Коли облікові дані — 6-значний код, зловмисник перебирає весь простір запит за запитом. Ви почнете вхід, знаючи лише електронну адресу жертви, побачите, як на неправильний код приходить відповідь 200 і ніщо не рахує спроб, а потім скриптом дійдете до активної сесії. Виправлення рахує невдалі спроби на сервері, повертає 429 на межі ліміту, робить код недійсним після збігу й тримає короткий строк дії.

Що ви дізнаєтесь у Порушена автентифікація користувачів

Порушена автентифікація користувачів — Кроки навчання

  1. Єдиний код на варті

    Kelvo — фінансовий застосунок для звичайних користувачів, і вхід у нього виконується за 6-значним кодом, надісланим на електронну адресу, без пароля. Користувач вводить свою адресу, Kelvo надсилає код, користувач вводить його у відповідь — і він у системі. У Боба коду немає. Зате з витоку списку розсилки в нього є електронна адреса однієї клієнтки: renata.voss@gmail.com. Він відкриває сторінку входу Kelvo, щоб точно побачити, з чим має справу.

  2. Запустіть надсилання коду

    Боб починає вхід для облікового запису, на який націлився. Він вводить електронну адресу жертви й просить Kelvo надіслати код. Код надходить у поштову скриньку Ренати, а не до нього, але Kelvo тепер показує йому екран, на якому код потрібно ввести. Саме цей екран і запит, що стоїть за ним, Боб вивчає далі.

  3. Стежте за запитом

    Екран введення коду вже перед Бобом. Справжнього коду Ренати він не знає, але перш ніж його підбирати, хоче побачити, як екран перевіряє код і куди його надсилає. Він вводить неправильний код, надсилає його й дивиться на запит, який робить браузер, на панелі Network.

  4. Ендпоінт на видноті

    Браузер Боба надіслав код до API Kelvo, а панель Network зафіксувала весь запит. Це дає Бобові єдине, що потрібно, щоб атакувати без екрана: точну адресу ендпоінта, який перевіряє коди.

  5. Скрипт перебору

    Знаючи ендпоінт, Боб не вгадує код вручну. Він відкриває короткий скрипт перебору (brute force), яким атакуватиме цей ендпоінт: цикл надсилає на ендпоінт перевірки Kelvo кожен можливий код, доки сервер не прийме котрийсь.

  6. Як працює цикл

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

  7. Переберіть усі коди

    Боб запускає скрипт, націлений на ендпоінт перевірки Kelvo. Скрипт раз у раз надсилає той самий запит, щоразу збільшує код на одиницю й чекає, доки сервер не прийме котрийсь код.

  8. Код, що підійшов

    Скрипт працював без жодної перешкоди й знайшов код, який сервер приймає.

  9. Скористайтеся кодом

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

  10. Активна сесія з шести цифр

    Ендпоінт прийняв вгаданий код і повернув справжню сесію.

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

OWASP API Top 10

  • API2:2023 Broken Authentication

CWE

  • CWE-287 Improper Authentication
  • CWE-307 Improper Restriction of Excessive Authentication Attempts

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