erid: 2SDnjeU7TaZ erid: 2SDnjeU7TaZ

XXE-инъекции: обнаружение и предотвращение

Премия «Киберпросвет» 2024
XXE-инъекции: обнаружение и предотвращение
XXE-инъекции: обнаружение и предотвращение
04.09.2023

Язык XML сегодня один из самых распространенных в мире для хранения и транспортировки данных. XXE – это инъекция внешних сущностей XML. С помощью такой уязвимости киберпреступники могут попасть в обработку XML-данных приложением. При успешной атаке, злоумышленники смогут увидеть файлы в системе сервера приложений и совершать действия с серверными системами. Кроме того, внешние приложения и системы, к которым может обращаться сервер, тоже попадут в доступ к преступнику.

Совершив такую инъекцию, преступник может не просто украсть чувствительные данные, но и использовать для подделки запросов на стороне сервера (SSRF). Это очень опасная уязвимость, так как, используя ее, злоумышленники могут применить серверную программу для выполнения HTTP-запросов к любому URL-адресу, для которого у сервера есть доступ.

В этой статье мы расскажем, как обнаружить и предотвратить XXE-инъекций, а также об атаке с помощью LPE и XXE.

Способы обнаружения XXE-инъекций

Один из важнейших аспектов тестирования на проникновение – обнаружение уязвимостей типа XML Entity (XXE). XXE-уязвимость возникает в случае, когда приложение небезопасно обрабатывает или разбирает внешние XML-сущности. Это может быть опасно, так как в перспективе приводит к различного рода атакам, в том числе чтение локальных файлов или выполнение удаленного кода.

Александр Зубриков

Генеральный директор ITGLOBAL.COM Security

Для обнаружения XXE-уязвимостей в веб-приложениях необходимо обращать пристальное внимание на эндпоинты, обрабатывающие вводимые пользователем XML-данные. Сканерами или специалистами вводятся специально сформированные XML-инъекции, такие как файлы, URL или внешние схемы, чтобы проверить, как приложение обрабатывает такие данные.

Для нахождения уязвимостей можно использовать полноценные сканеры уязвимости, такие как OWASP ZAP, BurpSuit, Nessus, Acunetix и так далее. Также можно использовать узкоспециализированные утилиты, например, XXExploiter.

