Внешний объект XML (XXE) - уязвимости внешних параметров и внешних общих объектов
Чтобы предотвратить атаки XXE, я отключил перечисленные ниже функции в соответствии с рекомендациями для Java DocumentBuilderFactory - https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet.
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
dbf.setXIncludeAware(false);
dbf.setExpandEntityReferences(false);
Существует ли какая-либо уязвимость, если я не установлю внешние-общие-объекты и внешние-параметры-объекты в ложь? Поскольку это не позволит расширить эти внешние сущности, когда мы установим disallow-doctype-decl в true и XIncludeAware в false.
Безопасно ли удалить эти 2 строки из приведенного выше кода -
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
или их обязательно нужно хранить. Если это обязательно, каковы уязвимости, если мы не установили их в ложь?
Пожалуйста, предоставьте пример уязвимости, специфичной для external-genereal/Parameter-entity, даже если мы установили disallow-doctype в true, а XIncludeAware в false и ExpandEntityReferences в false.
1 ответ
Хранить их не обязательно. настройка disallow-doctype-decl
предотвратит XXE атаки, потому что любые встроенные DOCTYPE
объявления в недоверенном XML приведут к тому, что синтаксический анализатор сгенерирует исключение.
Тем не менее, я рекомендую сохранить код как есть, так как external-general-entities
а также external-parameter-entities
по умолчанию. Если эти две строки отсутствуют, и более поздний сопровождающий (наивно или по ошибке) удаляет первую строку, код снова становится уязвимым. Наличие других строк явно повышает вероятность того, что при дальнейшей модификации сопровождающий найдет эти функции и, мы надеемся, узнает, почему они есть.