log4j2 远程代码执行

关注到最近出现了新的漏洞,看了一下网上别人的文章,学习一下

背景:apache log4j2时基于JAV的日志记录工具,它重写了log4j框架并加入了很多特性。许多业务系统使用该日志框架开发,存在有开发者记录用户输入导致的错误信息,这些信息会储存再日志。

【威胁等级】严重
【漏洞如何利用】:外部用户输入的数据被日志记录,造成远程代码执行。
【排查】:查看Java应用是否引入 log4j-apilog4j-core两个jar
【影响范围】:apache log4j2 2.0—-2.14.1版本
【应对方法】:升级到安全版本:log4j-2.15.0-rc1

看到“宽字节安全”相关的文章,引言的话让我印象深刻:
“一个称得上优秀的框架,必备的要素之一是可以通过某种约定的格式读取所运行环境中的配置信息”

学习安全,给我的感悟就是学的越多越觉得这个世界上没有安全一说,不管技术如何发展,“人”总会出现问题,在科技上“人”起决定性因素,首先我们使用的机器、技术都是人造的,计算机很聪明,能帮我们做到很多我们做不到的事,计算机也很笨,我们不进行设置它就什么都不知道。便利和安全是不可兼得的,我们为了便利统一了标准,这就让攻击者更有针对性的利用通用技术攻破大量资产,我们为了安全加上了访问控制,这就让我们打开手机打开应用都要先进行多步验证。这次这个漏洞出现在较新的框架中,可见,再新的技术还是得重视安全问题,勿给存坏心眼的人可乘之机。

log4j2 有一个lookup功能,为方便人调用,可以在任何位置使用约定格式获取环境中的指定配置信息。lookup可能会出现在不同的日志级别,下面是log4j2的8个日志等级:从低到高
all<trace<debug<info<warn<error<fatal<off
1.all:最低等级,打开所有的日志记录
2.trace:追踪,程序的推进
3.debug:指出细粒度信息事件(细粒度就是把复杂的东西拆成更细节的操作)
4.info:消息在粗粒度级别上突出强调应用程序的运行过程
5.warn:输出警告以及warn以下级别的日志
6.error:输出错误日志
7.fatal:输出每个严重的错误事件将会导致应用程序推出的日志

程序会打印高于或等于所设置级别的日志,设置的等级越高,打印出的日志越少。

不管什么级别都能触发lookup,有时候看不到是因为设置的日志等级过高。

查阅关于log4j2的一些文章:

1.log4j2 提供了许多方法获取所运行环境的配置信息
2.自定义lookup的时候,可以选择继承不同的类,如strlookup、abstractlooup等

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注