log4j2 lookup漏洞修复方法
2021.12.10凌晨,Apache Log4j远程代码执行漏洞细节被公开,参考链接:https://unit42.paloaltonetworks.com/apache-log4j-vulnerability-cve-2021-44228/,也可以在cve网站上查询到:https://www.cve.org/CVERecord?id=CVE-2021-44228,当前漏洞适用的版本:Log4j 2.x <= 2.15.0-rc1,仅在Log4j 2中存在此漏洞,Log4j 1.x版本不受影响,下面举了几个例子,对于常见的开源软件或者引用该库的程序都可以按照下面的方法修复。
1.ElasticSearch
存在的版本:6.x、7.x、8.x,首先是建议开启用户名密码访问,提升安全性。
编辑ElasticSearch安装目录下的conf/jvm.options,添加jvm参数:
-Dlog4j2.formatMsgNoLookups=true
然后保存并退出文件,重启ElasticSearch服务生效,每个节点都要修改并重启。

也可以下载最新的2.15.0的Log4j jar包替换掉elasticsearch lib下面的老版本Log4j jar包,然后重启ElasticSearch服务生效,具体的链接会在后面给出。
2.Kafka
版本:1.x、2.x
编辑kafka安装目录下的启动脚本:bin/kafka-server-start.sh,找到KAFKA_LOG4J_OPTS环境变量位置,编辑变量追加jvm参数:
# 修改export的值
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties -Dlog4j2.formatMsgNoLookups=true"

