Резюме

Процессор XML, используемый в FGAdminController.java: 58, не предотвращает и не ограничивает разрешение внешних объектов. Это может подвергнуть синтаксический анализатор атаке внешних объектов XML. Использование процессоров XML, которые не предотвращают и не ограничивают разрешение внешних объектов, может подвергнуть приложение атакам внешних объектов XML.

Объяснение

Атаки на внешние объекты XML выигрывают от функции XML для динамического создания документов во время обработки. Сущность XML позволяет динамически включать данные из заданного ресурса. Внешние сущности позволяют XML-документу включать данные из внешнего URI. Если не настроено иное, внешние объекты заставляют синтаксический анализатор XML обращаться к ресурсу, указанному в URI, например, к файлу на локальном компьютере или в удаленной системе. Такое поведение подвергает приложение атакам XML External Entity (XXE), которые могут использоваться для выполнения отказа в обслуживании локальной системы, получения несанкционированного доступа к файлам на локальном компьютере, сканирования удаленных компьютеров и выполнения отказа в обслуживании удаленных систем. .

В следующем XML-документе показан пример атаки XXE.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe;</foo>

В этом примере может произойти сбой сервера (в системе UNIX), если синтаксический анализатор XML попытается заменить объект содержимым файла / dev / random.

Рекомендация

Чтобы избежать инъекций XXE, XML-демаршаллер или структура REST должны быть настроены безопасно, чтобы не допускать внешних сущностей как части входящего XML-документа.

Для реализации JAX-RS Jersey добавьте следующую конфигурацию в файл web.xml (примечание: реализация Jersey по умолчанию безопасна):

<web-app>
...
<init-param>
<param-name>com.sun.jersey.config.feature.DisableXmlSecurity</param-name>
<param-value>false</param-value>
</init-param>
...
</web-app>

Для реализации JAX-RS RESTEasy добавьте следующую конфигурацию в файл web.xml (примечание: реализация RESTEasy по умолчанию небезопасна):

<web-app>
...
<context-param>
<param-name>resteasy.document.expand.entity.references</param-name>
<param-value>false</param-value>
</context-param>
...
</web-app>

Советы

  1. Реализация JAX-RS Jersey по умолчанию настроена безопасно, поэтому нет необходимости настраивать ее явно. В этом случае не обращайте внимания на эту проблему.