надеется установить для функции disallow-doctype-decl значение true, чтобы остановить XXE-атаку - PullRequest
0 голосов
/ 17 мая 2018

Мы используем spring ws в качестве фильтра для выполнения WS-Security на основе токена, отметки времени и подписи на входящем запросе мыла.

Мы хотим предотвратить атаку XXE, используя тот же фильтр и задаваясь вопросом,возможно.

Мы используем 'org.springframework.ws.soap.axiom.AxiomSoapMessageFactory' в качестве messageFactory, и у него есть два сеттера setSupportingExternalEntities и setReplacingEntityReferences, которые по умолчанию имеют значение false.

]>

Теперь, если сущность удалена с помощью doctype в запросе мыла, и она указана с помощью & xxe;тогда Spring Framework возвращает ошибку

org.apache.axiom.soap.SOAPProcessingException: A SOAP message cannot contain entity references because it must not have a DTD
2018-05-18T13:14:33,272 DEBUG [org.springframework.ws.soap.server.SoapMessageDispatcher] Endpoint invocation resulted in exception - responding with Fault
org.apache.axiom.soap.SOAPProcessingException: A SOAP message cannot contain entity references because it must not have a DTD
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createEntityReference(StAXSOAPModelBuilder.java:359) ~[axiom-api-1.2.15.jar:1.2.15]
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:279) ~[axiom-api-1.2.15.jar:1.2.15]

Но тогда эта ошибка не приходит, если мы заменим & name;с &; xxe;или & xxe;Spring ws Framework позволил этому пройти.

Я не хочу, чтобы он проходил какую-либо дальнейшую обработку, поэтому, если возможно, мы можем как-то не допустить само объявление doctype в запросе мыла.

спасибо за любую помощь и указатели для решения этой проблемы

1 Ответ

0 голосов
/ 09 июня 2018

Добавление того, как я понял, решено.Не удалось найти способ справиться с этим в фильтре spring-ws, и Spring не вел себя неправильно, поскольку не пытался разрешить переданный объект.

Позже в нашем проекте мы используем стандартную библиотеку java DOM parser lib и добавляем

factory.setFeature (DISALLOW_DOCTYPE_DECL_FEATURE, true);

нам удалосьостановить объявление DTD, которое решило проблему XXE.

...