修复Apache Log4j任意代码执行漏洞安全风险通告

发布时间:2022-06-28 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了修复Apache Log4j任意代码执行漏洞安全风险通告脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

2021年12月10日

0x01漏洞背景

apache LOG4j 是 Apache 的一个开项目,Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。该日志框架被大量用于业务系统开发,用来记录日志信息。

2021年12月9日,网上监测到一则 Apache Log4j任意代码执行漏洞正在被广泛利用的信息 。漏洞编号:暂无,漏洞威胁等级:严重。

Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据被日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。鉴于此漏洞危害较大,建议客户尽快采取措施护此漏洞。

log4j2是全球使用广泛的java日志框架,同时该漏洞还影响很多全球使用量的Top序列的通用开源组件,例如 Apache Struts2、Apache Solr、Apache Druid、Apache Flink等。该漏洞利用方式简单,危害严重,官方已经发布该产品的最新版本,建议用户尽快升级组件,修复缓解该漏洞。

0x02漏洞影响版本

Apache Log4j 2.x <= 2.14.1

0x03修复建议

通用修补建议

1、厂商已发布升级修复漏洞,用户请尽快更新至安全版本:log4j-2.15.0-rc1

下载链接:https://gIThub.COM/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1

2、升级已知受影响的应用及组件,如srping-boot-strater-log4j2/Apache Solr/Apache Flink/Apache Druid

与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。


&nbsp;

哈哈!

一则公告搞得人心惶惶。

很多公司在第一时间修复,当时也是最繁锁的修复方式。因为10号的时候,官方也只是给出了 log4j-2.15.0-rc2 。

修复Apache Log4j任意代码执行漏洞安全风险通告

 

 


幸运的是,我们公司是这周一修复,折腾了天,发现直接把依赖引入到项目中替换低版本依赖即可。

修复 log4j bugpom 中添加,如果是父子依赖项目,直接在父项目中添加下面依赖即可:

        <dePEndency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-to-slf4j</artifactId>
            <version>2.15.0</version>
        </dependency>

接下来,看看在 2.15.0 之前修复的,是有多疯狂吧。

 

项目里面没有使用到log4jsPRingboot默认引用了starter-logging里面包含log4j且版本是2.14.1。(包含的log4j-api与log4j-to-slf4j包而不使用log4j-core的应用程序不会受到此漏洞的影响)如果不还放心可以自己排除一下。

可以将依赖log4j依赖排除掉,或升级一下依赖到log4j2.15.0-rc2不过目前这个版本maven中央仓库还没有,需要自己打包到本地maven仓库install后去依赖。

方式一:排除log4j依赖,找到项目里面的pom.XMl中的spring-boot-starter排除log4j-to-slf4j

这种方式也是相当繁琐,相当于排除掉,log4j ,不使用它。这也是最根本的解决办法,但是要一个一个排除,也是相当麻烦了。

<!-- SpringBoot 核心包 单应用 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-to-slf4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

 

怎么样看项目中有没有使用呢,在 idea 中鼠标放在项目上,右键选择 show Dependecies ... 快捷键是:Ctrl+Alt+shift+U

修复Apache Log4j任意代码执行漏洞安全风险通告

 

 

在这个界面里面,Ctrl + F ,找到 log4j-to-slf4j 并点击它

修复Apache Log4j任意代码执行漏洞安全风险通告

 

 

可以看到项目中很多地方都引用了这个依赖,所以要完全排除,还是比较难的。 具体方法就是找出所有依赖包然后一个个排除。参考方式一

修复Apache Log4j任意代码执行漏洞安全风险通告

 


方式二:升级log4j依赖

pom.xML新增log4j的版本为2.15.0-rc2覆盖低版本,这个需要自己去下载最新的 log4j-2.15.0-rc2 版本,地址 https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2  同时intsall到maven仓库去,因为这个还没有发布maven中央仓库。

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-to-slf4j</artifactId>
  <version>2.15.0-rc2</version>
</dependency>

 

注意: 同时intsall到maven仓库去,这个也是个操作,这里我把命令粘贴出来给大家

mvn install:install-file -DgroupId=org.apache.logging.log4j -DartifactId=log4j-to-slf4j -Dversion=2.15.0-rc2 -Dclassifier=template -Dpackaging=zip -DFile=D:1-maven-rep2logging-log4j2-log4j-2.15.0-rc2.zip

 

这里我下载的压缩包,是放在 D:1-maven-rep2 目录下的,对了,我用的是 windows 系统。Linux 需要下载对应的压缩包。

到这里可还没完,只是在本地把这个包加载进来,但是我们一般开发和运维环境都是分开的。所以要把这个包放到运维使用的 maven 仓库中,不然打包就会出现找不到包。具体这一步,需要和自己公司运维同事沟通。

看看那些快被逼疯的人们:

修复Apache Log4j任意代码执行漏洞安全风险通告


 

修复Apache Log4j任意代码执行漏洞安全风险通告

 

 


修复Apache Log4j任意代码执行漏洞安全风险通告

 

 


修复Apache Log4j任意代码执行漏洞安全风险通告

 

 


修复Apache Log4j任意代码执行漏洞安全风险通告

 


 

方式三:升级log4j依赖版本为 2.15.0

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-to-slf4j</artifactId>
            <version>2.15.0</version>
        </dependency>

哈哈,最省事的了。但是,相对一些比较大的公司来说,可能是几百上千个服务,这也很头大。只能人肉运维去弄了,强一点的大佬都会去写脚本,甚至是不屑一顾

修复Apache Log4j任意代码执行漏洞安全风险通告


参考链接:https://gitee.com/y_project/RuoYi-Vue/issues/I4LX91


 

脚本宝典总结

以上是脚本宝典为你收集整理的修复Apache Log4j任意代码执行漏洞安全风险通告全部内容,希望文章能够帮你解决修复Apache Log4j任意代码执行漏洞安全风险通告所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。