Современные реалии таковы, что не каждый бизнес может себе позволить сайт, особенно стартующий бизнес. Поэтому выгодно воспользоваться конструктором сайтов, например filandor.com . Запуск сайта через несколько минут.
Предположим, вы управляете сайтом объявлений о вакансиях. Ежедневно соискатели будут загружать на ваши серверы свои резюме, сопроводительные письма и другие дополнительные документы. Что если кто-то попытается вместо этого загрузить вредоносное ПО?
Сегодня мы облегчаем работу вашей команды безопасности, предоставляя механизм сканирования содержимого файлов, интегрированный с нашим брандмауэром веб-приложений (WAF), чтобы вредоносные файлы, загружаемые конечными пользователями, блокировались до того, как они достигнут серверов приложений.
Введите сканирование содержимого WAF.
Если вы являетесь корпоративным клиентом, обратитесь к своей команде по работе с клиентами, чтобы получить доступ.
Простое сканирование контента
В Cloudflare мы гордимся тем, что делаем наши продукты очень простыми в использовании. Сканирование содержимого WAF было создано с учетом этой цели. Основным требованием для использования Cloudflare WAF является то, что трафик приложений передается через сеть Cloudflare. После этого для включения сканирования контента требуется один вызов API.
После включения WAF автоматически обнаружит любой загружаемый контент, а при обнаружении просканирует его и предоставит результаты, которые вы сможете использовать при написании настраиваемых правил WAF или просмотре аналитических панелей безопасности.
Весь процесс выполняется вместе с вашим HTTP-трафиком и не требует внесения изменений в ваше приложение.
На сегодняшний день мы сканируем файлы размером до 1 МБ. Вы можете легко заблокировать файлы, превышающие этот размер, или выполнить другие действия, например зарегистрировать загрузку.
Чтобы заблокировать вредоносный файл, вы можете написать простое пользовательское правило WAF, подобное следующему:
если: (cf.waf.content_scan.has_malicious_obj)
тогда: BLOCK
В приборной панели правило будет выглядеть так:

Многие другие варианты использования могут быть достигнуты за счет использования метаданных, предоставляемых механизмом сканирования содержимого WAF. Например, предположим, что вы хотите разрешить загрузку PDF-файлов только на заданную конечную точку. Этого можно добиться, развернув следующее пользовательское правило WAF:
если: any(cf.waf.content_scan.obj_types[*] != "application/pdf") and http.request.uri.path eq "/upload"
тогда: BLOCK
Это правило будет блокировать HTTP-запрос для любого файла содержимого, загружаемого в конечную точку /upload, если хотя бы один файл не является PDF-файлом.
В более общем случае предположим, что ваше приложение вообще не ожидает загрузки содержимого. В этом случае вы можете заблокировать любые попытки загрузки с помощью:
если: (cf.waf.content_scan.has_obj)
тогда: BLOCK
Еще один очень распространенный вариант использования — поддержка конечных точек загрузки файлов, которые принимают содержимое JSON. В этом случае файлы обычно встраиваются в полезную нагрузку JSON после кодирования base64. Если ваше приложение имеет такую конечную точку, вы можете предоставить механизму сканирования дополнительные метаданные для распознавания трафика, отправив пользовательское выражение сканирования. После отправки файлы в полезных нагрузках JSON будут автоматически проанализированы, декодированы и отсканированы. Если вы хотите выполнить действие блокировки, вы можете использовать настраиваемый тип ответа JSON, чтобы внешний интерфейс вашего веб-приложения мог легко анализировать и отображать сообщения об ошибках:

