Атаки на механизмы авторизации и аутентификации
Классификация по типам проверки подлинности:
- Знание (пароль или ответ на вопрос безопасности, одноразовый код). Факторы знаний.
- Обладание (физический объект - мобильный телефон или маркер безопасности - магнитная карта). Фактор владения.
- Биометрия (персональные данные или модели поведения - конфиденциальная информация). Фактор согласованности.
Механизмы аутентификации уязвимы в случаях:
- Не могут адекватно защитить от атак с применением методов грубой силы.
- Логические ошибки или плохой код в реализации позволяют полностью обойти аутентификацию.
Уязвимости 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. Этот токен хранится в браузере, который автоматически добавляет его в заголовок авторизации каждого последующего запроса следующим образом:
Причины уязвимости:
- Многократная отправка учетных данных при каждом запросе. Если на веб-сайте также не реализована HSTS, могут быть перехвачены через Man-in-the-Middle.
- Часто не поддерживает защиту от переборов грубой силы. Поскольку токен состоит из статических значений.
Особенно уязвимаУязвима к атакам, связанным с сеансом, в частности кCSRF, от которых она сама по себе не обеспечивает никакой защиты.CSRF
В некоторых случаях использование уязвимой базовой HTTP-аутентификации может дать злоумышленнику доступ только к, казалось бы, неинтересной странице. Однако, в дополнение к обеспечению дополнительной поверхности атаки, учетные данные, раскрытые таким образом, могут быть повторно использованы в других, более конфиденциальных контекстах.
Уязвимости мультифакторной аутентификации
Проверка биометрических факторов является непрактичной для большинства веб сайтов. Чаще встречается обязательная и необязательная двухфакторная аутентификация (2FA).
Все преимуществаДля многофакторной аутентификации достигаютсянеобходимы толькоразличные путем проверки множества различных факторов.факторы. Проверка одного и того же фактора двумя разными способами не является истинной двухфакторной аутентификацией.
Одним из таких примеров является 2FA через электронную почту. Хотя пользователь должен предоставить пароль и проверочный код, доступ к коду предполагается на основе того, что пользователь знает учетные данные для входа в свою учетную запись электронной почты. Поэтому фактор проверки подлинности знания просто проверяется дважды.
Обход двухфакторной аутентификации возможен по разным причинам:аутентификации:
ИногдаНесовершенная реализациядвухфакторной аутентификации бывает настолько несовершенной, что ее можно обойти полностью.- Иногда ошибочная логика двухфакторной аутентификации означает, что после того, как пользователь выполнил начальный шаг входа в систему, веб-сайт не может адекватно проверить, что этот же пользователь выполняет второй шаг.
АОтсутствиетакже, как и в случае с паролями, веб-сайты должны принимать мерымер по предотвращению перебора проверочного кода 2FA.Это особенно важно, потому что код часто представляет собой простое 4-х или 6-значное число. Без адекватной защиты взлом такого кода тривиален.
Уязвимости механизмов смены пароля, восстановления пароля, поддержания сессииВ дополнение к базовой функциональности входа в систему, большинствоБольшинство сайтов предоставляют дополнительные функциональные возможности,возможности позволяющие пользователям управлять своейуправления учетной записью. Например, пользователиизменение обычнои могутсброс изменить свой пароль или сбросить его, когда они его забудут.пароля. Эти механизмы также могут добавлять уязвимости, которые могут быть использованы злоумышленником.уязвимости.
Веб-сайты, как правило,Разработчики стараются избежать известных уязвимостей на своих страницах входа. Однако легкозабывают упустить из виду тот факт, что необходимо предпринятьоб аналогичные шаги,шагах чтобына убедитьсясвязанной в том, что связанная с ними функциональность не менее надежна.функциональности. Это особенно важно впри техвозможности случаях,пользователя когдасамому злоумышленник может создать своюсоздавать учетную запись и, следовательно,и имеет легкий доступ к изучению этих дополнительных страниц.
Сторонние механизмы аутентификации, которые также могут быть уязвимы:
- Механизм поддержания сессии «запомнить меня»
- Механизм сброса пароля через E-mail
- Механизм сброса пароля с использованием URL и одноразового токена
- Механизм смены пароля