Orbeon Forms:有没有办法禁用外部实体的处理以避免 XXE 攻击?
Orbeon Forms: is there a way to disable the processing of external entities to avoid XXE attacks?
经过渗透测试后,安全团队发现从我们的 Web 应用程序通过 HTTPS 请求提交 Orbeon 表单时可能会受到 XXE 攻击。
他们能够拦截以下 XML:
<!DOCTYPE event-request [<!ENTITY nbsp " ">]>
<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<</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 " "><!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>
然后请求被正确处理,实体的值出现在服务器返回的响应中。
根据他们的说法,建议使用两个 approaches/solutions:
1.创建允许实体的白名单;要么
2. 在所有情况下防止处理这些外部实体。
但我无法在 Orbeon 文档中找到实现这些解决方案中的任何一个的方法(第二种方法更适合我的具体案例)。有谁知道该怎么做或遇到过类似情况并以不同方式处理?
谢谢。
在解析时处理实体 XML 可能 是一个安全问题,例如允许 billion laughs attack denial-of-service attack, but it is not necessarily one if done properly. Orbeon Forms sets up Xerces, used for XML parsing, with a SecurityManager
(#686) 自版本 4.0 以来,在该上下文中实体解析据我所知是安全的。
经过渗透测试后,安全团队发现从我们的 Web 应用程序通过 HTTPS 请求提交 Orbeon 表单时可能会受到 XXE 攻击。
他们能够拦截以下 XML:
<!DOCTYPE event-request [<!ENTITY nbsp " ">]>
<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<</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 " "><!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>
然后请求被正确处理,实体的值出现在服务器返回的响应中。
根据他们的说法,建议使用两个 approaches/solutions: 1.创建允许实体的白名单;要么 2. 在所有情况下防止处理这些外部实体。
但我无法在 Orbeon 文档中找到实现这些解决方案中的任何一个的方法(第二种方法更适合我的具体案例)。有谁知道该怎么做或遇到过类似情况并以不同方式处理?
谢谢。
在解析时处理实体 XML 可能 是一个安全问题,例如允许 billion laughs attack denial-of-service attack, but it is not necessarily one if done properly. Orbeon Forms sets up Xerces, used for XML parsing, with a SecurityManager
(#686) 自版本 4.0 以来,在该上下文中实体解析据我所知是安全的。