Автор: Luca Biondi, What Is an XXE Attack and Why Should SQL Server DBAs Care?
XML-уязвимости больше не являются проблемой только веб-разработчиков. XXE-атаки могут напрямую влиять на среду SQL Server, пакеты SSIS, отчёты SSRS и рабочие процессы обработки XML. В этой статье я покажу вам, что именно представляет собой XXE-атака (XML External Entity), почему она всё ещё актуальна сегодня и как она может напрямую повлиять на SQL Server через SSIS, обработку XML и SSRS.
Если ваша инфраструктура SQL Server обрабатывает XML где-либо в конвейере, это не теоретический шум о безопасности. Это реальная поверхность атаки.
В двух словах
- XXE — это уязвимость в парсерах XML, обрабатывающих недоверенные внешние сущности.
- SQL Server может быть косвенно подвержен атаке через SSIS, SSRS, тип данных XML и внешние XML-рабочие процессы.
- Злоумышленники могут читать конфиденциальные файлы, инициировать SSRF-атаки или истощать ЦП/ОЗУ с помощью DoS-атаки «Миллиард смайликов».
- Основная защита — отключение DTD и разрешения внешних сущностей в парсерах XML.
Введение
Многие администраторы баз данных думают, что XML-уязвимости принадлежат только веб-приложениям. Неправильно.
Экосистемы SQL Server обрабатывают XML повсеместно:
- Пакеты SSIS
- Определения отчётов SSRS
- Тип данных XML в T-SQL
- SOAP-интеграции
- Разбор WSDL
- Устаревшее корпоративное промежуточное ПО
А там, где существует XML, может существовать и риск XXE.
Понимание этой атаки критически важно, потому что злоумышленники теперь нацелены не только на базы данных напрямую. Они нацелены на инфраструктуру вокруг SQL Server.
Что такое уязвимость XXE?
XXE-уязвимость возникает, когда парсер XML настроен на автоматическую обработку внешних сущностей, поступающих из недоверенного XML-входа.
Стандарты XML допускают:
- DTD (Document Type Definition — определение типа документа)
- Внешние сущности (external entities)
Эти сущности могут ссылаться на:
- Локальные файлы
- Удалённые URL
- Внутренние сервисы
- Точки метаданных облака
Если парсер слепо доверяет XML-входу, злоумышленники могут заставить сервер выполнять непредусмотренные операции.
Что такое XXE-атака?
XXE-атака происходит, когда вредоносная XML-нагрузка отправляется уязвимому приложению. Парсер разрешает внешнюю сущность и автоматически выполняет инструкции злоумышленника.
Пример: извлечение конфиденциального файла
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<credentials>
<username>&xxe;</username>
<password>password123</password>
</credentials>
Когда парсер XML обрабатывает &xxe;, он заменяет эту сущность содержимым целевого файла. Это означает, что файлы паролей Linux могут быть раскрыты, конфигурационные файлы Windows могут быть скомпрометированы, строки подключения могут стать видимыми, а секреты и учётные данные — украдены.
Распространённые сценарии XXE-атак
- Извлечение конфиденциальных файлов (Exfiltration of Sensitive Files): Злоумышленники читают локальные файлы напрямую из файловой системы сервера. Типичные цели:
web.config,appsettings.json, строки подключения,/etc/passwd, конфигурационные файлы SSRS. - SSRF (Server Side Request Forgery — подделка серверных запросов): Уязвимый сервер вынужден выполнять внутренние HTTP-запросы. Злоумышленники используют это для доступа к внутренним сетевым сервисам, обхода межсетевых экранов, доступа к точкам метаданных облака и перемещения внутри корпоративных сетей.
- Атака «Миллиард смайликов» (Billion Laughs Attack — DoS): Вложенные XML-сущности рекурсивно расширяются до тех пор, пока память и ЦП не исчерпываются. Эта атака может потреблять огромный объём ОЗУ, мгновенно насыщать ЦП, вызывать сбой прикладных сервисов и замораживать парсеры XML.
Почему это важно для SQL Server?
Здесь многие администраторы баз данных недооценивают риск. SQL Server сам по себе постоянно обрабатывает XML. А компоненты Microsoft, окружающие SQL Server, активно полагаются на парсеры XML внутри себя.
SSIS и XXE: опасная комбинация
Одним из наиболее важных недавних примеров является исправление в SQL Server 2025 CU5, связанное с: «Исправляет XXE-уязвимость в Web Service Task». Задача «Веб-служба» SSIS загружает и разбирает WSDL-файлы. Скомпрометированный WSDL может содержать вредоносные внешние сущности. Если парсер SSIS разрешает их, локальные файлы могут быть прочитаны, внутренние HTTP-запросы — инициированы, а инфраструктура SQL Server становится точкой опоры для атаки.
Диагностика: Если ваши пакеты SSIS используют SOAP-сервисы, загружают WSDL динамически, обрабатывают XML от внешних партнёров или используют устаревшие интеграции, вам абсолютно необходимо пересмотреть безопасность парсинга XML.
Тип данных XML в SQL Server и XXE
SQL Server изначально поддерживает XML через тип данных XML, методы query(), value(), nodes() и OPENXML. Современные сборки SQL Server внутренне защищены от многих злоупотреблений парсером XML. Однако окружающие приложения, которые передают XML в SQL Server, могут быть небезопасны.
SSRS (.rdl-файлы) и XXE
Определения отчётов SSRS (.rdl-файлы) являются XML-документами. Исторически манипуляции с RDL позволяли злоумышленникам читать внутренние конфигурационные файлы, получать доступ к зашифрованным метаданным подключений, извлекать конфиденциальную информацию и злоупотреблять рабочими процессами обработки отчётов.
Важное замечание: Администратор баз данных может полностью обезопасить сам SQL Server, в то время как стек отчётности остаётся уязвимым через слои обработки XML.
Как защититься от XXE
- Полностью отключить обработку DTD (Disable DTD processing completely)
- Отключить разрешение внешних сущностей (Disable External Entities resolution)
- Обновить библиотеки парсеров XML
- Регулярно устанавливать обновления для SQL Server и SSIS
- Никогда не доверять внешнему XML-входу
- Пересмотреть старые SOAP/WSDL-интеграции
- Ограничить исходящий сетевой трафик от инфраструктуры SQL Server
Настоящая защита — не фильтрация ключевых слов XML. Настоящая защита — это безопасная конфигурация парсеров.
Моя работающая стратегия
В реальных корпоративных средах наибольший риск XXE обычно связан не с самим движком SQL Server. Реальная опасность — это устаревшая инфраструктура вокруг SQL Server: старые пакеты SSIS, SOAP-интеграции, сторонние ETL-инструменты, пользовательские конвейеры импорта XML, неподдерживаемые системы отчётности.
Мой подход всегда заключается в следующем:
- Агрессивно устанавливать обновления (Patch aggressively)
- Отключать ненужные функции XML
- Проверять каждую внешнюю XML-зависимость
- Анализировать возможности исходящего сетевого трафика
- Относиться к XML как к исполняемому входу
Потому что в современных атаках компоненты инфраструктуры часто являются самым слабым звеном.
Вывод
XXE — это не «просто веб-уязвимость». Она становится проблемой SQL Server в тот момент, когда:
- SSIS анализирует WSDL/XML
- SSRS обрабатывает RDL-файлы
- Приложения отправляют XML в SQL Server
- ETL-процессы используют внешние XML-каналы
Современные злоумышленники нацелены на целые экосистемы, а не только на базы данных. Это означает, что администраторы баз данных также должны понимать безопасность инфраструктуры.
Полезные источники
- OWASP — XML External Entity (XXE)
- Microsoft — SSIS Web Service Task
- Microsoft — XML Data Type in SQL Server
- Microsoft — Insecure DTD Processing
- OWASP XXE Prevention Cheat Sheet
- Json Vs Xml Wrong Choice Can Influence
- Sql Server 2025 Cu3 Critical Fixes You
- Sql Server 2025 Cu4 Cumulative Update 4

Комментариев нет:
Отправить комментарий