Порушена автентифікація користувачів
6-значний код лишається секретом, лише поки кількість спроб обмежена.
Що таке Порушена автентифікація користувачів?
Ендпоінт може правильно перевіряти облікові дані й усе одно не захищати цю перевірку від автоматизації: ні ліміту спроб, ні блокування, ні обмеження частоти запитів. Коли облікові дані — 6-значний код, зловмисник перебирає весь простір запит за запитом. Ви почнете вхід, знаючи лише електронну адресу жертви, побачите, як на неправильний код приходить відповідь 200 і ніщо не рахує спроб, а потім скриптом дійдете до активної сесії. Виправлення рахує невдалі спроби на сервері, повертає 429 на межі ліміту, робить код недійсним після збігу й тримає короткий строк дії.
Що ви дізнаєтесь у Порушена автентифікація користувачів
- Розпізнавайте порушену автентифікацію користувачів, коли ендпоінт правильно перевіряє облікові дані, але не обмежує кількість спроб і тому піддається перебору
- Усвідомлюйте, що короткий числовий код (OTP або код входу) лишається секретом, лише поки кількість спроб обмежена, і що ендпоінт без обмежувача віддає зловмисникові весь простір кодів запит за запитом
- Відрізняйте цю вразливість від крадіжки токена, підроблення токена та вад доступу на рівні об'єктів: тут перевірка облікових даних правильна, а бракує захисту від автоматизації на самому ендпоінті
- Застосовуйте виправлення: рахуйте невдалі спроби в серверному стані, прив'язаному до облікового запису, блокуйте після досягнення порогу й повертайте 429, робіть код недійсним після використання і задавайте кодам короткий строк дії
- Перевіряйте кожен ендпоінт входу, підтвердження й скидання пароля на відсутність ліміту спроб, бо одного кроку автентифікації без обмежень досить для викрадення облікового запису
Порушена автентифікація користувачів — Кроки навчання
-
Єдиний код на варті
Kelvo — фінансовий застосунок для звичайних користувачів, і вхід у нього виконується за 6-значним кодом, надісланим на електронну адресу, без пароля. Користувач вводить свою адресу, Kelvo надсилає код, користувач вводить його у відповідь — і він у системі. У Боба коду немає. Зате з витоку списку розсилки в нього є електронна адреса однієї клієнтки: renata.voss@gmail.com. Він відкриває сторінку входу Kelvo, щоб точно побачити, з чим має справу.
-
Запустіть надсилання коду
Боб починає вхід для облікового запису, на який націлився. Він вводить електронну адресу жертви й просить Kelvo надіслати код. Код надходить у поштову скриньку Ренати, а не до нього, але Kelvo тепер показує йому екран, на якому код потрібно ввести. Саме цей екран і запит, що стоїть за ним, Боб вивчає далі.
-
Стежте за запитом
Екран введення коду вже перед Бобом. Справжнього коду Ренати він не знає, але перш ніж його підбирати, хоче побачити, як екран перевіряє код і куди його надсилає. Він вводить неправильний код, надсилає його й дивиться на запит, який робить браузер, на панелі Network.
-
Ендпоінт на видноті
Браузер Боба надіслав код до API Kelvo, а панель Network зафіксувала весь запит. Це дає Бобові єдине, що потрібно, щоб атакувати без екрана: точну адресу ендпоінта, який перевіряє коди.
-
Скрипт перебору
Знаючи ендпоінт, Боб не вгадує код вручну. Він відкриває короткий скрипт перебору (brute force), яким атакуватиме цей ендпоінт: цикл надсилає на ендпоінт перевірки Kelvo кожен можливий код, доки сервер не прийме котрийсь.
-
Як працює цикл
Уся атака вміщається в кілька рядків. Розберіть, що робить кожна частина і чому нічого на вразливому сервері її не зупиняє.
-
Переберіть усі коди
Боб запускає скрипт, націлений на ендпоінт перевірки Kelvo. Скрипт раз у раз надсилає той самий запит, щоразу збільшує код на одиницю й чекає, доки сервер не прийме котрийсь код.
-
Код, що підійшов
Скрипт працював без жодної перешкоди й знайшов код, який сервер приймає.
-
Скористайтеся кодом
Боб бере код, який знайшов скрипт, і ще раз надсилає його на ендпоінт, цього разу вручну, щоб переконатися, що обліковий запис тепер його, і побачити, що він отримав.
-
Активна сесія з шести цифр
Ендпоінт прийняв вгаданий код і повернув справжню сесію.
Охоплення стандартів безпеки
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