Эти настройки запрещают использование внешних сущностей и DTD (Document Type Definition), что практически полностью исключает возможность проведения XXE-атаки.
Используйте для работы с XML проверенные безопасные библиотекиВместо низкоуровневых парсеров выбирайте библиотеки, которые изначально настроены безопасным образом.
Например в Python это библиотека defusedxml, в JavaScript — пакеты для работы с XML, которые не поддерживают обработку DTD по умолчанию. Также можно использовать актуальные версии библиотек javax.xml.parsers или XmlReader, если вы используете .NET.
Всегда проверяйте документацию библиотеки или парсера, которую вы используете — возможно, они уже имеют встроенные методы защиты от XXE.
Проверяйте и санитизируйте входные данныеПеред тем как обработать XML, убедитесь, что данные соответствуют ожидаемому формату — это можно сделать с помощью схемы валидации, например, XSD.
Фильтруйте входные данные, проверяйте структуру документа, запрещая подозрительные конструкции (например, <!DOCTYPE> или <!ENTITY>).
Также ограничьте максимальный размер входного файла, чтобы предотвратить атаки типа Billion Laughs.
Минимизируйте доступ к файловой системе и сетиДаже если по какой-то причине внешняя сущность обработается, злоумышленник не получит доступ к важной информации при правильной настройке ограничений.
Вот как это сделать:
- Запустите ваш XML-парсер в изолированной среде, например, в песочнице или контейнере, где у него нет прав на чтение важных системных файлов или доступа к сети.
- Используйте механизм ограничения прав, например, SELinux или AppArmor для процессов, работающих с XML.
- Убедитесь, что серверы, в которых расположен ваш основной код, не имеют ненужного доступа к интернету или внешним ресурсам.
Обновляйте библиотеки и программное обеспечениеXXE-атаки часто работают на устаревших парсерах XML. Регулярно обновляйте библиотеки и фреймворки, чтобы снизить вероятность атаки.
Внедрите процесс регулярного мониторинга обновлений для всех используемых библиотек и зависимостей или используйте инструменты автоматического сканирования зависимостей, такие как Snyk, Dependabot или OWASP Dependency-Check.
Используйте межсетевые экраны и правила WAFЕсли вы хотите усилить защиту, установите межсетевой экран веб-приложений WAF, который будет фильтровать подозрительные запросы. Большинство современных решений, например, ModSecurity с базовыми правилами OWASP CRS, уже умеют обнаруживать и блокировать попытки XXE-атак.
Предотвратить XXE-уязвимость можно только при комплексном подходе к безопасности. Отключите внешние сущности, используйте проверенные версии библиотек и строго проверяйте данные. Эти меры помогут свести риск эксплуатации уязвимости к минимуму и защитить ваше приложение от возможных атак.