0x00 前言
自从log4j2.14.1版本爆出漏洞后,官方截止目前为止,共发布了3个稳定版本,分别是15.0、16.0、17.0。
本篇文章就分析一下每个版本都做了哪些事情,以此来评估每个版本升级的必要性。
分割线---------------------------------------------------------------------------------------
在28号晚上,log4j又修复了一个“RCE漏洞”(CVE-2021-44832),之所以RCE要打引号,是因为严谨一些说的话,这个其实不能算个漏洞,这个CVE的分析详情在3.2节。
0x01 2.15.0版本
1.1 修复方案
此版本是为了修复最初的 CVE-2021-44228漏洞,它的修复方式总结如下:
1、默认禁用msg lookup功能
2、在org.apache.logging.log4j.core.net.JndiManager#lookup方法中限制了ldap服务的host只能为本地ip、对javaClassName属性做了限制、且不允许ldap服务返回javaFactory属性。
1.2 遗留问题
上述第2点的防御措施可被绕过,绕过原理也比较简单,绕过详情可阅读4ra1n师傅的分析文章。
但如果要利用此漏洞,一般有如下两种情景:
1、开启msg lookup功能:
(1)在log4j2.xml中进行如下配置,即可开启lookup功能:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF" monitorInterval="30">
<appenders>
<console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%msg{lookups}%n"/>
</console>
</appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="CONSOLE"/>
</Root>
</Loggers>
</Configuration>
(2)如下代码即可触发漏洞:
public class Main {
public static void main(

本文详细分析了Log4j2自2.14.1版本爆出漏洞后的三个稳定版本的安全改进,包括2.15.0、2.16.0和2.17.0版本,针对每个版本的修复方案、遗留问题及总结进行了阐述。
最低0.47元/天 解锁文章
1831





