[java] Запретить атаку XXE с JAXB


0 Answers

Question

Недавно у нас был аудит безопасности нашего кода, и одна из проблем заключается в том, что наше приложение подвержено атаке Xml EXternal Entity (XXE).

В принципе, приложение представляет собой калькулятор, который получает входные данные в виде XML через веб-службу.

Вот пример такой атаки XXE для нашего приложения:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <foo:calculateStuff>
         <!--Optional:-->
         <xmlInput><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE currency [  
   <!ENTITY include SYSTEM "file:///d:/" >]>
<calcinput>...</calcinput>
]]></xmlInput>
      </foo:calculateStuff>
   </soapenv:Body>
</soapenv:Envelope>

Как вы можете видеть, мы можем ссылаться на объект, который указывает на внешний файл ( "file:///d:/" ).

Что касается самого входа XML (часть <calcinput>...</calcinput> ), он не привязан к JAXB (v2.1). Часть веб-сервиса основана на jaxws-rt (2.1).

Что мне нужно сделать для защиты моего веб-сервиса?

Благодарю.






Related