openLooKeng 社区 Apache Log4j2 高危安全漏洞修复完成,建议用户升级
近日,openLooKeng 注意到 Apache Log4j2 反序列化远程代码执行漏洞(CVE ID 为 CVE-2021-44228),并成功进行修复。详细方案如下,建议所有用户升级。
Apache Log4j2 远程代码执行漏洞修复解决方案
【漏洞描述】
Apache Log4j2 是一个基于 Java 的日志记录工具。该工具重写了 Log4j 框架,并引入了大量丰富的特性。该日志框架被广泛地用于中间件、开发框架与 Web 应用中,用来记录日志信息。
由于组件存在 Java JNDI 注入漏洞,当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。目前 POC 已公开,风险较高。
【漏洞等级】
高危,该漏洞影响范围极广,危害极大。
CVSS 评分:9.8
【受影响版本】
Apache log4j 2 在 2.0 至 2.14.1 (均含)版本均受影响。
【openLooKeng 漏洞排查】
问题排查一: ESconnector 在运行时依赖 log4j
继续排查 openLooKeng 最终打包 server 时的 jar 包,当前使用的是 JDK 自己的 logging 框架,没有使用 log4j。
在对应的 ES connector 模块下,对 lib 库的分析,发现的确使用了 log4j 相关的库。
问题排查二:openLooKeng 使用的是 airlift,封装的 JDK 本身的 log 框架
同样对打包后的 openLooKeng server lib 库下所有的 jar 包进行梳理,可以看到没有 log4j-api 以及 log4j-core。
问题排查三 :openLooKeng 仓库 ranger plugin 代码
通过排查仓库的内容,并未发现相关 log4j 相关代码的依赖。 在 ranger 中的 POM 文件中,发现了部分关于 log4j 的版本声明,但是并未在后续的构建中使用。
当前 openLooKeng ranger plugin 依赖于 apache ranger 2.1.0 组件,而 ranger 2.1.0 组件依赖 log4j2 2.13X 版本,为间接依赖关系。
并且,当前 ranger 中,对于 log4j 有依赖的模块是 agents-audit
openLooKeng 的 ranger plugin 并不依赖 log4j
【openLooKeng 社区修复方案】
升级至最新组件:log4j-2.15.0,其中 2.15.0 的发布时间应该为 2021-12-09 23:46 的版本!
◎ 方案 1 - 修改代码
针对 ES connector 和 Ranger plugin,更新代码,移除 log4j 的依赖。关联 PR 如下 :
https://gitee.com/openlookeng/hetu-core/pulls/1312
https://gitee.com/openlookeng/openlookeng-ranger-plugin/pulls/10
备注:由于 Ranger 社区尚未修复 log4j 问题,因此建议用户在使用 ranger plugin 时,按照方案 2 的建议配置 openLooKeng 参数。openLooKeng 社区会在 ranger 社区修复 log4j2 问题之后更新 ranger 到最新版本。
◎ 方案 2 - 修改配置规避问题
针对无法做代码改动的环境,如已在生产环境部署 openLooKeng 1.4.0 之前的版本。建议在 JVM.config 文件中,添加如下配置:
上述便是 openLooKeng 针对 Apache Log4j2 反序列化远程代码执行漏洞(CVE ID 为 CVE-2021-44228)所提供的修复方案,当前漏洞状态已修复。详细文档可参考: https://openlookeng.io/zh-cn/security/2021-1213/sa-v2.html
欢迎使用 openLooKeng,如果您有任何疑问与建议,请在社区代码仓中提 Issue,或加小助手进入专属交流群。
openLooKeng, Make Big Data Simplified
社区官网
代码仓地址
https://github.com/openlookeng
版权声明: 本文为 InfoQ 作者【openLooKeng】的原创文章。
原文链接:【http://xie.infoq.cn/article/b01adf43a2046e3b2b04641eb】。文章转载请联系作者。
评论