您当前的位置:首页 > 电脑百科 > 安全防护 > 资讯

Log4j漏洞源码分析及解决方案

时间:2021-12-15 14:29:18  来源:  作者:IT技术资源爱好者
  1. 这几天Log4j的问题消息满天飞,今天我们就一起来看看从源码角度看看这个漏洞是如何产生的。
  2. 大家都知道这次问题主要是由于Log4j中提供的jndi的功能。

具体涉及到的入口类是log4j-core-xxx.jar中的org.Apache.logging.log4j.core.lookup.StrSubstitutor这个类。

原因是Log4j提供了Lookups的能力(关于Lookups可以点这里去看官方文档的介绍),简单来说就是变量替换的能力。

在Log4j将要输出的日志拼接成字符串之后,它会去判断字符串中是否包含${和},如果包含了,就会当作变量交给org.apache.logging.log4j.core.lookup.StrSubstitutor这个类去处理。

相关的代码下面这个

首先是org.apache.logging.log4j.core.pattern.MessagePatternConverter这个类的format方法

Log4j漏洞源码分析及解决方案

 

图中标注1的地方就是现在漏洞修复的地方,让noLookups这个变量为true,就不会进去里面的逻辑,也就没有这个问题了。

图中标注2的地方就是判断字符串中是否包含${,如果包含,就将从这个字符开始一直到字符串结束,交给图中标注3的地方去进行替换。

图中标注3的地方就是具体执行替换的地方,其中config.getStrSubstitutor()就是我们上面提到的org.apache.logging.log4j.core.lookup.StrSubstitutor。

在StrSubstitutor中,首先将${和}之间的内容提取出来,交给resolveVariable这个方法来处理。

Log4j漏洞源码分析及解决方案

 

我们看下resolver的内容,它是org.apache.logging.log4j.core.lookup.Interpolator类的对象。

Log4j漏洞源码分析及解决方案

 

它的lookups定义了10中处理类型,还有一个默认的defaultLoopup,一种11中。如果能匹配到10中处理类型,就交给它们去处理,其他的都会交给defaultLookup去处理。

匹配规则也很简单,下面简单举个例子。

1.如果我们的日志内容中有${jndi:rmi://127.0.0.1:1099/hello}这些内容,去掉${和},传递给resolver的就是jndi:rmi://127.0.0.1:1099/hello

2.resolver会将第一个:之前的内容和lookups做匹配,我们这里获取到的是jndi,就会将剩余部分jndi:rmi://127.0.0.1:1099/hello交给jdni的处理器JndiLookup去处理。

Log4j漏洞源码分析及解决方案

 

图中标注1的地方入参就是jndi:rmi://127.0.0.1:1099/hello

图中标注2的地方就是jndi

图中标注3的地方就是rmi://127.0.0.1:1099/hello

图中标注4的地方就是处理器JndiLookup类的对象

图中标注5的地方就是jndi来处理的入口

关于jndi相关的,以及漏洞如何复现网上有一大把的教程,这里就不展开了。


  1. 关于漏洞的修复。
Log4j漏洞源码分析及解决方案

 

主要是通过设置noLookups变量的值,不让它进去这个if里面的逻辑。

这个变量的值是来自下面这个属性

Log4j漏洞源码分析及解决方案

 

所以在在代码中加入System.setProperty("log4j2.formatMsgNoLookups","true");这句也就可以了。当然网上有更多其他的修复方法,这里就不讨论了。

原文:https://www.cnblogs.com/wbo112/p/15690699.html



Tags:Log4j漏洞   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
log4j漏洞的形成原因已经有很多分析文章了,这里说一说我是如何在了解到有漏洞后,跟进漏洞产生原理的,以及发现的一些绕WAF tips跟进漏洞产生原因的思路如何发现漏洞产生的原因...【详细内容】
2021-12-22  Tags: Log4j漏洞  点击:(6)  评论:(0)  加入收藏
这几天Log4j的问题消息满天飞,今天我们就一起来看看从源码角度看看这个漏洞是如何产生的。 大家都知道这次问题主要是由于Log4j中提供的jndi的功能。具体涉及到的入口类是lo...【详细内容】
2021-12-15  Tags: Log4j漏洞  点击:(13)  评论:(0)  加入收藏
▌简易百科推荐
据ZDNet12月24日报道,CISA本周发布了自己的Log4J扫描器,同时发布的还有网络安全公司和研究人员发布的其他扫描器。开源的Log4j扫描器是由开源社区其他成员创建的扫描器派生而...【详细内容】
2021-12-24  邮电设计技术    Tags:Log4j   点击:(7)  评论:(0)  加入收藏
我们所见过的技术上最复杂的漏洞利用之一”- 谷歌“零号项目”安全研究人员评价ForcedEntry无交互攻击。多年来,以色列间谍软件开发商NSO集团针对安卓和iOS设备开发出了多款...【详细内容】
2021-12-24  科技湃小编    Tags:黑客   点击:(8)  评论:(0)  加入收藏
这几天Log4j的问题消息满天飞,今天我们就一起来看看从源码角度看看这个漏洞是如何产生的。 大家都知道这次问题主要是由于Log4j中提供的jndi的功能。具体涉及到的入口类是lo...【详细内容】
2021-12-15  IT技术资源爱好者    Tags:Log4j漏洞   点击:(13)  评论:(0)  加入收藏
随着网络安全防御需求扩大,网安技术、产品和解决方案数量也随之激增。为了了解和驾驭全球网络安全市场,对比国内外网络安全企业的差异,今天我们来看看由国外网络安全垂直媒体eS...【详细内容】
2021-09-18  数说安全    Tags:网络安全公司   点击:(188)  评论:(0)  加入收藏
作者:左右里编辑:釉子 据BitDefender安全研究人员称,他们发现了一个黑客组织正在以SSH暴力破解的方式攻击Linux设备,目的是在这些设备上安装门罗币恶意挖矿软件。SSH,一种为远程...【详细内容】
2021-07-22  看雪学院    Tags:矿机   点击:(185)  评论:(0)  加入收藏
在互联网、金融和区块链领域风靡的数字资产/版权证书(NFT)正面临一系列网络安全危机。上周四,一位自学成才的艺术家麦克·温克尔曼(Mike Winkelmann)以6930万美元的价格在...【详细内容】
2021-03-19      Tags:漏洞   点击:(155)  评论:(0)  加入收藏
前段时间,sudo被曝不要密码就可进行root提权的漏洞引起一片哗然,众多公司纷纷连夜打补丁来避免损失。FreeBuf也对此进行了相应的报道《不用密码就能获取root权限?sudo被曝新漏...【详细内容】
2021-03-16      Tags:root提权漏洞   点击:(135)  评论:(0)  加入收藏
深度学习是机器学习的一个子领域,它采用了一个特定的模型:一族通过某种方式连接起来的简单函数。由于这类模型的结构是受到人类大脑结构的启发而创造出来的...【详细内容】
2021-02-26      Tags:深度学习   点击:(269)  评论:(0)  加入收藏
物联网技术正在加速向各行业渗透,根据中国信通院《物联网白皮书(2020年)》内容显示:预计到2025年,物联网连接数的大部分增长来自产业市场,产业物联网的连接数将占到总体的61.2%。...【详细内容】
2021-01-22      Tags:物联网安全   点击:(463)  评论:(0)  加入收藏
CSRF跨站请求伪造(Cross-Site Request Forgery)CSRF经常配合XSS一起进行攻击!(同XSS类似,都属于跨站攻击,不攻击服务器端而攻击正常访问网站的用户!)XSS利用站点内的信任用户,CS...【详细内容】
2020-10-22      Tags:Web漏洞   点击:(560)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条