INTEGRITY Документация

Обнаружение вредоносных загрузок

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

Когда вы включаете это обнаружение, 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. Всё остальное обнаруженное содержимое считается объектом содержимого. Типичные примеры:

Если Cloudflare обнаруживает вредоносный объект, но не может определить его точный тип содержимого, объект помечается как application/octet-stream.

Сканируемое содержимое

Сканирование содержимого может проверять на вредоносность следующие объекты содержимого:

Проверяются все объекты содержимого во входящем запросе, в том числе для запросов с несколькими загруженными файлами (например, отправленная 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.

Примеры выражений правил с этими полями см. в Примеры правил.