Обход аутентификации
Кнопка на экране не значит, что сервер проверяет права. Большинство обходов аутентификации возникает именно из-за этого расхождения.
Классические сценарии
- Серверная проверка отсутствует: кнопка скрыта в UI, но прямой вызов API работает. Это Broken Access Control — №1 в OWASP Top 10 2021.
- Небезопасная рефлексия: IDOR — /api/user/1005 к чужим данным, если не проверяется владение.
- Угадываемые идентификаторы сессий (слабый генератор, JWT с none-alg, фиксированный secret).
- Сброс пароля: токен предсказуем, «секретный вопрос» слабый, нет rate-limit на подбор.
Практический пример
Личный кабинет клиента: GET /api/invoices/{id}. Проверка — только «залогинен». Подмена id даёт доступ к счетам других компаний. Технически «никто не взламывал сервер» — но данные утекли.
Ещё один частый случай: мобильное приложение «прячет» админские кнопки, а API их принимает. Или промежуточный прокси отдаёт объект без повторной проверки прав — защита была только на первом экране.
История: сброс пароля «по секретному вопросу»
Классическая схема, которая повторяется в разных отраслях: восстановление доступа строится на вопросе вида «девичья фамилия матери» или «любимый предмет в школе». Злоумышленник собирает открытые данные из соцсетей, проходит проверку и получает полный доступ к кабинету — без подбора пароля и без эксплойтов.
Банки и крупные сервисы от таких схем давно уходят: одноразовые коды, подтверждение через второй канал, обязательное уведомление клиента о смене реквизитов. В корпоративных и «внутренних» системах подобные вопросы встречаются до сих пор — и часто становятся самой слабой точкой входа.
Как выглядит в разработке
- Проверка «злогинен ли» вместо «имеет ли право на этот объект»
- Роли, зашитые в клиенте, а не на сервере; суперпользовательские параметры в query
- Сброс пароля через «код из SMS» без лимита попыток или через «секретный вопрос» вида «девичья фамилия»
- API-ключи и JWT с длинным сроком жизни без возможности отзыва
Защита
- Авторизация на каждом объекте и действии на стороне сервера (не только «есть JWT»).
- Непредсказуемые ID (UUIDv4), отсутствие последовательных id в публичных API.
- 2FA, блокировка перебора, журнал аномальных входов, отзыв сессий при смене пароля.
- Безопасное восстановление доступа: одноразовые короткоживущие токены, уведомление пользователя.
Нужна проверка именно вашего контура?
Запустите автоматическое сканирование или закажите ручной аудит с заключением — с приоритетами и планом устранения.