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 ...
随机推荐
- 使用PdfSharp从模板生成Pdf文件
最近在做一个生成文档的需求.通过先制作一个包含各字段占位符的文档模板,导入这个模板并填写内容替换掉占位符,再输出成最终文件. 由于版式固定,安全性更好,业务上常用Pdf作为最终标准化的格式, 在. ...
- vue table 里面 slot 的模板复用 slot-scope template v-for
vue table 里面 slot 的模板复用 slot-scope template v-for 需求 经常在table里面要有自定义列,但是会有相同的自定义列,这个时候又不想写很多一样的templ ...
- 附件表单验证:指针抖动+延迟验证 a={...a} $nextTick(() => { a.validate })
附件表单验证:指针抖动+延迟验证 a={...a} $nextTick(() => { a.validate })
- 五大基础dp
动规条件 • 最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构, 即满足最优化原理. • 无后效性:即某阶段状态一旦确定,就不受这个状态以后决策的影响.也就是说,某状 ...
- 蓝牙BLE无线控制氛围灯解决方案之特色解析
谁的方案? 前几天和一个小伙伴讨论方案公司的价值,他给出定位还是比较准确地,作为一家方案公司,就是让产品公司,低成本,快速的推出具有市场竞争力的产品.凭借着本团队在无线蓝牙领域的深耕,这些年也做了 ...
- day06-Java流程控制
Java流程控制 1.用户交互Scanner java.util.Scanner是Java5的新特征,我们可以通过Scannner类来获取用户的输入. 基本语法: Scanner s = new Sc ...
- 关于初始化page入参的设计思路
最近在重构老的代码,在写的过程中发现之前的逻辑如果遇到没有入参pageNo会Npe,于是乎我想找找公司项目有啥方式处理page入参的有两种如下 使用三元表达式直接判断是否null,然后赋值 使用map ...
- 记一次 .NET某防伪验证系统 崩溃分析
一:背景 1. 讲故事 昨晚给训练营里面的一位朋友分析了一个程序崩溃的故障,因为看小伙子昨天在群里问了一天也没搞定,干脆自己亲自上阵吧,抓取的dump也是我极力推荐的用 procdump 注册 AED ...
- Kingbase ES 函数返回-return语句
文章概要: 本文在https://www.cnblogs.com/kingbase/p/15703611.html 一文的基础上总结了Kingbase ES中函数能支持的return语句,整体上兼容o ...
- debootstrap 命令行安装 debian12(stable) btrfs文件系统 uefi引导 (像arch一样)
1,制作debian12 live 启动盘 2.联网,可以手机usb共享,可以用wpasupplicant连wifi 3.修改镜像列表 sudo nano /etc/apt/source.list 修 ...