Orbeon Forms:有没有办法禁用外部实体的处理以避免XXE攻击



在PenTest之后,安全团队发现,当我们的Web应用程序通过HTTPS请求提交Orbeon表单时,可能会受到XXE攻击。

他们能够截获以下 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 文档中找不到实现任何这些解决方案的方法(第二个更适合我的具体案例(。有谁知道该怎么做,或者经历过类似的情况并以不同的方式处理?

谢谢。

解析 XML 时处理实体可能是一个安全问题,例如允许十亿次 LAUGHS 攻击拒绝服务攻击,但如果操作得当,它不一定是一个。Orbeon Forms 自 4.0 版以来设置了用于 XML 解析的 Xerces,SecurityManager (#686(,据我所知,在这种情况下,实体解析是安全的。

最新更新