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 ...
随机推荐
- golang开发_goroutine在项目中的使用姿势
很多初级的Gopher在学习了goroutine之后,在项目中其实使用率不高,尤其一些跨语言过来的人,对并发编程理解不深入,可能很多人只知道go func(),或者掌控不够,谨慎一些,尽量少使用或者不 ...
- zabbix“专家坐诊”第178期问答汇总
大家好,我是乐乐.早在三年前,我们就在社区举办了zabbix公益问答活动,并且定在每周三邀请资深的zabbix技术工程师,为社群的小伙伴进行免费的答疑.到现在已经178期了.后续我将会把每期的答疑汇总 ...
- ymal & properties 赋值特性 JSR303数据校验
基本语法 1.空格不能省略 2.以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的. 3.属性和值的大小写都是十分敏感的. key:空格value 字面量直接写在后面就可以 , 字符串默认 ...
- 微型跟踪器A产品体验和分析
跟踪器 这些年随着智能硬件的快速发展,各种新型的智能硬件层出不穷.在一个不起眼的赛道上,跟踪器的赛道一直比较沉寂,在这个一年几千万美金的市场上,玩家是有点少,产品更新不是很快.最近由于项目需要 ...
- Jetpack架构组件学习(0)——总结篇
原文地址:Jetpack架构组件学习(0)--总结篇 | Stars-One的杂货小窝 对之后学习的Jetpack架构开发优点进行简单总结,及对应的文章分类链接 LifeCycle 主要解决将一些初始 ...
- electron 中如何安装或更新 vuejs-devtool 最新稳定版
手上正在开发的项目是vue3.0 通过添加 vue-cli-plugin-electron-builder 插件生成 electron 项目,项目在开发过程中发现 beta版的 vuejs-devto ...
- 记录--经常被cue大文件上传,忍不住试一下
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 大文件上传主要步骤: 获取文件对象,切分文件 根据文件切片,计算文件唯一hash值 上传文件切片,服务端保存起来 合并文件切片,前端发送合 ...
- 用免费GPU部署自己的stable-diffusion项目(AI生成图片)
2021年时出现了 openAI 的 DALL,但是不开源.2022年一开年,DALL-E 2发布,依然不开源.同年7月,Google 公布其 Text-to-Image 模型 Imagen,并且几乎 ...
- Elasticsearch索引不存在时,查询接口报错怎么办?
1.索引不存在,报错:type=index_not_found_exception, reason=no such index解决办法: DSL: GET /text_index_003/_searc ...
- MySQL连接数超出最大值报错及修改
报错: create connection SQLException, url: jdbc:mysql://xx.xxx.x.xx:6306/hksk-cloud-mes?characterEncod ...