安全研究人员警告称,一个最新的严重的Java错误,其本质与目前在全球范围内利用的臭名昭著的 Log4Shell 漏洞相同 。
CVE-2021-42392 尚未在国家漏洞数据库 (NVD) 中正式发布,但据软件企业内JFrog 称,它影响了流行的H2 Java SQL 数据库的控制台。
这家安全公司提醒,任何目前运行的暴露于其 LAN 或 WAN 的 H2 控制台的组织立即将数据库更新到 2.0.206 版本,否则攻击者可能会利用它进行未经身份验证的远程代码执行 (RCE)。
与 Log4Shell 一样,该错误与 JNDI(Java 命名和目录接口)“远程类加载”有关。JNDI 是一种为 Java 应用程序提供命名和目录功能的 API。这意味着如果攻击者可以将恶意 URL 获取到 JNDI 查找中,它就可以启用 RCE。
“简而言之,根本原因类似于 Log4Shell——H2 数据库框架中的多个代码路径将未经过滤的攻击者控制的 URL 传递给 javax.naming.Context.lookup 函数,该函数允许远程代码库加载(AKA Java 代码注入 AKA远程代码执行),” JFrog 解释道。
“具体来说,org.h2.util.JdbcUtils.getConnection 方法以驱动类名和数据库 URL 作为参数。如果驱动程序的类可分配给 javax.naming.Context 类,则该方法会从中实例化一个对象并调用其查找方法。”
提供诸如“javax.naming.InitialContext”之类的驱动程序类和像 ldap://attacker.com/Exploit 这样简单的 URL 将导致远程代码执行。
JFrog 表示,该漏洞特别危险,因为 H2 数据库包特别受欢迎。该公司声称,它是前 50 个最受欢迎的 Maven 软件包之一,拥有近 7000 个工件依赖项。
但是,有一些原因导致利用不会像 Log4Shell 那样广泛。一方面,它具有“直接影响范围”,这意味着易受攻击的服务器应该更容易找到。其次,在大多数 H2 发行版中,控制台只监听 localhost 连接,这意味着默认设置是不可利用的。
“许多供应商可能正在运行 H2 数据库,但没有运行 H2 控制台,虽然除了控制台之外还有其他向量可以利用这个问题,但这些其他向量是依赖于上下文的,不太可能暴露给远程攻击者。”JFrog 补充道。