Перейти к содержанию

Защита от атак

Что такое атака и из чего состоит?

Атака — один или несколько хитов, которые объединены по типу атаки, параметру с вредоносным пэйлоадом и адресу, на который отправлены хиты. При этом хиты могут быть отправлены как с одного IP‑адреса, так и с разных IP‑адресов, а также иметь разные значения вредоносных пэйлоадов в рамках одного типа атаки.

Хит — сериализованный вредоносный запрос (исходный вредоносный запрос + метаданные, добавленные нодой Валарм). При этом если в запросе обнаружено несколько пэйлоадов разных типов, Валарм записывает несколько хитов, в каждом сохраняются пэйлоады одного типа.

Вредоносный пэйлоад — компонент оригинального запроса, включающий в себя следующие элементы:

  • Признак атаки (штамп), обнаруженный в запросе. Если в запросе обнаружено несколько штампов одного типа атаки, в пэйлоад записывается только первый обнаруженный штамп.

  • Контекст, в котором отправлен штамп. Под контекстом подразумевается набор символов, который предшествует штампу и завершает его. В некоторых случаях контекст может быть опущен, так как значение пэйлоада имеет ограниченную длину.

    Если запрос является частью поведенческой атаки, в нем нет пэйлоада, так как для обнаружения такой атаки не используются штампы.

Типы атак

Все атаки, которые обнаруживает Валарм API Security, делятся на группы:

  • Атаки на проверку входных данных

  • Поведенческие атаки

Способ обнаружения атаки зависит от группы, в которую входит атака. Для обнаружения поведенческих атак необходима дополнительная настройка Валарм API Security.

Атаки на проверку входных данных

К атакам на проверку входных данных относятся такие атаки, как: SQL‑инъекции, межсайтовый скриптинг, удаленное выполнение кода, Path Traversal и другие. Каждому типу атаки характерны определенные комбинации символов, переданные в запросах. Для определения таких атак выполняется синтаксический анализ запросов — синтаксический разбор запросов с целью обнаружения определенных комбинаций символов.

Атаки на проверку входных данных определяет нода Валарм с использованием перечисленных инструментов.

Обнаружение атак на проверку входных данных включено по умолчанию для всех клиентов.

Поведенческие атаки

К поведенческим атакам относятся разновидности брутфорс атак: перебор паролей, перебор идентификаторов сессии, принудительный просмотр ресурсов веб‑приложения, подстановка учетных данных. Такие атаки характеризуются большим количеством запросов, отправленных на типовой URL за определенный временной промежуток. При этом в запросах передаются разные значения параметров, по которым осуществляется перебор.

Например, на URL для аутентификации пользователей может быть отправлено множество подобных запросов с разными значением password при переборе пароля:

https://example.com/login/?username=admin&password=123456

Для определения поведенческих атак необходимо не только проанализировать синтаксис запросов, но также провести корреляционый анализ количества запросов и промежутков между запросами. Корреляционный анализ проводится при превышении порога для количества запросов, отправленных на URL директории с файлами ресурса или URL для аутентификации или активации пользователей. Порог определяется, чтобы снизить риск блокировки легитимных запросов (например, когда пользователь несколько раз вводит некорректный пароль от своего аккаунта).

  • Подсчет количества полученных запросов выполняется модулем постаналитики.

  • Сравнение количества полученных запросов и порога для этого значения, а также блокировка запросов выполняются в Облаке Валарм.

При обнаружении подобных атак блокируется источник запросов (IP‑адрес или IP‑адреса, с которых отправлены запросы, добавляются в черный список).

Для защиты ресурса от поведенческих атак, необходимо настроить порог для срабатывания корреляционного анализа и URL, подверженный поведенческим атакам.

Инструкция для настройки защиты от брутфорса →

Ограничения в обнаружении брутфорса

Валарм API Security ищет признаки брутфорс атак только в следующих запросах:

Типы защищаемых ресурсов

Валарм API Security анализирует как HTTP‑трафик, так и WebSocket‑трафик, который поступает на защищаемый ресурс:

API защищаемого ресурса может быть спроектирован на основе технологий и принципов REST, gRPC или GraphQL.

Процесс обнаружения атаки

Валарм API Security использует следующий процесс для обнаружения атаки:

  1. Определение формата запроса и парсинг каждой части запроса, как описано в документе по парсингу.

  2. Определение эндпоинта, на который отправлен запрос.

  3. Применение индивидуальных правил обработки запроса.

  4. Принятие решения о признаках атаки в запросе на основе стандартных и индивидуальных правил.

