修复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
与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。
哈哈!
一则公告搞得人心惶惶。
很多公司在第一时间修复,当时也是最繁锁的修复方式。因为10号的时候,官方也只是给出了 log4j-2.15.0-rc2 。

幸运的是,我们公司是这周一修复,折腾了半天,发现直接把依赖引入到项目中替换低版本依赖即可。
修复 log4j bug
pom 中添加,如果是父子依赖项目,直接在父项目中添加下面依赖即可:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.15.0</version>
</dependency>
接下来,看看在 2.15.0 之前修复的,是有多疯狂吧。
项目里面没有使用到log4j。springboot默认引用了starter-logging里面包含log4j且版本是2.14.1。(包含的log4j-api与log4j-to-slf4j包而不使用log4j-core的应用程序不会受到此漏洞的影响)如果不还放心可以自己排除一下。
可以将依赖log4j依赖排除掉,或升级一下依赖到log4j到2.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

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

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

方式二:升级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:\01-maven-rep2\logging-log4j2-log4j-2.15.0-rc2.zip
这里我下载的压缩包,是放在 D:\01-maven-rep2 目录下的,对了,我用的是 windows 系统。Linux 需要下载对应的压缩包。
到这里可还没完,只是在本地把这个包加载进来,但是我们一般开发和运维环境都是分开的。所以要把这个包放到运维使用的 maven 仓库中,不然打包就会出现找不到包。具体这一步,需要和自己公司运维同事沟通。
看看那些快被逼疯的人们:





方式三:升级log4j依赖版本为 2.15.0
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.15.0</version>
</dependency>
哈哈,最省事的了。但是,相对一些比较大的公司来说,可能是几百上千个服务,这也很头大。只能人肉运维去弄了,强一点的大佬都会去写脚本,甚至是不屑一顾

参考链接:https://gitee.com/y_project/RuoYi-Vue/issues/I4LX91
修复Apache Log4j任意代码执行漏洞安全风险通告的更多相关文章
- Apache Log4j 远程代码执行漏洞源码级分析
漏洞的前因后果 漏洞描述 漏洞评级 影响版本 安全建议 本地复现漏洞 本地打印 JVM 基础信息 本地获取服务器的打印信息 log4j 漏洞源码分析 扩展:JNDI 危害是什么? GitHub 项目 ...
- Apache log4j2 远程代码执行漏洞复现👻
Apache log4j2 远程代码执行漏洞复现 最近爆出的一个Apache log4j2的远程代码执行漏洞听说危害程度极大哈,我想着也来找一下环境看看试一下.找了一会环境还真找到一个. 漏洞原理: ...
- WordPress wp-includes/functions.php脚本远程任意代码执行漏洞
漏洞名称: WordPress wp-includes/functions.php脚本远程任意代码执行漏洞 CNNVD编号: CNNVD-201309-166 发布时间: 2013-09-13 更新时 ...
- Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现 一. 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...
- Apache Log4j2远程代码执行漏洞攻击,华为云安全支持检测拦截
近日,华为云安全团队关注到Apache Log4j2 的远程代码执行最新漏洞.Apache Log4j2是一款业界广泛使用的基于Java的日志工具,该组件使用范围广泛,利用门槛低,漏洞危害极大.华为云 ...
- php 168任意代码执行漏洞之php的Complex (curly) syntax
今天了解了php 168的任意代码执行漏洞,Poc: http://192.168.6.128/pentest/cms/php168/member/post.php?only=1&showHt ...
- 20.Ecshop 2.x/3.x SQL注入/任意代码执行漏洞
Ecshop 2.x/3.x SQL注入/任意代码执行漏洞 影响版本: Ecshop 2.x Ecshop 3.x-3.6.0 漏洞分析: 该漏洞影响ECShop 2.x和3.x版本,是一个典型的“二 ...
- 记一次海洋cms任意代码执行漏洞拿shell(url一句话)
实验环境:海洋CMS6.54(后续版本已该洞已补) 1.后台登录尝试 这个站点是个测试站,站里没什么数据. 进入admin.php,是带验证码的后台登录系统,没有验证码的可以用bp爆破.有验证码的也有 ...
- 干货|CVE-2019-11043: PHP-FPM在Nginx特定配置下任意代码执行漏洞分析
近期,国外安全研究员Andrew Danau,在参加夺旗赛(CTF: Capture the Flag)期间,偶然发现php-fpm组件处理特定请求时存在缺陷:在特定Nginx配置下,特定构造的请求会 ...
随机推荐
- 【JAVA】笔记(7)--- 数组精讲
数组的静态初始化: 1.一维数组: int [ ] arr = { 1,2,3,4 } ; Object [ ] arr = { new Object ( ) , new Object ( ) , ...
- hover 背后的数学和图形学
前端开发中,hover是最常见的鼠标操作行为之一,用起来也很方便,CSS直接提供:hover伪类,js可以通过mouseover+mouseout事件模拟,甚至一些第三方库/框架直接提供了 hover ...
- [luogu5344]逛森林
由于没有删边操作,可以先建出整棵森林,之后再用并查集判断是否连通,若连通必然与最后的森林相同 但如果用树链剖分+线段树的形式来优化建图,更具体如下: 建立两颗线段树,左边从儿子连向父亲,右边从父亲连向 ...
- [bzoj1082]栅栏
先二分答案,然后搜索暴力判断由于数据范围较大,需要剪枝:1.当前所有可能被用到的木板长度和(长度要不小于最小所需长度)>=所要拼成的所有木板的和:2.对于需求从大到小枚举木板(这样一开始枚举次数 ...
- 洛谷 P7516 - [省选联考 2021 A/B 卷] 图函数(Floyd)
洛谷题面传送门 一道需要发现一些简单的性质的中档题(不过可能这道题放在省选 D1T3 中偏简单了?) u1s1 现在已经是 \(1\text{s}\) \(10^9\) 的时代了吗?落伍了落伍了/ ...
- Codeforces 1542E2 - Abnormal Permutation Pairs (hard version)(DP)
upd on 2021.7.7:修了个 typo Codeforces 题目传送门 & 洛谷题目传送门 首先考虑怎样处理"字典序小"这个问题,按照字典序比大小的套路,我们可 ...
- awk多文件处理时的分隔符?
目录 问题来源 解决方法 问题来源 我有两个文件,一个是plink过滤后得到的.fam文件(空格分隔):另一个是样本对应关系文件(tab分隔). 文件1: 文件2: 两个文件匹配,awk常规操作.这里 ...
- 【Perl】如何安装Bioperl模块?
目录 失败尝试一:使用cpanm 失败尝试二:使用CPAN 成功尝试:直接conda安装bioperl 没有尝试:源码安装bioperl 生信软件绕不过Perl,Perl绕不过Bioperl.而Bio ...
- NextDenovo 组装基因组
NextDenovo 是有武汉未来组团队开发出来用于组装ONT,Pacbio, HIFI (默认参数可对60-100X数据更有效),可通过correct--assemble对其进行组装.组装后,每个碱 ...
- go变量、类的概念以及类的使用方式,嵌套结构体
go变量.类的概念以及类的使用方式,嵌套结构体 Go变量 go使用var声明变量,当声明变量时,这个变量对应的值总是会被初始化.这个值要么用指定的值初始化,要么用零值(即变 量类型的默认值)做初始化. ...