首页
社区
课程
招聘
[原创]Apache Log4j2 CVE-2021-45105 漏洞研究
发表于: 2021-12-27 17:51 6721

[原创]Apache Log4j2 CVE-2021-45105 漏洞研究

2021-12-27 17:51
6721

近日,棱镜七彩安全研究院监测到编号为:CVE-2021-45105的Apache Log4j2拒绝服务攻击漏洞,当系统日志配置使用非默认的模式布局和上下文查找时,攻击者可以通过构造包含递归查找数据包的方式,控制线程上下文映射 (MDC),导致StackOverflowError产生并终止进程,实现拒绝服务攻击。


目前只有log4j-core JAR 文件受此漏洞影响,仅使用log4j-api JAR文件而不使用log4j-core JAR文件的应用程序不受此漏洞的影响。


项目介绍

   Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。

项目地址

https://logging.apache.org/log4j/2.x/

漏洞概述

该漏洞危害较小,log4j2默认配置不受此漏洞影响,仅当日志配置使用带有上下文 Lookup 的非默认模式,例如:$${ctx:loginId}时存在此漏洞。

Log4j2 2.17.0 之前版本没有防止自引用 lookups 的不受控制的递归,攻击者可以制作包含递归查找的恶意输入数据,导致 StackOverflowError 错误而终止进程,这也就是 DOS(Denial of Service)拒绝服务攻击。

从 Log4j 2.17.0 版本开始,只有配置中的 lookup 字符串才允许递归扩展,另外,在任何其他用法中,仅解析最顶级的 lookup,不解析任何嵌套的 lookups。

影响版本

Log4j2 2.0-alpha1 到 2.16.0

漏洞复现

存在漏洞的log4j2  xml配置文件示例:

Poc:

修复方式

1、升级版本

立马升级到最新版本:Log4j 2.17.0,最新正式版本下载:

https://logging.apache.org/log4j/2.x/download.html

最新 Maven 依赖:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.17.0</version>
</dependency>

spring-boot-starter-log4j2 尚未更新,可以先覆盖其内置版本:

<properties>
  <log4j2.version>2.17.0</log4j2.version>
</properties>

2、临时解决

如果你不想升级版本,可以考虑使用以下 2 种临时解决方案:

1)在 PatternLayout 日志配置中,替换上下文 Lookups 中的 ${ctx:loginId} 或者 $${ctx:loginId} 为线程上下文映射模式(%X, %mdc, or %MDC)。

2)或者,删除对上下文 Lookups 中对 ${ctx:loginId} or $${ctx:loginId} 的引用,它们一般来自应用程序外部,如 HTTP Header 或用户输入。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 410
活跃值: (114)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢 正在找方案 很及时
2021-12-28 10:25
0
雪    币: 45
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
liukunda 谢谢 正在找方案 很及时
不客气的,希望能帮到您!
2021-12-29 15:13
0
游客
登录 | 注册 方可回帖
返回
//