Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V5336. OWASP. Potential XEE...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V5336. OWASP. Potential XEE vulnerability. Insecure XML parser is used to process potentially tainted data.

03 Окт 2025

Анализатор обнаружил использование небезопасно сконфигурированного XML-парсера, который обрабатывает данные без ограничения на использование XML-сущностей. Это может сделать приложение уязвимым к XEE-атаке (альтернативные названия: billion laughs-атака или атака с помощью XML-бомб). Подробнее суть данной атаки описана здесь.

Уязвимости такого типа относятся к следующим категориям рисков OWASP Top 10:

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

Рассмотрим простой пример с небезопасной настройкой в DocumentBuilderFactory:

Document readXML(String xml) throws .... {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, false);
    return factory.newDocumentBuilder().parse(xml);
}

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

  • на глубину рекурсии при обработке DTD;
  • на количество сущностей.

Для того чтобы обезопасить приложение от XEE-атаки, можно запретить обработку внешних сущностей и явно включить безопасный режим парсинга XML:

Document readXML(String xml) throws .... {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
    String feature = "http://xml.org/sax/features/external-general-entities"; 
    factory.setFeature(feature, false);
    return factory.newDocumentBuilder().parse(xml);
}

Обратите внимание, что существуют самые разнообразные парсеры, предназначенные для обработки XML-документов, которые могут быть уязвимы для XEE или нет, в зависимости от их настроек и версий. Для некоторых базовых типов способы защиты от XEE описаны здесь.

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки непроверенного использования чувствительных данных (ввода пользователя, файлов, сети и пр.).

Данная диагностика классифицируется как: