▼ 关注「Apache Flink」,获取更多技术干货 ▼

摘要:有关 Apache Log4j 的一个新的漏洞问题被提出,本文主要阐述 CVE-2021-45105 的细节和影响,并给出新的临时解决方案和 Flink 社区的修复计划。主要内容包括:

  1. CVE-2021-45105 漏洞说明

  2. 临时解决方案

  3. Flink 社区修复计划

Tips:点击「阅读原文」查看更多技术干货~

概述

12 月 16 号,有关 Apache Log4j 的一个新的漏洞问题被提出[1],经过验证后 CVE-2021-45105[2] 于 12 月 18 号发布。该漏洞进一步表示 2.16.0 版本及 CVE-2021-45046 的临时修复方案在某些配置条件下依然有被 DOS 攻击的风险。随后,Log4j 团队马上发布了 2.17.0 版本,并给出了新的临时修复方案。

上述漏洞的影响版本范围为 2.0-beta9 到 2.16.0。Apache Flink 在 1.11 及以上版本使用了 Log4j 2.x 版本,且均在受影响范围内。

有关 CVE-2021-44228 和 CVE-2021-45046 这两个漏洞的细节,以及这些漏洞对 Flink 用户的影响,可以参考上一篇文章:

《Log4j2 Zero Day 漏洞 Apache Flink 应对指南》

本文将主要阐述 CVE-2021-45105 的细节和影响,并给出新的临时解决方案和 Flink 社区的修复计划。

CVE-2021-45105 漏洞说明

该漏洞表明,Log4j 2.16.0 版本基于 CVE-2021-45046 的修复和临时解决方案下依然存在被 DOS 攻击的风险。其原因是当日志配置中使用了 Context lookup 这种非默认的 Pattern Layout 时 (如 $${ctx:loginId} ),攻击者可以在 Thread Context Map 中加入恶意的数据 (如 ${${::-${::-$${::-j}}}} ) 从而触发无限循环地 Lookup,进一步因为 StackOverflowError 导致进程终止。

如果日志配置中存在上述的 Pattern Layout,基于 “log4j2.formatMsgNoLookups=true” 和 "remove JndiLookup.class" 的方案并不能阻止恶意数据触发 CVE-2021-45105,因为该漏洞的根源发生在 String Substitution 过程中。

临时解决方案

若目前作业使用的 Flink 版本是 Log4j 2.16.0 对应的各个版本 (即 1.14.2,1.13.5,1.12.7,1.11.6),有两种解决方案:

  • 在日志配置的 PatternLayout 中,将类似 ${ctx:loginId} or $${ctx:loginId} 的 Context lookup 模式替换成 Thread Context Map 模式 (如 %X, %mdc, or %MDC )。

  • 在日志配置中完全移除掉类似 ${ctx:loginId} or $${ctx:loginId} 的 Context lookup 模式 (核心还是在于这种模式下是可以注入恶意数据并被 Log4j 解析的)

若目前作业使用的 Flink 版本是 Log4j 2.15.0 或更早的版本对应的各个版本 (即 1.14.1,1.13.4,1.12.5,1.11.4 及之前的版本),除了上述的操作外,还需要使用:

zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

将 Flink 中依赖的 log4j-core 里的 JndiLooup.class 删除,以达到 2.16.0 中禁用 JNDI 的效果。

需要注意以下三点:

  1. 该修复过程需要停止作业,在做完修复后重启。

  2. 对于 Apache Log4j 的 Zero Day 问题,虽然之前有其他的临时解决方法[4][5],但目前只有上面的方式能完全避免该漏洞的影响。

  3. 建议在社区发布修复版本后,尽快批量升级作业至对应的版本。

Flink 社区修复计划

目前 Log4j 已发布了 2.15.0,2.16.0 和 2.17.0 版本,具体修复内容如下:

Flink 社区在得知这些漏洞后,马上讨论了修复计划[11][12][13]。Flink 社区目前针对受影响的分支已经发布了升级 Log4j 到 2.16.0 的修复版本 (1.14.2,1.13.5,1.12.7,1.11.6[10]),用户可以直接使用。

