← Документация WAF / detections
Обнаружение вредоносных загрузок
Обнаружение вредоносных загрузок представляет собой обнаружение трафика который проверяет файлы и другое содержимое, загружаемое в ваше приложение, на наличие вредоносного ПО.
Когда вы включаете это обнаружение, WAF проверяет входящие загружаемые файлы на наличие вредоносных сигнатур. Результаты проверки доступны в виде поля можно использовать в пользовательские правила и правила ограничения частоты запросов чтобы применять действие к запросам, содержащим вредоносное содержимое.
Как это работает
После включения этого обнаружения 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. Например:
{ "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. |
Примеры выражений правил с использованием этих полей см. в Примеры правил.