Злоумышленник может использовать уязвимый XML процессор, если он может загружать XML или включать опасный контент в документ XML, используя уязвимый код, зависимости или интеграции. Инструменты SAST (https://www.owasp.org/index.php/SourceCodeAnalysisTools) могут обнаружить эту проблему путем проверки зависимостей и конфигурации. Инструменты DAST (https://www.owasp.org/index.php/Category:VulnerabilityScanning_Tools) требуют дополнительных действий от пользователя для обнаружения и использования этой проблемы. Все тестировщики должны быть обучены тестированию на угрозы этого типа. Недостатки могут быть использованы для извлечения данных, выполнения удаленного запроса с сервера, сканирования внутренних систем, выполнения атак типа «отказ в обслуживании», а также выполнения других атак. Влияние на бизнес зависит от потребностей защиты всех затронутых приложений и данных.
Является ли приложение уязвимым?
Приложения и, в частности, веб-службы на основе XML или последующие интеграции могут быть уязвимы для атак, если: * Приложение принимает XML напрямую или загружает XML, особенно из ненадежных источников, или вставляет ненадежные данные в документы XML, которые затем анализируются процессором XML.
- Для любого из процессоров XML в приложении или веб-службах на основе SOAP включены определения типов документов (DTD) . Поскольку точный механизм отключения обработки DTD варьируется в зависимости от процессора, рекомендуется обратиться к справочному материалу, например к шпаргалке OWASP «Предотвращение XXE» (https://www.owasp.org/index.php/XMLExternalEntity(XXE)PreventionCheatSheet).
- Если приложение использует SAML для обработки идентификаторов в целях федеративной безопасности или единого входа (SSO). SAML использует XML для подтверждения личности и может быть уязвимым.
- Если приложение использует SOAP до версии 1.2, оно может быть подвержено атакам XXE, если сущности XML передаются в инфраструктуру SOAP.
- Вероятность уязвимости к атакам XXE означает, что приложение уязвимо для атак отказа в обслуживании, включая атаку Billion Laughs (https://en.wikipedia.org/wiki/Billionlaughsattack).
Как предотвратить
Обучение разработчиков имеет важное значение для выявления и смягчения последствий XXE. Кроме того, предотвращение XXE обязует:
- По возможности используйте менее сложные форматы данных, такие как JSON, и избегайте сериализации конфиденциальных данных.
- Исправьте или обновите все процессоры и библиотеки XML, используемые приложением или в базовой операционной системе. Используйте проверки зависимостей. Обновите SOAP до SOAP 1.2 или выше.
- Отключите внешнюю сущность XML и обработку DTD во всех синтаксических анализаторах XML в приложении в соответствии с таблицей OWASP «Предотвращение XXE» .
- Реализуйте положительную («белый список») проверку, фильтрацию или очистку входных данных на стороне сервера, чтобы предотвратить враждебные данные в документах, заголовках или узлах XML.
- Убедитесь, что функция загрузки файлов XML или XSL проверяет входящий XML с использованием проверки XSD или аналогичной.
- Инструменты SAST могут помочь обнаружить XXE в исходном коде, хотя ручная проверка кода — лучшая альтернатива для больших и сложных приложений со многими интеграциями.
- Если эти элементы управления невозможны, рассмотрите возможность использования виртуальных исправлений, шлюзов безопасности API или брандмауэров веб-приложений (WAF) для обнаружения, мониторинга и блокирования атак XXE
Полезные ссылки:
- https://www.owasp.org/index.php/Category:OWASPApplicationSecurityVerificationStandard_Project#tab.3DHome
- https://www.owasp.org/index.php/TestingforXMLInjection(OTG-INPVAL-008)
- https://www.owasp.org/index.php/XMLExternalEntity(XXE)Processing
- https://www.owasp.org/index.php/XMLExternalEntity(XXE)PreventionCheatSheet
- https://www.owasp.org/index.php/XMLSecurityCheat_Sheet