关于 Log4j 2.17.0 对应修复版本的计划正在讨论中[3][14]。在社区发布 Log4j 2.17.0 对应的各个修复版本后,用户只需要将作业使用的 Flink 版本进行升级,即可完全避免该问题。

参考

[1] LOG4J2-3230

https://issues.apache.org/jira/browse/LOG4J2-3230

[2] CVE-2021-45105

https://nvd.nist.gov/vuln/detail/CVE-2021-45105

[3] CVE-2021-45105: Apache Log4j2 does not always protect from infinite recursion in lookup evaluation

https://lists.apache.org/thread/6gxlmk0zo9qktz1dksmnq6j0fttfqgno

[4] Advise on Apache Log4j Zero Day (CVE-2021-44228)

https://flink.apache.org/2021/12/10/log4j-cve.html

[5] CVE-2021-44228 Solution

https://stackoverflow.com/questions/70315727/where-to-put-formatmsgnolookups-in-log4j-xml-config-file/70315902#70315902

[6] LOG4J2-3198

https://issues.apache.org/jira/browse/LOG4J2-3198

[7] LOG4J2-3201

https://issues.apache.org/jira/browse/LOG4J2-3201

[8]  LOG4J2-3208

https://issues.apache.org/jira/browse/LOG4J2-3208

[9]   LOG4J2-3211

https://issues.apache.org/jira/browse/LOG4J2-3211

[10] Update Log4j to 2.16.0

https://issues.apache.org/jira/browse/FLINK-25295

[11] [DISCUSS] Immediate dedicated Flink releases for log4j vulnerability

https://lists.apache.org/thread/j15t1lwp84ph7ftjdhpw4429zgl13588

[12] [VOTE] Release 1.11.5/1.12.6/1.13.4/1.14.1, release candidate #1

https://lists.apache.org/thread/64tn3d38ko4hqc9blxdhqrh27x3fjro8

[13] [VOTE] Release 1.11.6/1.12.7/1.13.5/1.14.2, release candidate #1

https://lists.apache.org/thread/3yn7ps0ogdkr1r5zdjp10zftwcpr1hqn

[14] FLINK-25375

https://issues.apache.org/jira/browse/FLINK-25375


Flink Forward Asia 2021 

2022 年 1 月 8-9 日,FFA 2021 重磅开启,全球 40+ 多行业一线厂商,80+ 干货议题,带来专属于开发者的技术盛宴。

大会官网:

https://flink-forward.org.cn

大会线上观看地址 (记得预约哦):

https://developer.aliyun.com/special/ffa2021/live


更多 Flink 相关技术问题,可扫码加入社区钉钉交流群~

  戳我,查看更多技术干货~

