Orbeon Forms: есть ли способ отключить обработку внешних объектов, чтобы избежать XXE-атак? - PullRequest
0 голосов
/ 21 июня 2019

После PenTest группа безопасности обнаружила возможность XXE-атаки при отправке формы Orbeon через запрос HTTPS из нашего веб-приложения.

Они смогли перехватить следующий XML:

<!DOCTYPE event-request [<!ENTITY nbsp "&#160;">]>
<xxf:event-request xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
    <xxf:uuid>8a89ecf50184eb16f5671301691e0d9457568667</xxf:uuid>
    <xxf:sequence>16</xxf:sequence>
    <xxf:action>
        <xxf:event name="xxforms-blur" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
        <xxf:event name="xforms-focus" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
        <xxf:event name="xxforms-value" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control">Tester&lt;</xxf:event>
        <xxf:event name="xxforms-blur" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
    </xxf:action>
</xxf:event-request>

И внедрить новый внешний объект, <!ENTITY test "My-OwnEntity">, манипулируя запросом.Это был XML, отправленный на сервер:

<!DOCTYPE event-request [<!ENTITY nbsp "&#160;"><!ENTITY test "My-OwnEntity">]>
<xxf:event-request xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
    <xxf:uuid>8a89ecf50184eb16f5671301691e0d9457568667</xxf:uuid>
    <xxf:sequence>16</xxf:sequence>
    <xxf:action>
        <xxf:event name="xxforms-blur" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
        <xxf:event name="xforms-focus" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
        <xxf:event name="xxforms-value" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control">My-OwnEntity</xxf:event>
        <xxf:event name="xxforms-blur" source-control-id="pd-section-per-sonalData-control≡xf-474≡pd-birthName-control"/>
    </xxf:action>
</xxf:event-request>

Запрос обрабатывается правильно, и значение сущности появляется в ответе, возвращаемом сервером.

Согласно им, дваПредлагаются подходы / решения: 1. Создать белый список разрешенных объектов;или 2. Не допускать обработку этих внешних объектов во всех случаях.

Но я не смог найти в документации Orbeon способ реализации любого из этих решений (второе было бы более подходящим для моего конкретного случая).Кто-нибудь знает, как это сделать, или сталкивался с подобной ситуацией и обращался с ней по-другому?

Спасибо.

1 Ответ

0 голосов
/ 25 июня 2019

Обработка сущностей при синтаксическом анализе XML может быть проблемой безопасности, например, допускает атаку миллиардов смеха атаку типа "отказ в обслуживании", но это не обязательно так, если все сделано правильно. Orbeon Forms устанавливает Xerces, используемый для синтаксического анализа XML, с SecurityManager ( # 686 ) начиная с версии 4.0, и, насколько мне известно, в этом контексте синтаксический анализ сущностей является безопасным.

...