Уязвимость XMLStreamReader/InputStream xxe отображается в отчете Checkmarx

Эти строки кода вызывают появление уязвимости xxe в отчете Checkmarx:

InputStream is = connection.getInputStream();

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(is);

В проблеме говорится, что:

«Приложение отправляет запрос на удаленный сервер для некоторого ресурса, используя createXMLStreamReader. Однако злоумышленник может контролировать цель запроса, отправив URL-адрес или другие данные в getInputStream».

Любые идеи, как решить эту проблему?


person Artanis    schedule 26.12.2018    source источник
comment
Как называется найденная уязвимость? Кроме того, можете ли вы поделиться всем кодом, который создает вектор атаки, отмеченный Checkmarx?   -  person yaloner    schedule 27.12.2018
comment
похоже, что это вызывает 2 уязвимости, обе с тем же описанием, которое я дал, их имена - неправильное ограничение xxe ref и еще одно SSRF. Оба они имеют целевой объект creatXMLStreamReader.   -  person Artanis    schedule 27.12.2018
comment
stackoverflow.com/questions/12977299/ выглядит как это может быть ответ, все еще нужно проверить   -  person Artanis    schedule 28.12.2018


Ответы (1)


Нашел ответ, который сработал для меня здесь; добавьте эти свойства в XMLInputFactory:

XMLInputFactory xif = XMLInputFactory.newFactory();

//prevents using external resources when parsing xml
xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);

//prevents using external document type definition when parsing xml
xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
person Artanis    schedule 28.12.2018