分布式 | log4j2 漏洞修复方案

作者:鲍凤其

爱可生 dble 团队开发成员,主要负责 dble 需求开发,故障排查和社区问题解答。少说废话,放码过来。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


dble 运行依赖许多组件的 jar 包,当遇到某个组件有漏洞时,需要紧急修复。

Apache Log4j2

安全漏洞说明:https://nosec.org/home/detail...

修复方案

⚠️:方案1可实施,截止至北京时间2021年12月14日11时,log4j 官方已经发布 2.16.0 版本,相关 release notes:https://github.com/apache/log...

⚠️:下面介绍的2,3步骤是临时缓解步骤,不排除有其他问题

1. 升级 log4j2 组件

dble版本:2.19.07.x - 3.21.10.x版本,2.19.07.x之前的版本需要自行尝试替换方案,官方不再提供支持

影响:需要重启 dble

步骤:

1.1 停止 dble

1.2 将 dble 服务器上 log4j 的 jar 包进行备份并 mv 至 /tmp/ 目录下

/path/to/dble/lib 下有四个 jar 包分别是:(操作前需要确认一下)

  • log4j-1.2-api-2.13.1.jar
  • log4j-api-2.13.1.jar
  • log4j-core-2.13.1.jar
  • log4j-slf4j-impl-2.13.1.jar

执行下面的操作:

mv log4j-1.2-api-2.13.1.jar log4j-1.2-api-2.13.1.jar.bak
mv log4j-1.2-api-2.13.1.jar.bak /tmp/

1.3 将 log4j 2.16.0 版本的相关 jar 包,上传到该路径下/path/to/dble/lib,并变更权限
参考链接:https://repo1.maven.org/maven... ,其他jar在此网站上查找

1.4 重复1.2,1.3步骤升级其余三个jar包

1.5 启动dble

2. 添加配置

dble版本:理论上全版本dble适配

影响:需要重启dble

步骤:

在 dble 配置文件 /path/to/dble/conf 下添加配置文件 log4j2.component.properties

修改文件权限:

添加如下配置:

log4j2.formatMsgNoLookups=True

验证方式:

开发环境验证该变量重启后被加载,不重启情况下,不会被加载。

3. 修改 jvm 参数

dble版本:适用于dble版本 < 3.20.07.0

3.20.07.0及之后的dble版本由于对 JVM 参数进行了限制,因此不支持此种方式,会在近期修复。

影响:需要重启dble

步骤:

在 dble 配置文件/path/to/dble/conf/wrapper.cof 中添加如下配置,并重启dble。

配置:

原环境中是否存在 wrapper.java.additional 的参数,下面配置中的14在原环境中按需替换

wrapper.java.additional.14=-Dlog4j2.formatMsgNoLookups=true

执行以下命令判断是否使用该参数启动:

ps aux|grep dble|grep 'formatMsgNoLookups'

4. 设置系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置 为 true

不推荐


MySQL分布式中间件DBLE
DBLE是一个基于MySQL的高可扩展性的分布式中间件,适用于高并发及TB级海量数据处理场景。

中国领先的企业数据处理技术整体解决方案提供商,开源数据库领域优秀企业。为大型行业用户的特定场景提...

355 声望
178 粉丝
0 条评论
推荐阅读
OB运维 | tenant--删除租户的流程设计
作者:姚嵩不知道是地球人还是外星人,知道的可以留言告诉小编...本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

爱可生云数据库阅读 176

安全地在前后端之间传输数据 - 「3」真的安全吗?
在「2」注册和登录示例中,我们通过非对称加密算法实现了浏览器和 Web 服务器之间的安全传输。看起来一切都很美好,但是危险就在哪里,有些人发现了,有些人嗅到了,更多人却浑然不知。就像是给门上了把好锁,还...

边城29阅读 6.4k评论 5

封面图
http 和 https 的通信过程及区别
🎈 两者的区别端口: http 端口号是80, https 端口号是443传输协议: http 是超文本传输协议,属于明文传输; https 是安全的超文本传输协议,是经过 SSL 加密后的传输协议安全性: https 使用了 TLS/SSL 加密,...

tiny极客2阅读 2.8k评论 2

封面图
支付对接常用的加密方式介绍以及java代码实现
加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要...

京东云开发者3阅读 481

封面图
JWT 登录认证
🎈 Token 认证流程作为目前最流行的跨域认证解决方案,JWT(JSON Web Token) 深受开发者的喜爱,主要流程如下:客户端发送账号和密码请求登录服务端收到请求,验证账号密码是否通过验证成功后,服务端会生成唯一...

tiny极客2阅读 975评论 1

封面图
ctf(pwn&reverse)总结
F5/tab 查看伪代码空格 查看汇编代码视图-&gt;打开子视图-&gt;字符串 :查看所有字符串编辑-&gt;修补程序 :修改程序 修改完后点击修补程序应用到输入文件即可保存修改

白风之下阅读 2.9k

什么是跨域?如何解决跨域?
跨域: 它是由浏览器的 同源策略 造成的,是浏览器对 JavaScript 实施的安全限制,所谓同源(即指在同一个域)就是两个页面具有相同的协议 protocol,主机 host 和端口号 port 则就会造成 跨域

tiny极客1阅读 818评论 1

封面图

中国领先的企业数据处理技术整体解决方案提供商,开源数据库领域优秀企业。为大型行业用户的特定场景提...

355 声望
178 粉丝
宣传栏