Инструменты для обнаружения атак

Для выявления вредоносных запросов, Валарм API Security анализирует все запросы к защищаемому ресурсу с помощью следующих инструментов:

  • Библиотека libproton
  • Библиотека libdetection

  • Индивидуальные правила обработки запросов

Библиотека libproton

Библиотека libproton — основной инструмент для выявления вредоносных запросов. Библиотека использует компонент proton.db, в котором описаны признаки разных типов атак в формате последовательности из токенов (например, union select для атаки типа SQL‑инъекция). Если в запросе обнаружена последовательность токенов, описанная в proton.db, запрос считается атакой соответствующего типа.

Мы регулярно обновляем proton.db: добавляем последовательности токенов для новых типов атак и актуализируем набор последовательностей токенов для описанных типов атак.

Библиотека libdetection

Обзор библиотеки libdetection

Библиотека libdetection выполняет дополнительную валидацию атак, обнаруженных с помощью библиотеки libproton:

  • Если признаки атаки подтверждаются, атака выгружается в Облако Валарм и блокируется (если нода Валарм работает в режиме block).

  • Если признаки атаки не подтверждаются, запрос считается легитимным, атака не выгружается в Облако Валарм и не блокируется (если нода Валарм работает в режиме block).

Такой подход реализует двойное обнаружение атак и снижает количество ложных срабатываний.

Типы атак, которые валидирует библиотека libdetection

На данный момент библиотека libdetection валидирует только атаки типа SQL‑инъекций.

Как работает libdetection

Особенность библиотеки libdetection заключается в анализе запроса не только по токенам, которые идентифицируют атаку, но и по контексту, в котором отправлен токен.

Библиотека содержит набор цепочек из символов синтаксиса разных типов атак (на данный момент: SQL‑инъекции). Одна цепочка называется контекст. Пример контекста атаки типа SQL‑инъекция:

SELECT example FROM table WHERE id=

Библиотека выполняет синтаксический анализ атаки на соответствие контекстам. Если атака не соответствует контекстам, запрос не считается вредоносным и не блокируется (если нода Валарм работает в режиме block).

Включение libdetection

По умолчанию анализ запросов с помощью libdetection отключен. Чтобы снизить количество ложных срабатываний, мы рекомендуем включить анализ.

Чтобы включить анализ:

  1. Добавьте директиву wallarm_enable_libdetection on в блок http, server или location конфигурационного файла NGINX.
  2. Добавьте директиву proxy_request_buffering on в блок http, server или location конфигурационного файла NGINX для корректного анализа тела запросов.
  1. Добавьте параметр enable_libdetection on в секцию tsets конфигурационного файла Envoy.
  2. Добавьте фильтр envoy.buffer в секцию http_filters конфигурационного файла Envoy для корректного анализа тела запросов.

Увеличение в количестве потребляемой памяти

При анализе атак с помощью библиотеки libdetection возможно увеличение объема памяти, потребляемой процессами NGINX/Envoy и Валарм, примерно на 10%.

Тестирование libdetection

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

curl "http://localhost/?id=1' UNION SELECT"
  • Анализ запроса с помощью библиотеки libproton определит UNION SELECT как признак SQL‑инъекции. Это срабатывание является ложным, так как UNION SELECT без дополнительных операторов не является признаком атаки.

  • Если анализ с помощью библиотеки libdetection включен, признак SQL‑инъекции в запросе не подтвердится, атака не выгрузится в Облако Валарм и не заблокируется (если нода Валарм работает в режиме block).

Индивидуальные правила обработки запросов

Клиенты Валарм могут задать индивидуальные правила обработки запросов исходя из особенностей защищаемых приложений. Индивидуальные правила могут быть следующих типов:

Индивидуальные правила обработки запросов применяются при анализе запросов вместе со стандартными правилами, описанными в proton.db.

Режим мониторинга и блокировки атак

Вы можете использовать Валарм API Security в нескольких режимах фильтрации трафика:

  • Режим мониторинга: для обнаружения атак и отображения информации об атаках в Консоли управления Валарм.

  • Режим мягкой блокировки: для обнаружения атак, отображения информации об атаках в Консоли управления Валарм и блокировки атак, отправленных с IP‑адресов из серого списка.

  • Режим блокировки: для обнаружения, блокировки атак и отображения информации об атаках в Консоли управления Валарм.

