Java 库 Log4j 中臭名昭著的漏洞的紧急补丁并非万无一失。 Apache 软件基金会正在发布一个新版本,以一劳永逸地修复该漏洞。
广受欢迎的 Java 库中的一个漏洞正在撼动全球 IT 环境。 据估计,该库存在于大多数企业环境中。
Log4j 主要用于日志记录。 应用程序中的事件可以使用注释进行注册。 考虑在登录尝试后打印出登录详细信息。 或者,对于 Java 中的 Web 应用程序,用户尝试连接的浏览器的名称。
后面的例子很常见。 在这两种情况下,外部用户都会影响 Log4j 输出的日志。 滥用这种影响是可能的。 4 年 13 月 2013 日至 5 年 2021 月 XNUMX 日之间的任何 LogXNUMXj 版本的日志都能够指示 Java 应用程序从本地设备上的远程服务器运行代码。
自 2013 年以来,Log4j 一直在处理一个 API:JNDI,即 Java 命名和目录接口。 JNDI 的添加允许 Java 应用程序从本地设备上的远程服务器运行代码。 程序员通过在应用程序中添加有关远程服务器的单行详细信息来进行指导。
问题是不仅程序员能够将规则添加到应用程序中。 假设 Log4j 记录登录尝试的用户名。 当有人在用户名字段中输入上述行时,Log4j 运行该行,Java 应用程序解释命令以在指定服务器上运行代码。 Log4j 记录 HTTPS 请求的情况也是如此。 如果将浏览器名称更改为该行,Log4j 会运行该行,间接指示它根据需要运行代码。
紧急补丁也可能不安全
9月4日,该漏洞大规模曝光。 Log2.15j 的开发者 Apache 软件基金会发布了一个紧急补丁 (2.15) 来修复该漏洞。 从那时起,处理 XNUMX 版本并为组织提供补丁一直是软件供应商的首要任务。
然而,安全组织 LunaSec 表示该补丁并非完全无懈可击。 仍然可以调整设置并执行已记录的 JNDI 命令。
请注意:相关设置必须手动调整,这样2.15的未修改变种确实是安全的。 尽管如此,Luna Sec 建议供应商和组织更新到 Log4j 2.16。 2.16 由 Apache Software Foundation 发布以响应 LunaSec。 新版本彻底去除了易受攻击的设置,无法为滥用创造条件。