← Документация WAF / detections
Обнаружение вредоносных загрузок
Обнаружение вредоносных загрузок — это обнаружение трафика, которая сканирует файлы и другой контент, загружаемый в ваше приложение, на наличие вредоносного ПО.
Когда вы включаете это обнаружение, WAF инспектирует входящие загрузки и проверяет их на вредоносные сигнатуры. Результаты сканирования доступны как поля, которые можно использовать в пользовательские правила и правила rate limiting, чтобы реагировать на запросы с вредоносным содержимым.
Как это работает
После включения этого обнаружения Cloudflare проверяет весь входящий трафик и выявляет объекты содержимого автоматически.
Когда Cloudflare обнаруживает в запросе один или несколько объектов содержимого, они отправляются на анализ в антивирусный (AV) сканер. Это тот же AV-сканер, что используется в Cloudflare Zero Trust.
На основе результатов сканирования обнаружение заполняет поля, на которые можно ссылаться в выражениях правил. Например, можно создать правило для блокировки запросов с вредоносными файлами или более специфичное правило, дополнительно учитывающее размер файла, тип файла или путь URI.
Что такое объект содержимого?
Объект содержимого — это файл или бинарный payload в запросе, который Cloudflare распознаёт как содержимое, пригодное для сканирования. Обнаружение вредоносных загрузок использует эвристики для автоматического поиска объектов содержимого, не полагаясь на Content-Type (заголовок), поскольку этот заголовок можно подделать.
Следующие типы контента исключены из сканирования: text/html, text/x-shellscript, application/json, text/csv и text/xml. Всё остальное обнаруженное содержимое считается объектом содержимого. Типичные примеры:
- Исполняемые файлы (например,
.exe,.bat,.dllи.wasm) - Документы (например,
.doc,.docx,.pdf,.pptи.xls) - Сжатые файлы (например,
.gz,.zipи.rar) - Файлы изображений (например,
.jpg,.png,.gif,.webpи.tif) - Видео- и аудиофайлы
Если Cloudflare обнаруживает вредоносный объект, но не может определить его точный тип содержимого, объект помечается как application/octet-stream.
Сканируемое содержимое
Сканирование содержимого может проверять на вредоносность следующие объекты содержимого:
- Загруженные файлы в запросе
- Части тела запроса для multipart-запросов, закодированных как
multipart/form-dataилиmultipart/mixed - Отдельные JSON-свойства в теле запроса (содержащие, например, файлы в кодировке Base64) в соответствии с пользовательские выражения сканирования , которые вы предоставляете
Проверяются все объекты содержимого во входящем запросе, в том числе для запросов с несколькими загруженными файлами (например, отправленная HTML-форма с несколькими полями загрузки файлов).
Сканер содержимого полностью проверяет объекты размером до 50 МБ. Для более крупных объектов сканер анализирует первые 50 МБ и выдаёт результаты сканирования по этой части объекта.
Пользовательские выражения сканирования
Иногда может понадобиться указать, где искать объекты содержимого, — например, когда содержимое является строкой в кодировке Base64 внутри JSON-payload. Например:
{ "file": "<BASE64_ENCODED_STRING>" }В таких ситуациях настройте пользовательское выражение сканирования, чтобы указать сканеру содержимого, где искать объекты содержимого. Дополнительную информацию см. в Настройка пользовательского выражения сканирования.
Дополнительную информацию и примеры поиска полей во вложенных JSON-структурах см. в lookup_json_string() — документация функции.
Поля сканирования содержимого
Когда сканирование содержимого включено, в правилах WAF можно использовать следующие поля:
| Поле | Описание |
|---|---|
Содержит объект содержимого cf.waf.content_scan.has_obj Boolean |
Показывает, содержит ли запрос хотя бы один объект содержимого. |
Содержит вредоносный объект содержимого cf.waf.content_scan.has_malicious_obj Boolean |
Показывает, содержит ли запрос хотя бы один вредоносный объект содержимого. |
Количество вредоносных объектов содержимого cf.waf.content_scan.num_malicious_obj Integer |
Число вредоносных объектов содержимого, обнаруженных в запросе (ноль или больше). |
Сканирование содержимого не удалось cf.waf.content_scan.has_failed Boolean |
Указывает, были ли в запросе объекты содержимого, которые файловый сканер не смог просканировать. |
Число объектов контента cf.waf.content_scan.num_obj Integer |
Количество объектов содержимого, обнаруженных в запросе (ноль и более). |
Размер объекта содержимого cf.waf.content_scan.obj_sizes Array<Integer> |
Массив размеров файлов в байтах в порядке обнаружения объектов содержимого в запросе. |
Тип объекта содержимого cf.waf.content_scan.obj_types Array<String> |
Массив типов файлов в порядке обнаружения объектов содержимого в запросе. |
Результат проверки объекта содержимого cf.waf.content_scan.obj_results Array<String> |
Массив результатов сканирования в порядке, в котором объекты содержимого были обнаружены в запросе. Возможные значения: clean, suspicious, infected и not scanned. |
Примеры выражений правил с этими полями см. в Примеры правил.