← Документация WAF / detections
Обнаружение утёкших учётных данных
Утёкшие учётные данные: обнаружение трафика проверяет входящие запросы на наличие учётных данных (имён пользователей и паролей), ранее утёкших из утечек данных ↗.
Как это работает
Когда вы включаете обнаружение утёкших учётных данных, Cloudflare сканирует входящие HTTP-запросы на имена пользователей и пароли. Сканирование проверяет паттерны аутентификации из распространённые веб-приложения и любые пользовательские расположения обнаружения которые вы настроите.
Обнаруженные учётные данные сравниваются с базой известных утёкших учётных данных. Эта база состоит из:
- Have I Been Pwned (HIBP) ↗ — датасет совпавших паролей (только пароли)
- Учётные данные, собранные Cloudflare (имена пользователей)
- Пары утёкших учётных данных (имя пользователя и пароль)
На основе результатов Cloudflare заполняет поля утёкших учётных данных для просканированных запросов. Эти поля можно использовать двумя способами:
- Анализ трафика: просматривайте результаты обнаружения в Security Analytics (дашборд), чтобы понять, как часто утёкшие учётные данные появляются в вашем трафике.
- Создание правил: используйте поля в пользовательские правила или правила rate limiting , чтобы выдавать челлендж или блокировать запросы, содержащие скомпрометированные учётные данные.
Утёкшие учётные данные могут появляться в вашем трафике по разным причинам. Атакующий может проводить credential stuffing ↗ (атака), либо легитимный пользователь может повторно использовать ранее утёкший пароль.
Уведомление вашего сервера-источника
Обнаружение утёкших учётных данных предоставляет управляемое преобразование (managed transform), которое добавляет Exposed-Credential-Check к соответствующим запросам. Значение заголовка указывает, что именно утекло — например, 1 если имя пользователя и пароль составляли утёкшую пару, 2, если утекло имя пользователя, или 4, если утёк только пароль.
Вы можете использовать этот заголовок на исходном сервере, чтобы предупреждать пользователей и предлагать им сбросить пароль.
Доступность
Подробности о функциях, доступных в каждом плане, см. в Доступность на странице обнаружений трафика.
Стандартные расположения сканирования
Обнаружение утёкших учётных данных включает правила выявления учётных данных в HTTP-запросах для следующих известных веб-приложений:
- Drupal
- Joomla
- Ghost
- Magento
- Plone
- WordPress
- Microsoft Exchange OWA
Кроме того, сканирование включает общие правила для других распространённых схем веб-аутентификации.
Вы также можете настроить пользовательские расположения обнаружения чтобы учесть конкретный механизм аутентификации, используемый в ваших веб-приложениях. Пользовательское расположение обнаружения (custom detection location) сообщает Cloudflare WAF, где искать имена пользователей и пароли в HTTP-запросах вашего веб-приложения.
Пользовательские расположения обнаружения
Сканирование по умолчанию охватывает распространённые веб-приложения, но ваше приложение может передавать учётные данные в другом формате или с другими именами полей. Пользовательские расположения обнаружения позволяют указать Cloudflare, где именно искать имена пользователей и пароли в HTTP-запросах.
Например, если JSON-тело HTTP-запроса, аутентифицирующего пользователя, выглядит следующим образом:
{ "user": "<username>", "secret": "<password>" }Вы могли бы настроить пользовательское расположение обнаружения со следующими настройками:
- Пользовательское расположение имени пользователя:
lookup_json_string(http.request.body.raw, "user") - Пользовательское расположение для пароля:
lookup_json_string(http.request.body.raw, "secret")
При указании пользовательского расположения обнаружения обязательно только расположение поля имени пользователя.
В следующей таблице приведены примеры расположений обнаружения для разных типов запросов:
| Тип запроса | Расположение имени пользователя / Расположение пароля |
|---|---|
| JSON-тело | lookup_json_string(http.request.body.raw, "user")lookup_json_string(http.request.body.raw, "secret") |
| Форма в кодировке URL | url_decode(http.request.body.form["user"][0])url_decode(http.request.body.form["secret"][0]) |
| Multipart-форма | url_decode(http.request.body.multipart["user"][0])url_decode(http.request.body.multipart["secret"][0]) |
Выражения для задания пользовательских расположений обнаружения могут включать следующие поля и функции:
- Поля:
- Функции:
Инструкции по настройке пользовательского расположения для обнаружения см. в Начало работы.
Поля утёкших учётных данных
Следующие поля указывают тип совпадения по утёкшим учётным данным, обнаруженного Cloudflare. Используйте эти поля в пользовательские правила или правила rate limiting , чтобы реагировать на запросы со скомпрометированными учётными данными.
| Поле | Описание |
|---|---|
Password Leaked cf.waf.credential_check.password_leaked Boolean |
Показывает, был ли пароль, обнаруженный в запросе, ранее скомпрометирован. Доступно на всех тарифных планах. |
User and Password Leaked cf.waf.credential_check.username_and_password_leaked Boolean |
Показывает, была ли обнаруженная в запросе пара «имя пользователя — пароль» ранее скомпрометирована в утечке. Требуется план Pro или выше. |
Имя пользователя в утечках cf.waf.credential_check.username_leaked Boolean |
Показывает, было ли обнаруженное в запросе имя пользователя ранее скомпрометировано в утечке. Требуется план Enterprise. |
Похожий пароль в утечках cf.waf.credential_check.username_password_similar Boolean |
Указывает, встречалась ли ранее в утечках похожая версия обнаруженных в запросе имени пользователя и пароля. Требуется план Enterprise. |
Аутентификация обнаружена cf.waf.auth_detected Boolean |
Указывает, обнаружил ли Cloudflare учётные данные аутентификации в запросе. Требуется план Enterprise. |