然后保存之后,重启kafka broker生效,即先使用停止脚本停掉服务再使用启动脚本启动服务,集群所有节点都需要操作。
3.Flink
版本2.11版本及以上,2.11以下的版本不受影响,然后编辑安装目录下的conf/flink-conf.yaml添加下面的配置:
env.java.opts: -Dlog4j2.formatMsgNoLookups=true
然后保存配置并退出,每个节点都要修改,最后停止flink集群后再启动即可生效。
4.maven项目
maven项目中关于log4j的引用可以直接升级到最新版本,pom配置如下:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.15.0</version>
</dependency>
官方已经将补丁合并至2.15.0稳定版,所以保存并更新maven依赖后,重新编译项目:
mvn package
生成新的jar包即可修复bug。
5.自己开发的java代码
下载新版本的log4j依赖包,然后使用log4j-api-2.15.0.jar和log4j-core-2.15.0.jar替换掉现有项目中的依赖并重新编译即可,下载链接在最后。
6.线上正在运行的独立java程序
对于正在独立运行的java程序可以按照下面的方法关闭。
6.1.添加jvm参数
和上面类似,比如:
java -cp .:./lib/*:./etc/log4j2.xml: -Dlog4j2.formatMsgNoLookups=true com.aaa.bbb.MainClass
6.2.添加配置文件
创建并编辑配置文件log4j2.component.properties内容为:
log4j2.formatMsgNoLookups=true
其实和jvm参数一样,只是这里用了配置文件来单独存放,这样保存配置后在启动java程序时添加到classpath中:
java -cp .:./lib/*:./etc/log4j2.xml:./etc/log4j2.component.properties: com.aaa.bbb.MainClass
6.3.导入环境变量
运行程序前导入环境变量:
export FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS=true
可以将变量配置到/etc/profile或者~/.bashrc中每次进入shell都会生效,然后再正常启动java程序即可。
其实上面的ElasticSearch、Kafka、Flink直接导入这个环境变量也是可以的,log4j相关的模块会自动读取该变量并进行设置。
总结来说,上面这些方法无非就是修改jvm参数或者设置相关的变量来关闭lookup的功能,从而切断远程代码执行,或者是直接升级官方最新的Log4j的版本来修复问题。
Log4j程序包下载:https://dlcdn.apache.org/logging/log4j/2.15.0/apache-log4j-2.15.0-bin.tar.gz
log4j2 lookup漏洞修复方法的更多相关文章
- Mysql漏洞修复方法思路及注意事项
[系统环境] 系统环境:Red Hat Enterprise Linux Server release 5.4 (Tikanga) + 5.7.16 MySQL Community Server ...
- java中xxe漏洞修复方法
java中禁止外部实体引用的设置方法不止一种,这样就导致有些开发者修复的时候采用的错误的方法 之所以写这篇文章是有原因的!最早是有朋友在群里发了如下一个pdf, 而当时已经是2019年1月末了,应该不 ...
- 关于阿里云ECS Centos 5/6/7 Linux Glibc库严重安全漏洞修复方法
日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235.黑客可以通过gethostbyname系列函数实现远程代码执行,获取 ...
- Linux Bash严重漏洞修复方法
日前Linux官方内置Bash中新发现一个非常严重安全漏洞,黑客可以利用该Bash漏洞完全控制目标系统并发起攻击,为了避免Linux服务器受影响,就要尽快修补该漏洞了.(漏洞参考https://acc ...
- 常见web漏洞修复方法
方法如下: 漏洞修复.(输入过滤,输出转义) 1.在连接数据库时,在接收参数后进行转义,$id = mysql_real_escape_string($id); 2.在网页源码中在接收参数后可用htm ...
- Zabbix 2.2.x, 3.0.x SQL注射漏洞修复方法
1.漏洞测试 在您的zabbix的地址后面加上如下url: jsrpc.php?type=&method=screen.get×tamp=&pageFile=hist ...
- Jsp万能密码漏洞修复例子
更多详细内容请查看:http://www.111cn.net/jsp/Java/58610.htm 如果网站出现这种“万能密码”漏洞该怎么办呢 'or'='or' 漏洞修复 方法有很多在这里介绍两种, ...
- 关于ECSHOP中sql注入漏洞修复
标签:ecshop sql注入漏洞修复 公司部署了一个ecshop网站用于做网上商城使用,部署在阿里云服务器上,第二天收到阿里云控制台发来的告警信息,发现ecshop网站目录下文件sql注入漏洞以及程 ...
- dedecms5.7最新漏洞修复
最近发现织梦cms被挂马现象频繁,解决好好几个网站的问题,但是过不了多久,就又被攻击了,即使更改系统及ftp密码,也没有起到防御的作用,最后怀疑cms本身漏洞,于是采用工具扫描了一下,才发现问题的严重 ...
- struts2 最新S2-016-S2-017漏洞通杀struts2所有版本及修复方法
详情查看http://zone.wooyun.org/content/5159 官方漏洞说明 http://struts.apache.org/release/2.3.x/docs/s2-016.ht ...
随机推荐
- 通过 TCPView KPKIService.exe 删掉 (原来是单点登录的中间件)
叫 统一安全中间件,就是个第三方做的key的安全检查,谁知道是哪年装的 (原来是单点登录的中间件) 资料 https://baijiahao.baidu.com/s?id=17173842191483 ...
- dist目录打war包命令 jar -cvf yourName_web.war *
进入dist目录 "build:war": "cd dist && jar -cvf ../yourName_web.war *",
- KETTLE实战视频教程--免费白嫖(本贴持续更新)
KETTLE实战视频教程 欢迎关注笔者的公众号: java大师, 每日推送java.kettle运维等领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!!个人网站: http://w ...
- day01-SpringBoot基本介绍
SpringBoot基本介绍 1.SpringBoot是什么? 官网地址:https://spring.io/projects/spring-boot 学习文档:https://docs.spring ...
- .NET开源快速、强大、免费的电子表格组件
前言 今天大姚给大家分享一个.NET开源(MIT License).快速.强大.免费的电子表格组件,支持数据格式.冻结.大纲.公式计算.图表.脚本执行等.兼容 Excel 2007 (.xlsx) 格 ...
- C++ Qt开发:QTcpSocket网络通信组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QTc ...
- Activity系列博客5篇
目录介绍 01.前沿介绍 02.handleLaunchActivity 03.performLaunchActivity 04.activity.attach 05.Activity的onCreat ...
- 记录--for in 和 for of的区别详解以及为for in的输出顺序
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 for in 和 for of 相对于大家肯定都不陌生,都是用来遍历属性的没错.那么先看下面的一个例子: 例1 const obj = { ...
- WinAppSDK / WinUI3 项目无法使用 SystemEvents 的问题
SystemEvents 是一个开发 win32 窗口项目很常用的类,其中封装了一些常用的系统广播消息.在 WinUI3 项目中,SystemEvents 事件经常无法触发,简单排查了一下原因. Sy ...
- IDEA 2019.3 plugins 插件搜索不出结果
proxy的url输入: http://127.0.0.1:1080 重启idea即可