Перебір користувачів
Дві різні помилки підказують зловмисникові, які електронні адреси справжні.
Що таке Перебір користувачів?
Перебір користувачів — це ситуація, коли ваш застосунок сам підтверджує, які адреси мають облікові записи. Для цього достатньо однієї помітної різниці: іншого рядка помилки, іншого коду стану, повільнішої відповіді. Ви надішлете дві проби входу й отримаєте «No account found» в одному випадку та «Incorrect password» в іншому, а ще різницю в затримці, бо bcrypt виконується лише тоді, коли є хеш для порівняння. Виправлення повертає одну загальну помилку й завжди виконує порівняння, а коли користувача немає, — із фіксованим фіктивним хешем. Реєстрація та скидання пароля видають відповідь так само.
Що ви дізнаєтесь у Перебір користувачів
- Розпізнавайте, що будь-яка різниця між гілками обробки для зареєстрованої й незареєстрованої адреси (тіло помилки, код стану, затримка, побічний ефект) — це оракул перебору (enumeration oracle)
- Застосовуйте виправлення з єдиною помилкою на вході й стежте, щоб шлях без користувача виконував bcrypt із такою самою вартістю, як і шлях, де користувач існує
- Усвідомте, що час відповіді — другий канал перебору, який лишається після виправлення тіла відповіді й який треба звузити, підставляючи фіктивний хеш
- Перевіряйте ендпоінти реєстрації та скидання пароля на такий самий шаблон: обидва зазвичай розрізняють зареєстровану й незареєстровану адресу навіть у відповідях за успішного сценарію
- Пов'язуйте перебір із підстановкою облікових даних (credential stuffing): коли список кандидатів відфільтровано до зареєстрованих адрес, галаслива атака по всьому списку стає тихою кампанією, що не потрапляє під обмеження частоти запитів
Перебір користувачів — Кроки навчання
-
Список, який треба відфільтрувати
У Боба є дамп пар «електронна адреса — пароль» зі стороннього витоку. Більшість цих людей ніколи не чули про Larksong, тож прогнати весь список через сторінку входу було б повільно й галасливо. Спершу він хоче знати, які з цих адрес справді мають облікові записи в Larksong. Тому відкриває сторінку входу Larksong у браузері, з готовими DevTools, щоб побачити, як вона реагує на невдалий вхід.
-
Спробуйте незареєстровану адресу
Боб починає з еталона. Він пробує ввійти з адресою, до якої майже напевно не прив'язано облікового запису Larksong, і з випадковим паролем, а тоді стежить, як відповідь з'являється на вкладці «Network» («Мережа») в DevTools.
-
Еталонна відповідь
Форма показує помилку входу, а справжні подробиці — на вкладці «Network»: відповідь 401 із тілом і часом відповіді. Так виглядає невдала спроба входу з незареєстрованою електронною адресою. Боб бере це за еталон.
-
Спробуйте адресу, яку Боб вважає справжньою
Тепер Боб повторює спробу з адресою зі свого дампа, яка, на його думку, належить справжньому слухачеві, — marcus.delgado@gmail.com, знову з випадковим паролем. Якщо ендпоінт обробляє обидва випадки однаково, відповідь збігатиметься з еталоном. Якщо ні, ця різниця й буде його здобиччю.
-
Інша відповідь
Відповідь змінилася. Той самий неправильний пароль, але тіло відповіді інше. Боб так і не ввійшов, а ендпоінт входу щойно сам сказав йому, що ця адреса належить справжньому обліковому запису Larksong.
-
Перевірте час відповідей
Формулювання — одна з ознак, що видають відповідь. На вкладці «Network» є ще одна, непомітніша: скільки тривав кожен запит.
-
Перевірка знань
-
Зберіть список
Боб націлює скрипт на ендпоінт входу й подає йому всі адреси зі свого дампа, по одному запиту на кожну. Щоразу, коли відповідь — повільне Incorrect password , ця адреса потрапляє до його підтвердженого списку. Із 50 000 кандидатів 8 400 — справжні облікові записи Larksong. Атака з підстановкою облікових даних (credential stuffing), яка піде далі, націлена лише на адреси, про які Боб знає, що вони існують, тож лишається невеликою й тихою, далеко нижче порогів, на яких спрацювали б обмеження частоти запитів проти сліпої атаки по всьому списку.
-
Сповіщення системи безпеки
Ви відповідаєте за сервіс входу Larksong. Уночі система виявлення позначила незвичну активність на ендпоінті входу й надіслала вам лист про виявлене. Прочитайте, що вона виявила, а тоді відкрийте код.
-
Відкрийте обробник входу
Маршрут входу міститься в сервісі автентифікації. Відкрийте обробник і подивіться, як він вирішує, що надіслати у відповідь, коли вхід не вдається.
Охоплення стандартів безпеки
OWASP Top 10
- A07:2025 Authentication Failures
- A07:2021 Identification and Authentication Failures
CWE
- CWE-204 Observable Response Discrepancy
- CWE-208 Observable Timing Discrepancy
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