log4j官方漏洞修复史(更新至2.17.1/CVE-2021-44832)

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

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(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值