1.6.26

Что такое XXE-атака и почему администраторам SQL Server следует об этом беспокоиться?


Автор: 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-каналы

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

Полезные источники



Комментариев нет:

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