🛡 Защищаем свои ресурсы. Часть 2: Аутентификация
Всем привет. Продолжаем образовательную рубрику и сегодня поговорим о неправильной аутентификации.
Если совсем просто - это ситуации, когда форму входа можно обойти, даже не зная пароль.
Что такое аутентификация ?
Аутентификация - это момент, когда сервис решает: пускать вас внутрь или нет.
Обычно это логин, пароль, код из SMS, приложение-аутентификатор, «запомнить меня» и т.д.
Проблема начинается тогда, когда проверка сделана логически неправильно. И тогда злоумышленнику не нужно взламывать пароль — достаточно обойти саму проверку.
Где чаще всего совершают ошибки
1️⃣ По ответам сервера можно понять, существует ли пользователь
Иногда сервис сам подсказывает, есть ли такой пользователь в системе.
Как это выглядит на практике:
для одного логина сайт отвечает чуть дольше
для другого - сразу
или тексты ошибок немного отличаются
Для обычного пользователя это незаметно. Для злоумышленника - это способ составить список реальных аккаунтов.
2️⃣ Защита от перебора есть, но она формальная
Частый кейс:
есть ограничение на количество попыток входа
но после успешного входа в любой аккаунт счётчик сбрасывается
В итоге можно бесконечно подбирать пароли, просто чередуя попытки.
Иногда защита вообще завязана только на IP-адрес, который легко подменяется.
3️⃣ 2FA есть, но его можно обойти
Многие думают:
«У нас есть двухфакторка - значит всё безопасно»
На практике:
второй шаг проверки может быть привязан к параметру в запросе
если его подменить, проверка просто пропускается
Выглядит как 2FA, работает - как ее отсутствие.
4️⃣ Небезопасные cookies
Иногда сервисы хранят в cookies:
имя пользователя
зашифрованный или предсказуемый пароль
Если такую cookie украли - аккаунт фактически скомпрометирован.
5️⃣ Сброс пароля как слабое место
Функция «Забыли пароль?» - одна из самых атакуемых.
Опасные признаки:
разные сообщения об ошибках
подсказки, какой именно шаг неверный
возможность угадывать текущий пароль по реакции системы
Это позволяет атаковать аккаунт, даже не заходя в него. Что в итоге может получить злоумышленник
• вход в чужие аккаунты • доступ к персональным данным • захват сессий • повышение прав • полный контроль над функциями сервиса
Как от этого защищаются
• сервис не должен показывать, существует ли пользователь
• ответы сервера должны быть одинаковыми по тексту и времени
• ограничения на количество попыток + CAPTCHA
• корректная реализация двухфакторной защиты
• никаких чувствительных данных в cookies
• аккуратный и «немой» сброс пароля без подсказок
Вывод
Проблемы с аутентификацией - это про ошибки в логике и доверие к клиенту.
Форма входа — одна из самых атакуемых точек любого сервиса, и именно её важно проверять вручную, а не полагаться только на автоматические проверки.
Продолжение следует 👉 Часть 3: Path Traversal