Orbeon Forms: есть ли способ отключить обработку внешних сущностей, чтобы избежать XXE-атак?

После 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 способ реализовать какое-либо из этих решений (второе было бы более подходящим для моего конкретного случая). Кто-нибудь знает, как это сделать или сталкивался с похожей ситуацией и справился с ней по-другому?

Спасибо.


person d.lacher    schedule 21.06.2019    source источник
comment
Как упоминалось в моем ответе ниже, синтаксический анализ объектов XML в Orbeon Forms не представляет угрозы безопасности, начиная с версии 4.0, но, конечно, просто дайте мне знать, если я что-то пропустил или неправильно понял ваш вопрос. -Алекс   -  person avernet    schedule 25.06.2019


Ответы (1)


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

person avernet    schedule 24.06.2019
comment
Здравствуйте @avernet и спасибо за ваш ответ. Я вернусь к команде безопасности с этой информацией. Я считаю, что они на самом деле не пытались атаковать одну из наших тестовых систем, но я попрошу их сделать это и посмотрим, что произойдет. После этого я вернусь к этому сообщению, чтобы сообщить вам о результатах и ​​принять ваш ответ. Спасибо. - person d.lacher; 26.06.2019
comment
Звучит хорошо @d.lacher, и, конечно же, не стесняйтесь, дайте мне знать, если они все еще обеспокоены этим. -Алекс - person avernet; 27.06.2019
comment
@d.lacher Просто любопытно: слышали ли вы что-нибудь об этом от вашей службы безопасности, или они довольны тем, что делает Orbeon Forms? - person avernet; 03.07.2019
comment
Они протестировали и не смогли создать атаку на миллиард смехов. Поэтому Orbeon работал так, как вы описали, и я принимаю ваш ответ как решение этого вопроса. @авернет - person d.lacher; 05.07.2019
comment
@d.lacher Хорошо, отлично. И спасибо, что подтвердили, что это действительно работает так, как ожидалось! - person avernet; 05.07.2019