2021年12月9日晚,开源项目Apache Log4j 2的一个远程代码执行漏洞的利用细节被公开。而公开漏洞时,该漏洞被认为是影响了2.0至2.14.1-rc1的所有版本。但技术人员在后续的实际测试中发现,12月7日上午更新的2.15.0-rc1版本依然存在触发该漏洞的可能性。最终在利用细节被公布的几小时后——12月10日凌晨2点半左右,Apache Log4j 2更新至了2.15.0-rc2版本,至此漏洞才确认被修复。
Apache Log4j是一个基于Java的日志记录工具,目前是Apache软件基金会下的一个开源项目。而此次出现漏洞的Apache Log4j 2则是目前该项目的最新版本,由于其优异的性能而被广泛的应用于各种常见的Web服务中。
也正因该项目本身应用广泛,而此次漏洞的修复滞后且利用门槛极低,再加上大量Web应用出于各种原因尚未甚至无法更新到最新安全版本,导致此次事件给整个互联网带来了极大的安全隐患。
在野攻击
经过360的技术人员验证,确认目前放出的利用代码确实可以成功触发该漏洞,并且操作门槛并不高。
同时,360安全大脑的云端大数据也发现网络中已经出现了针对该漏洞的大量测试攻击,甚至已经开始出现试探性的在野攻击案例。这也再次印证了该漏洞极高的风险性和极大的覆盖范围。
解决方案
该事件影响范围广且危害极大,呼吁广大厂商和各种Web应用的使用者及时做出安全响应。360安全大脑在此也给出如下安全建议:
常规方案
使用了Apache Log4j 2的用户,请将程序更新至官方最新安全版本(2.15.0-rc2)。下载地址如下:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
临时应急方案
修改Log4j配置:
log4j2.formatMsgNoLookups=True
设置JVM启动参数:
-Dlog4j2.formatMsgNoLookups=true
设置环境变量:
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS值为true
可以提高安全性的周边设置
以下设置或操作可能会对防护此次安全事件起到作用,但无法确保安全。建议结合实际应用场景进行配置:
1. 使用尽可能更高版本的JDK
2. 使用rasp阻断lookup的调用
3. 使用waf对流量中的${jndi进行拦截
4. 禁止所有不必要的外连数据。
360安全大脑防护