Для обнаружения внешних XML-сущностей можно использовать следующие решения:

  1. WAF (Web Application Firewall). Современные WAF можно настроить именно для обнаружения XXE-атак. WAF способен фильтровать входящий и исходящий трафик, отлавливая аномалии, которые могут указывать на попытку атаки через XML External Entities.
  2. DAST (Динамический анализ приложений). Такие инструменты способны проводить мониторинг поведения приложения в реальном времени, позволяя обнаружить XXE и другие уязвимости.
  3. Автоматические Веб-Сканеры. Эти программы также можно настроить для автоматического обнаружения XXE.
  4. Метод фаззинга. Он состоит в подаче различных входных данных, (включая манипулированные XML-документы, для выявления уязвимостей.
  5. Также можно использовать инструменты для статического анализа кода. Они сканируют исходный код на наличие уязвимостей, связанных с XXE.
  6. Инструменты IDS/IPS. Системы обнаружения и предотвращения вторжений можно настроить на обнаружение попытки эксплуатации XXE-уязвимостей на сетевом уровне.

Константин Тютюнник

Руководитель компании IT For Prof

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

Также для обнаружения внешних XML-сущностей можно использовать мониторинг. Настроенные системы логирования и мониторинга могут помочь в быстром обнаружении необычных запросов или аномального поведения, что может быть признаком атаки XXE.

Предотвращение XXE-инъекций

Один из важнейших вопросов в части обеспечения информационной безопасности ИТ-инфраструктуры организации – это исключение уязвимостей XXE из кода и инфраструктуры. Самый простой и действенный способ – это отключение внешних сущностей. То есть отключение обработки внешних XML-сущностей в настройках XML-парсера.

Сергей Полунин

Руководитель группы защиты инфраструктурных ИТ компании «Газинформсервис»

Обычно предотвращение атаки XXE-инъекций заключается устранении ее причин – ошибок в коде или логики приложения. Однако дополнительно к этому полезно использовать межсетевые экраны уровня приложений, которые с помощью сигнатур или ИИ смогут обнаружить и заблокировать подобные атаки даже если ошибки в коде позволяют их осуществить.

Методы предотвращения XXE-инъекций:

  1. Валидация входных данных.
  2. Белый список. Если необходимо поддерживать обработку XML, то нужно создать «белый список» допустимых сущностей, которыми ограничиться парсер.
  3. Своевременное обновление и применение патчей. Постоянно следите за обновлениями вашего XML-парсера и других компонентов системы, которые могут быть уязвимыми к XXE-атакам.
  4. Ограничение прав доступа системе.
  5. Отключение DTDs и внешних схем, если они не требуются для работы приложения.
  6. WAF (Web Application Firewall). Инструмент необходимо настроить на фильтрацию входящих запросов и блокировку XXE-инъекций.

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

Константин Тютюнник

Руководитель компании IT For Prof

Применение нескольких методов предотвращения XXE вместе с регулярным мониторингом, политиками безопасности, регламентами и повышением уровня осведомленности сотрудников существенно повышает уровень защищенности от XXE-уязвимостей. Не запускайте приложение под привилегированным пользователем типа root и всегда храните 2-3 бекапа на разных хранилищах. Используйте систему управления версиями типа Git. Помните, безопасность — это не единоразовое событие, это процесс.

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

И конечно же, не стоит забывать про человеческий фактор – повышение ИБ-квалификации разработчиков и администраторов, а также обучение кибергигиене других сотрудников компании.

Local Privilege Escalation

LPE (Local Privilege Escalation) или локальное повышение привилегий, обычно не реализуется напрямую с помощью XXE. Local Privilege Escalation (LPE) и XML External Entities (XXE) — это две разные угрозы, но они могут иногда пересекаться в рамках одной атаки. Некоторые языки, так, например, PHP может позволить удалённое выполнение кода с помощью XXE. Для большинства языков, например, JAVA, он позволяет только читать файлы.

Евгений Грязнов

Руководитель продукта R-Vison Threat Deception Platform (R-Vision TDP)

Для локального повышения привилегий, нужно, например, найти на файловой системе логины/пароли или другие данные, позволяющие эти привилегии повысить. Самой частой ошибкой является хранение учетных данных, например, для СУБД, в открытом виде в конфигурации приложений, что позволяет через XXE получить эти данные и далее напрямую подключиться к СУБД. Или найти ключи для SSH подключения и использовать их.

Повышение привилегий может произойти только после того, как был получен минимальный доступ в систему, и злоумышленник пытается завладеть доступом на уровне администратора. Чаще всего основные векторы атаки – это ошибки конфигурирования, отсутствие обновлений безопасности и наличие уязвимого ПО. Существуют специальные инструменты, позволяющие киберпреступнику увидеть в системе ошибки.

Александр Зубриков

Генеральный директор ITGLOBAL.COM Security

Осуществление LPE при эксплуатации XXE может варьироваться в зависимости от контекста и конкретной конфигурации целевой системы. Однако, есть несколько общих путей для достижения LPE: Злоумышленник может получить возможность чтения локальных файлов, в которых могут быть найдены учетные данные администратора или других пользователей. Если XXE эксплуатируется на сервере, его дефектная обработка XML может привести к переполнению буфера или использованию других уязвимостей в системных вызовах. Это может позволить выполнить атаку удаленного выполнения кода (Remote Code Execution, RCE) и привести к привилегированному выполнению кода.

Для защиты от таких методов эскалации привилегий эксперты рекомендуют обновлять ПО и ОС, а также минимизировать использования учетных записей с административными привилегиями. Кроме того, нужно настроить права доступа, политику безопасности, и использовать SRP или AppLocker, а также проводить регулярные аудиты безопасности.

Выводы

В вопросе предотвращения XXE-инъекций важную роль играют вовремя обновленные и совершенные стандартные действия защиты, которыми часто пренебрегают или забывают вовремя привести в порядок. Так, своевременное обновление ПО и средств защиты, может защитить ИТ-инфраструктуру компании.

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

Для защиты от LPE-уязвимости важна минимизация прав каждого пользователя и службы, а также регулярное обновление ПО и ОС. Хоть XXE и LPE имеют разные векторы атак, правильная настройка и конфигурация могут заметно уменьшить риски в обеих категориях.

erid: 2SDnjdbjuoP erid: 2SDnjdbjuoP

Комментарии 0