从 spring-security-saml2-core 中排除 slf4j-api,我们得到运行时异常 NoClassDefFound: org/slf4j/LoggerFactory

Excluding slf4j-api from spring-security-saml2-core, we are getting a runtime exception NoClassDefFound: org/slf4j/LoggerFactory

在 log4j 零日漏洞之后,我们开始寻找是否有更多使用 slf4J 或更低版本 log4j 的工件。

检查 mvn 依赖关系树,我们发现 spring-security-saml2-core 正在使用 slf4j,我们试图将其从工件中排除。但是,我们收到以下运行时异常: -java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 在 org.opensaml.DefaultBootstrap.getLogger(DefaultBootstrap.java:246) 在 org.opensaml.DefaultBootstrap.initializeXMLSecurity(DefaultBootstrap.java:189) 在

如果您指的是 CVE-2021-44228 漏洞(又名 Log4Shell),则 Slf4J 不是易受攻击的库,因此您不必排除它。对于 2 到 2.15.0 之前的版本,只有 Log4j-core 受此特定漏洞的影响 参见 https://nvd.nist.gov/vuln/detail/CVE-2021-44228

正如@eray-tufay 指出的那样,目前还有其他已知漏洞(许多可能仍在等待被发现)。他给出的例子是https://cve.report/CVE-2021-4104:

Note this issue only affects Log4j 1.2 when specifically configured to use JMSAppender, which is not the default

因此,要防范当前和未来的漏洞: