领先一步
VMware提供培训和认证,以加速您的进步。
了解更多本周,软件界发现并公布了影响多个实现的SAML漏洞。如果您使用Spring Security SAML的默认设置,则不会受到此漏洞的影响。
Spring Security SAML使用的底层实现是Shibboleth的OpenSAML Java库。OpenSAML Java实现并未列在包含该漏洞的库中(Shibboleth openSAML C++版本存在漏洞)。但是,如果ParserPool
进行了自定义,您可能会受到影响。
具体来说,如果应用程序显式地将BasicParserPool
或StaticBasicParserPool
设置为ignoreComments = false
,则容易受到攻击。例如,以下配置是不安全的
使用StaticBasicParserPool
的不安全Java配置
// NOT secure!!!
@Bean(initMethod = "initialize")
ParserPool parserPool() {
StaticBasicParserPool pool = new StaticBasicParserPool();
// DO NOT set ignoreComments = false opens up exploit
pool.setIgnoreComments(false);
return pool;
}
使用BasicParserPool
的不安全Java配置
// NOT secure!!!
@Bean
ParserPool parserPool() {
BasicParserPool pool = new BasicParserPool();
// DO NOT set ignoreComments = false opens up exploit
pool.setIgnoreComments(false);
return pool;
}
使用StaticBasicParserPool
的不安全XML配置
<!-- NOT secure!!! -->
<bean id="parserPool" init-method="initialize"
class="org.opensaml.xml.parse.StaticBasicParserPool">
<!-- DO NOT set ignoreComments = false opens up exploit -->
<property name="ignoreComments" value="false"/>
</bean>
使用BasicParserPool
的不安全XML配置
<!-- NOT secure!!! -->
<bean id="parserPool" class="org.opensaml.xml.parse.BasicParserPool">
<!-- DO NOT set ignoreComments = false opens up exploit -->
<property name="ignoreComments" value="false"/>
</bean>
以下配置是安全的
使用StaticBasicParserPool
的安全Java配置
@Bean(initMethod = "initialize")
ParserPool parserPool() {
StaticBasicParserPool pool = new StaticBasicParserPool();
// ignoreComments default is true (safe)
return pool;
}
使用BasicParserPool
的安全Java配置
@Bean(initMethod = "initialize")
ParserPool parserPool() {
BasicParserPool pool = new BasicParserPool();
// ignoreComments default is true (safe)
return pool;
}
使用StaticBasicParserPool
的安全XML配置
<bean id="parserPool" class="org.opensaml.xml.parse.StaticBasicParserPool">
<!-- ignoreComments default is true (safe) -->
</bean>
使用BasicParserPool
的安全XML配置
<bean id="parserPool" init-method="initialize"
class="org.opensaml.xml.parse.BasicParserPool">
<!-- ignoreComments default is true (safe) -->
</bean>
现在可能是回顾更多不安全配置的好时机。具体来说,以下ParserPool
属性是不安全的
将expandEntityReferences
设置为true
是不安全的。
将javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING
设置为false
是不安全的。
将[http://apache.org/xml/features/disallow-doctype-dec](http://apache.org/xml/features/disallow-doctype-dec)
设置为false
是不安全的。这是一个Xerces特有的特性,包括Oracle和OpenJDK JRE提供的内部JAXP实现等衍生产品。对于其他JAXP实现,请阅读您特定实现的文档,了解如何实现类似的配置。
将ignoreComments
设置为false
是不安全的(如本文所述)