Валарм API Security качественно анализирует все запросы и обеспечивает минимальное количество ложных срабатываний. Но каждое защищаемое приложение имеет особенности, поэтому мы рекомендуем проанализировать работу Валарм API Security в режиме мониторинга перед включением режима блокировки.

Для управления режимом фильтрации используется директива wallarm_mode. Более подробное описание настройки режима фильтрации приведено в инструкции по ссылке.

Режим обработки поведенческих атак настраивается отдельно, с помощью специального триггера.

Ложные срабатывания

Ложное срабатывание — обнаружение признаков атаки в легитимном запросе или определение легитимной сущности как уязвимости (подробнее о ложных срабатываниях на уязвимости →).

Для обнаружения атак Валарм API Security использует стандартный набор правил, который обеспечивает оптимальную защиту приложений с минимальным количеством ложных срабатываний. Но каждое защищаемое приложение имеет особенности, поэтому в легитимных запросах к некоторым приложениям могут быть ошибочно обнаружены признаки атаки. Например: среди запросов к форуму администраторов баз данных может быть обнаружена атака типа SQL‑инъекция, если пользователь добавляет пост с описанием вредоносного SQL‑запроса.

В таких случаях необходимо адаптировать стандартные правила под особенности защищаемого приложения. Для этого вы можете использовать следующие методы:

Идентификация и обработка ложных срабатываний являются частью тонкой настройки Валарм API Security для защиты ваших приложений. Поэтому мы рекомендуем развернуть первую ноду Валарм в режиме мониторинга и провести анализ атак, обнаруженных в трафике. Если среди атак будут ложные срабатывания, необходимо адаптировать стандартные правила обнаружения атак под особенности приложения и после этого переключить ноду в режим блокировки.

Управление обнаруженными атаками

Все обнаруженные атаки отображаются в Консоли управления Валарм → секция События по фильтру attacks. Вы можете управлять атаками через интерфейс следующим образом:

  • Просматривать и анализировать атаки

  • Повышать приоритет атаки в очереди на активную проверку

  • Отмечать атаки или отдельные хиты как ложные срабатывания

  • Создавать правила для специальной обработки отдельных хитов

Более подробная информация об управлении атаками приведена в инструкции по работе с атаками.

Просмотр атак

Уведомления об атаках, хитах и вредоносных пэйлоадах

Валарм позволяет настроить уведомления о попытках атаковать вашу систему. Используя уведомления, вы можете вести мониторинг вредоносного трафика, обнаруженного нодой Валарм. Например: оперативно отмечать ложные срабатывания, добавлять в белый список IP‑адреса источников легитимных запросов и блокировать IP‑адреса источников атак.

Чтобы настроить уведомления:

  1. Настройте нативные интеграции с системами, в которые необходимо отправлять уведомления. Например: PagerDuty, Opsgenie, Splunk, Slack, Telegram или другими.

  2. Задайте условия для отправки уведомлений:

    • Чтобы получать уведомления о каждом обнаруженном хите, задайте соответствующее условие в настройках интеграции.

      Пример уведомления о хите в формате JSON
      [
          {
              "summary": "[Wallarm] Обнаружен новый хит",
              "details": {
              "client_name": "TestCompany",
              "cloud": "EU",
              "notification_type": "new_hits",
              "hit": {
                  "domain": "www.example.com",
                  "heur_distance": 0.01111,
                  "method": "POST",
                  "parameter": "SOME_value",
                  "path": "/news/some_path",
                  "payloads": [
                      "say ni"
                  ],
                  "point": [
                      "post"
                  ],
                  "probability": 0.01,
                  "remote_country": "PL",
                  "remote_port": 0,
                  "remote_addr4": "8.8.8.8",
                  "remote_addr6": "",
                  "tor": "none",
                  "request_time": 1603834606,
                  "create_time": 1603834608,
                  "response_len": 14,
                  "response_status": 200,
                  "response_time": 5,
                  "stamps": [
                      1111
                  ],
                  "regex": [],
                  "stamps_hash": -22222,
                  "regex_hash": -33333,
                  "type": "sqli",
                  "block_status": "monitored",
                  "id": [
                      "hits_production_999_202010_v_1",
                      "c2dd33831a13be0d_AC9"
                  ],
                  "object_type": "hit",
                  "anomaly": 0
                  }
              }
          }
      ]
      
    • Чтобы задать порог для количества атак, хитов или вредоносных пэйлоадов и получать уведомления о превышении порога, настройте соответствующие триггеры.

      Пример триггера и уведомления →

Демовидео