Информационная безопасность — один из ключевых аспектов нашей работы. Мы видим, что с каждым годом методы кибератак становятся всё более изощренными. Злоумышленники совершенствуют способы обхода систем безопасности. Однако в большинстве случаев основой для таких атак служит хорошо изученный и знакомый инструментарий.
К такой хакерской классике жанра можно отнести XXE-инъекции. Метод старый, но по-прежнему действенный. OWASP (Open Worldwide Application Security Project) — открытый проект по обеспечению безопасности веб-приложений — регулярно включает XXE в топ-10 главных угроз для компаний.
Под прицелом даже такие гиганты, как IBM. Несколько лет назад в их приложении WebSphere была обнаружена уязвимость типа XXE (CVE-2021-20454), которая позволяла злоумышленникам эксплуатировать ресурсы системы и получать доступ к конфиденциальным пользовательским данным.
Самое простое определение XXE — это уязвимости в веб-безопасности, которая позволяет вмешиваться в процесс обработки XML-данных приложением.
Успешная атака с использованием XXE-инъекций может открыть для нарушителя массу неприятных возможностей:
- Доступ к конфиденциальным данным.
- Возможность проведения SSRF-атак, позволяющих отправлять запросы от имени сервера.
- Сканирование внутренней сети компании.
- Чтение локальных файлов на сервере.
- Осуществление DoS-атак.
Теперь разберемся с тем, как идентифицировать эту угрозу.
Поиск XXE в системе
XXE-инъекции могут быть сложными для обнаружения, особенно если система обрабатывает XML-документы в автоматическом режиме и не ведет детального журнала событий. К тому же вредоносы любят маскировать свои действия под легитимные запросы.
Способов обнаружения атак много. Все они имеют свои преимущества и недостатки. Перечислю несколько базовых приемов:
- Анализ журналов и мониторинг трафика: необычные запросы к системным файлам (например, попытки обращения к файлам /etc/passwd в Unix-системах) или внешним ресурсам могут быть признаком XXE-атаки.
- Тестирование на уязвимости: использование инструментов для автоматизированного тестирования безопасности, таких как Burp Suite, OWASP ZAP или другие сканеры уязвимостей, позволяет проверять XML-запросы на наличие уязвимостей XXE.
- SAST и DAST: статический анализ исходного кода (SAST) и динамическое тестирование приложений (DAST) могут выявить уязвимости до их эксплуатации. Эти методы особенно полезны на этапе разработки.
- Валидация входящих XML-документов: прямым признаком риска является отсутствие валидации входящих XML-документов. Если система позволяет обрабатывать любые внешние сущности, это уже создает предпосылки для успешной XXE-атаки.
- WAF — Web Application Firewall, работает на уровне фильтрации трафика веб-приложений, отслеживая подозрительные XML-запросы и блокируя вредоносные данные до их обработки сервером. Однако WAF эффективен только против известных шаблонов атак и может быть обойден при использовании сложных или неизвестных техник, поэтому рекомендуется использовать его в сочетании с другими мерами защиты.
В одном из наших проектов мы успешно применили такой комбинированный подход, связав WAF и систему мониторинга. Как только WAF зафиксировал подозрительный XML-запрос, система мониторинга немедленно отправила уведомление администратору, что позволило оперативно отреагировать на потенциальную угрозу.
Защита от XXE
Как для обнаружения, так и для предотвращения XXE-инъекций лучше всего использовать комбинацию из нескольких уровней защиты:
- Отключение поддержки внешних сущностей
Если приложение не требует использования DTD и внешних сущностей, лучше вообще отключить их в настройках XML-парсера. Это минимизирует возможность доступа к файловой системе сервера или внутренним сетям через XML-запросы.
- Валидация входных данных
Всё, что поступает извне, должно быть проверено. Проверяйте XML-документы перед их обработкой на наличие потенциально опасных элементов или сущностей.
- Ограничение прав доступа
Не допускайте запуск приложений с правами суперпользователя, такими как root. Придерживайтесь принципа минимальных привилегий для любых приложений и служб.
- WAF
Уже упомянутый WAF отлично подходит для превентивной защиты от XXE-инъекций.
- Использование статического и динамического тестирования
Статический (SAST) и динамический (DAST) анализ помогут выявить уязвимости и оценить потенциальные риски до того, как они станут реальностью.
Заключение
Помимо перечисленных инструментов для мониторинга XXE-инъекций, всегда стоит помнить и о стандартных рекомендациях по безопасности.
К ним относится в первую очередь подготовка специалистов. Убедитесь, что команда знакома с принципами безопасной обработки XML и правилами конфигурирования парсеров.
Резервные копии данных желательно иметь в количестве двух-трех штук и хранить их на разных платформах для минимизации рисков потери информации.
Для контроля изменений и предотвращения случайных уязвимостей используйте системы управления версиями, такие как Git. Это обеспечит дополнительный уровень безопасности на всех этапах работы.
И конечно, важно помнить, что информационная безопасность требует постоянного участия и контроля. Это не та сфера, где можно за один раз сделать всё под ключ и забыть на долгие годы. Как показывает пример XXE-инъекций, даже стандартные угрозы могут преподнести неприятный сюрприз, если их вовремя не обнаружить.