Skip to main content

Атаки на механизмы авторизации и аутентификации

Классификация по типам проверки подлинности:

  • Знание (пароль или ответ на вопрос безопасности, одноразовый код). Факторы знаний.
  • Обладание (физический объект - мобильный телефон или маркер безопасности - магнитная карта). Фактор владения.
  • Биометрия (персональные данные или модели поведения - конфиденциальная информация). Фактор согласованности.

Механизмы аутентификации уязвимы в случаях:

  • Не могут адекватно защитить от атак с применением методов грубой силы.
  • Логические ошибки или плохой код в реализации позволяют полностью обойти аутентификацию.

Уязвимости Password-based аутентификации

Пользователи регистрируются для получения учетной записи, или администратор присваивает им учетную запись. Учетная запись связана с уникальным именем пользователя и паролем.

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

Уязвимости в этом механизме возникают по различным причинам, одни из них:

  • Возможные brute-force атаки
  • Уязвимая защита от brute-force атак
  • HTTP-basic аутентификация

Возможные brute-force атаки

Brute-forcing пользовательских имен

Работает если соответствуют узнаваемому шаблону, например, адресу электронной почты. Очень часто логины бывают в формате firstname.lastname@somecompany.com

Иногда высокопривилегированные учетные записи создаются с использованием предсказуемых имен пользователей, таких как admin или administrator.

Brute-forcing паролей

Часто бывают настроены политики паролей с высокой энтропией, которые сложнее взломать одним перебором. Возможные условия:

  • Минимального количества символов
  • Смеси строчных и заглавных букв
  • Как минимум одного специального символа

Но пользователи часто берут пароль, который они могут запомнить, и пытаются использовать его в соответствие с политикой паролей. Например, если не разрешено использование password, пользователи могут попробовать что-нибудь вроде P@ssw0rd или P4$$w0rd!.

Предположение предсказуемых закономерностей означает, что атаки с применением грубой силы часто могут быть гораздо более изощренными и более эффективными, чем простые итерации через всевозможные комбинации символов.

Уязвимая защита от brute-force атак
Для успешной компроментации аккаунта необходимо провести множество неудачных попыток. Защита строится на замедлении скорости перебора пароля.  Наиболее распространенные способы предотвращения атак:

  • Блокировка учетной записи в случае большого количества неудачных попыток входа.
  • Блокировка IP-адреса удаленного пользователя в случае большого количества попыток входа в систему.

Иногда счетчик количества неудачных попыток сбрасывается при успешном входе владельца IP-адреса. Это означает, что злоумышленнику просто придется входить в систему под своей учетной записью каждые несколько попыток, чтобы этот лимит никогда не был достигнут.

В этом случае достаточно просто включать свои собственные учетные данные для входа в систему через регулярные интервалы времени в течение перебора всего словаря, чтобы сделать эту защиту практически бесполезной.

Basic-аутентификация HTTP

Несмотря на старость метода, ее часто используют. Клиент получает маркер аутентификации, который строится путем сцепления имени пользователя и пароля, а также их кодировки в Base64. Этот токен хранится в браузере, который автоматически добавляет его в заголовок авторизации каждого последующего запроса следующим образом:

Authorization: Basic base64(username:password)

Причины уязвимости:

  • Многократная отправка учетных данных при каждом запросе. Если на веб-сайте также не реализована HSTS, могут быть перехвачены через Man-in-the-Middle.
  • Часто не поддерживает защиту от переборов грубой силы. Поскольку токен состоит из статических значений.
  • Уязвима к атакам, связанным с сеансом, в частности к CSRF

В некоторых случаях использование уязвимой базовой HTTP-аутентификации может дать злоумышленнику доступ только к, казалось бы, неинтересной странице. Однако, в дополнение к обеспечению дополнительной поверхности атаки, учетные данные, раскрытые таким образом, могут быть повторно использованы в других, более конфиденциальных контекстах.

Уязвимости мультифакторной аутентификации

Проверка биометрических факторов является непрактичной для большинства веб сайтов. Чаще встречается двухфакторная аутентификация (2FA). Для многофакторной аутентификации необходимы различные факторы. Проверка одного фактора разными способами не является двухфакторной аутентификацией.

Одним из таких примеров является 2FA через электронную почту. Хотя пользователь должен предоставить пароль и проверочный код, доступ к коду предполагается на основе того, что пользователь знает учетные данные для входа в свою учетную запись электронной почты. Поэтому фактор проверки подлинности знания просто проверяется дважды.

Обход двухфакторной аутентификации:

  • Несовершенная реализация 
  • Иногда ошибочная логика двухфакторной аутентификации означает, что после того, как пользователь выполнил начальный шаг входа в систему, веб-сайт не может адекватно проверить, что этот же пользователь выполняет второй шаг.
  • Отсутствие мер по предотвращению перебора проверочного кода 2FA. 

Уязвимости механизмов смены пароля, восстановления пароля, поддержания сессии
Большинство сайтов предоставляют дополнительные функциональные возможности управления учетной записью. Например, изменение и сброс пароля. Эти механизмы также могут добавлять уязвимости.

Разработчики стараются избежать известных уязвимостей на страницах входа. Однако забывают об аналогичные шагах на связанной функциональности. Это особенно важно при возможности пользователя самому создавать учетную запись и имеет  доступ к изучению этих дополнительных страниц.

Сторонние механизмы аутентификации, которые также могут быть уязвимы:

  • Механизм поддержания сессии «запомнить меня»
  • Механизм сброса пароля через E-mail
  • Механизм сброса пароля с использованием URL и одноразового токена
  • Механизм смены пароля