作者:鲍凤其
爱可生 dble 团队开发成员,主要负责 dble 需求开发,故障排查和社区问题解答。少说废话,放码过来。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
dble 运行依赖许多组件的 jar 包,当遇到某个组件有漏洞时,需要紧急修复。
Apache Log4j2
安全漏洞说明:https://nosec.org/home/detail/4917.html
修复方案
⚠️:方案1可实施,截止至北京时间2021年12月14日11时,log4j 官方已经发布 2.16.0 版本,相关 release notes:https://github.com/apache/logging-log4j2/blob/rel/2.16.0/RELEASE-NOTES.md
⚠️:下面介绍的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/maven2/org/apache/logging/log4j/log4j-core/2.16.0/ ,其他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
不推荐