Полный список полей, предоставляемых механизмом сканирования содержимого WAF, можно найти в нашей документации для разработчиков.
Двигатель
Отсканированные объекты контента
Много времени было потрачено на разработку системы, чтобы определить, что следует сканировать. Правильное определение этого помогает нам гарантировать, что мы не сканируем ненужный контент, уменьшая влияние задержки и использование ЦП, и что нет обходных путей, делающих систему дополнением к существующим функциям WAF.
Сложность связана с тем, что нет четкого определения «файла» в терминах HTTP. Вот почему в этом сообщении в блоге и в дизайне системы вместо этого мы ссылаемся на «объект контента».
На высоком уровне, хотя это можно приблизительно определить как «файл», не все «объекты контента» могут храниться в файловой системе сервера приложений! Поэтому нам нужно определение, применимое к HTTP. Дополнительную сложность создает тот факт, что это продукт безопасности, и злоумышленники всегда будут пытаться злоупотреблять HTTP, чтобы запутать/скрыть истинные намерения. Так, например, хотя Content-Type
заголовок может указывать на то, что тело запроса является jpeg
образ, на самом деле это может быть pdf
.
Имея в виду вышеизложенное, «объект контента» на сегодняшний день — это любая полезная нагрузка запроса, обнаруженная с помощью эвристики (поэтому не будем ссылаться на Content-Type
заголовок) быть чем угодно, что нет text/html
, text/x-shellscript
, application/json
или text/xml
. Все остальные типы контента считаются объектами контента.
Обнаружения с помощью эвристики типа содержимого тела HTTP-запроса недостаточно, поскольку объекты содержимого могут быть найдены в частях тела HTTP или закодированы в соответствии с определенными правилами, например, при использовании multipart/form-data
которая является наиболее распространенной кодировкой, используемой при создании стандартных форм ввода файлов HTML.
Поэтому при обнаружении определенных форматов полезной нагрузки применяется дополнительный синтаксический анализ. На сегодняшний день движок будет автоматически анализировать и выполнять эвристику типа контента для отдельных компонентов полезной нагрузки, когда полезная нагрузка кодируется с использованием multipart/form-data
или multipart/mixed
или JSON
строка, которая может иметь «объекты контента», встроенные в формат base64, как определено заказчиком
В этих случаях мы не сканируем всю полезную нагрузку как единый объект содержимого, а анализируем ее в соответствии с соответствующим стандартом и при необходимости применяем сканирование к отдельным частям полезной нагрузки. Это позволяет нам поддерживать сканирование более чем одного объекта контента на запрос, например HTML-форму, которая имеет несколько входных файлов. В будущем мы планируем добавить дополнительные автоматические обнаружения для сложных полезных нагрузок.
Если мы обнаружим вредоносное совпадение, но не сможем правильно определить тип контента, мы по умолчанию будем сообщать о типе контента application/octet-stream
в журналах/панелях управления Cloudflare.
Наконец, стоит отметить, что мы явно избегаем сканирования всего, что представляет собой обычный текст (HTML, JSON, XML и т. д.), поскольку поиск векторов атаки в этих полезных нагрузках уже обеспечивается WAF, шлюзом API и другими решениями по обеспечению безопасности веб-приложений, уже представленными в Портфолио Cloudflare.
Локальные сканы
В Cloudflare мы пытаемся использовать нашу горизонтальную архитектуру для создания масштабируемого программного обеспечения. Это означает, что базовый сканер развернут на каждом сервере, обрабатывающем клиентский HTTP/S-трафик. На схеме ниже описана установка:

Если каждый сервер выполняет сканирование локально, это помогает свести к минимуму влияние задержки на применимые HTTP-запросы. Фактическое ядро сканирования такое же, как и в веб-шлюзе Cloudflare, нашем решении для прямого прокси-сервера, которое, среди прочего, помогает обеспечить безопасность устройств конечных пользователей, блокируя попытки загрузки вредоносного ПО.
Следовательно, предоставляемые возможности сканирования соответствуют возможностям, предоставляемым антивирусным сканированием веб-шлюза. Основное отличие на сегодняшний день заключается в том, что максимальный размер файла в настоящее время ограничен 1 МБ по сравнению с 15 МБ в веб-шлюзе. В ближайшие месяцы мы работаем над его увеличением, чтобы оно соответствовало веб-шлюзу.
Отделение обнаружения от смягчения последствий
Новый подход, который мы применяем в рамках нашего портфолио безопасности приложений, заключается в отделении обнаружения от смягчения последствий. Функции сканирования содержимого WAF следуют этому подходу, поскольку после включения они просто улучшают все доступные данные и поля с результатами сканирования. Преимущества здесь двоякие.
Во-первых, это позволяет нам обеспечить видимость трафика вашего приложения без необходимости развертывания каких-либо мер по смягчению последствий. Это автоматически открывает отличный вариант использования: открытие. Для крупных корпоративных приложений группы безопасности могут не знать, какие пути или конечные точки могут ожидать загрузки файлов из Интернета. Используя нашу функцию сканирования содержимого WAF в сочетании с нашей новой аналитикой безопасности, они теперь могут фильтровать по запросу трафик, который имеет объект файлового содержимого (загружаемый файл), чтобы отслеживать первые N путей и имен хостов, раскрывая такие конечные точки.

Во-вторых, как упоминалось в предыдущем разделе, предоставление интеллектуальных данных, предоставляемых Cloudflare, в виде полей, которые можно использовать в наших пользовательских правилах WAF, позволяет нам предоставить очень гибкую платформу. В качестве плюса вам не нужно учиться использовать новую функцию, поскольку вы, вероятно, уже знакомы с нашим конструктором пользовательских правил WAF.
Это не новая идея, и наше решение для управления ботами было первым, с большим успехом опробовавшим ее. Любой клиент, который сегодня использует Bot Management, получает доступ к полю оценки бота, которое указывает вероятность того, что запрос исходит от автоматизации или человека. Клиенты используют это поле для развертывания правил, блокирующих ботов.
Для этого предположим, что вы запустили сайт приложений о приеме на работу и не хотите, чтобы боты и поисковые роботы автоматически отправляли заявления о приеме на работу. Теперь вы можете блокировать загрузку файлов от ботов!
если: (cf.bot_management.score lt 10 and cf.waf.content_scan.has_obj)
тогда: BLOCK
И это сила, которую мы хотим предоставить вам.
Следующие шаги
Наше сканирование содержимого WAF — это новая функция, и мы планируем несколько улучшений, в том числе увеличение максимального размера сканируемого содержимого, раскрытие действия «перезаписать», чтобы вы могли отправлять вредоносные файлы на карантинный сервер, и предоставление улучшенной аналитики, которая позволит вам легче исследовать данные без развертывания правил. Следите за обновлениями!