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

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

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

Атака — один или несколько хитов, сгруппированных по следующим признакам:

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

    Это основной способ группировки хитов в атаку, применяется всегда.

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

    К хитам типа Brute force, Forced browsing, BOLA, Resource overlimit, Data bomb и Virtual patch этот способ группировки не применяется.

    Если хиты сгруппированы этим способом, для атаки недоступны кнопка Отметить атаку как ложную и опция активной проверки.

Перечисленные способы группировки хитов в атаку не исключают друг друга. Если хиты попадают под обе категории, все они группируются в одну атаку.

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

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

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

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

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

Типы атак

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

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

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

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

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

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

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

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

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

К поведенческим атакам относятся:

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

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

    https://example.com/login/?username=admin&password=123456
    
  • Атаки типа BOLA (IDOR) эксплуатируют одноименную уязвимость приложений. Данная уязвимость позволяет злоумышленнику обратиться к объекту по индентификатору через запрос API и получить или изменить его данные, обойдя механизм авторизации.

    Например, злоумышленник может отправить множество запросов на эндпоинт API, который по идентификатору магазина возвращает финансовые данные:

    https://example.com/shops/{shop_id}/financial_info
    

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

Механика обнаружения поведенческих атак

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

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

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

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

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

Настройка защиты от поведенческих атак

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

Ограничения в обнаружении поведенческих атак

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

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

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

API защищаемого ресурса может быть спроектирован на основе следующих принципов и протоколов:

  • GraphQL

  • gRPC

  • WebSocket

  • REST API

  • SOAP

  • XML-RPC

  • WebDAV

  • JSON-RPC

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

Вебмониторэкс 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 вы можете отправить на защищенный ресурс следующий легитимный запрос:

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

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

Управление режимом libdetection

Info

Режим libdetection по умолчанию — on/true (библиотека включена) для всех форм установки ноды.

Вы можете управлять режимом работы libdetection, используя:

  • Директиву wallarm_enable_libdetection для NGINX.

  • Параметр enable_libdetection для Envoy.

  • Один из способов для NGINX Ingress-контроллера Вебмониторэкс:

    • Аннотацию nginx.ingress.kubernetes.io/server-snippet к Ingress.
    • Параметр controller.config.server-snippet Helm‑чарта.
  • Аннотацию пода wallarm-enable-libdetection для Sidecar-прокси решения Вебмониторэкс.

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

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

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

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

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

  • Режим мониторинга: обнаруживать, но не блокировать атаки.

  • Режим мягкой блокировки: обнаруживать все атаки и блокировать только те, которые отправлены с IP‑адресов из серого списка. Легитимные запросы, отправленные с 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": "[Вебмониторэкс] Обнаружен новый хит",
              "details": {
              "client_name": "TestCompany",
              "cloud": "RU",
              "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
                  }
              }
          }
      ]
      
    • Чтобы задать порог для количества атак, хитов или вредоносных пэйлоадов и получать уведомления о превышении порога, настройте соответствующие триггеры.

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