Log4j2 Zero Day 漏洞 Apache Flink 应对指南(二)相关推荐

  1. Apache NiFi系统管理员指南 [ 二 ]

    配置用户和访问策略 加密配置 关键衍生函数 盐和IV编码 Java密码术扩展(JCE)有限强度管辖政策 允许不安全的加密模式 配置文件中的加密密码 NiFi工具包管理工具 群集配置 零主集群 为什么集 ...

  2. Apache Beam实战指南 | 玩转KafkaIO与Flink

    AI前线导读:本文是 Apache Beam实战指南系列文章 的第二篇内容,将重点介绍 Apache Beam与Flink的关系,对Beam框架中的KafkaIO和Flink源码进行剖析,并结合应用示 ...

  3. log4j2漏洞各大厂应对措施

    真是平地一声雷,一个超高级别的bug把所有厂商都炸醒了.本来是可以划水半天的大周五,程序员们都得起来升版本发布代码修复这个问题了.具体漏洞的危害和原理,其他的回答里已经写的够详细了,我就整理一下各个大 ...

  4. 漏洞复现----12、Apache Flink目录穿越漏洞(CVE-2020-17519 )

    文章目录 一.漏洞简介 二.漏洞复现 一.漏洞简介 Apache Flink 1.11.0中引入的更改,允许攻击者通过JobManager进程的REST接口读取JobManager本地文件系统上的任何 ...

  5. Apache Flink 集成 Apache Hudi 快速入门指南

    摘要:本文由阿里巴巴的陈玉兆分享,主要介绍 Flink 集成 Hudi 的最新版本功能以及快速上手实践指南.内容包括: 背景 环境准备 Batch 模式的读写 Streaming 读 总结 一.背景 ...

  6. CVE-2020-17518 Apache Flink 上传路径遍历漏洞复现

    Apache Flink 上传路径遍历漏洞复现 一.漏洞描述 Apache Flink 1.5.1 引入了一个 REST 处理程序,允许您通过恶意修改的 HTTP HEADER 将上传的文件写入本地文 ...

  7. Apache Log4j2 核弹级漏洞

    近日,Apache Log4j2 的远程代码执行漏洞刷爆朋友圈,该漏洞一旦被攻击者利用会造成严重危害.而且此次漏洞影响巨大,很多网站如百度等都是此次 Log4j 远程代码执行漏洞的受害者,很多互联网企 ...

  8. Log4j2核弹级漏洞线上修复方案!

    一.漏洞描述2月9日晚,Apache Log4j2反序列化远程代码执行漏洞细节已被公开,Apache Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利 ...

  9. 突发!Log4j 爆“核弹级”漏洞,Flink、Kafka等至少十多个项目受影响

    欢迎关注方志朋的博客,回复"666"获面试宝典 作者 | 褚杏娟 这两天,你熬夜应急了吗? 昨晚,对很多程序员来说可能是一个不眠之夜.12 月 10 日凌晨,Apache 开源项目 ...

  10. Log4j2突发重大漏洞

    长话短说吧. 相信大家已经被 Log4j2 的重大漏洞刷屏了,估计有不少小伙伴此前为了修 bug 已经累趴下了.很不幸,我的小老弟小二的 Spring Boot 项目中恰好用的就是 Log4j2,版本 ...

最新文章

  1. 一位IT從業人員的心路歷程
  2. 解决 Iframe跨域session 丢失问题
  3. 杀毒软件原理进阶阶段
  4. getsize java_Java ZipEntry getSize()用法及代码示例
  5. 2019.01.23【NOIP普及组】模拟赛C组总结
  6. DataGrid分页;指定列的总和和平均值;显示鼠标背景色;弹出式窗口;
  7. etcd3 安装与运维
  8. 从Photoshop无法启动DeNoise AI Mac作为插件的解决办法
  9. imagej软件分析划痕实验(计算划痕面积及伤口愈合百分比)
  10. 爬取斗鱼所有房间及直播源
  11. 电子设计竞赛应该如何准备?
  12. 扫雷游戏计算机版,扫雷经典版电脑版
  13. ECCV 2022 | AirDet: 无需微调的小样本目标检测方法
  14. 几种微弱信号处理电路
  15. 关系型数据库的ACID指的是什么?
  16. 全球及中国26二氟苯磺酰氯行业发展状况与前景趋势分析报告2022-2028年
  17. Thinkpad预装win10硬盘分区
  18. Recovering High Dynamic Range Radiance Maps from Photographs
  19. [PTA] 7-11 计算平均分
  20. Mavlink心跳/连接协议

热门文章

  1. 基于Protostuff的通用序列化、反序列化功能实现
  2. 页面置换算法LRU(最近最少使用)的Java实现
  3. 接口测试之发包工具介绍
  4. datatable的查询介绍
  5. ROS2 Galactic teb_local_planner
  6. SSD——样本正负比控制+多尺度检测 (目标检测)(one-stage)(深度学习)(ECCV 2016)
  7. 编程十年 (6):虚荣的C
  8. WebSocket 实现链接 群聊(low low low 版本)
  9. caffe安装编译问题-ImportError: No module named caffe
  10. 两个用于win7任务栏显示进度的dll