SPARK 应用如何快速应对 LOG4J 的系列安全漏洞

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: SPARK 应用如何快速应对 LOG4J 的系列安全漏洞

image.png

大家好,我是明哥!

1. CDH/HDP/CDP 等大数据平台中如何快速应对 LOG4J2 的JNDI系列漏洞

在前段时间发表的博文 “CDH/HDP/CDP等大数据平台中如何快速应对LOG4J的JNDI系列漏洞” 中,我们描述了 CDH/HDP/CDP 等大数据平台中如何快速应对 LOG4J 的 JNDI 系列漏洞,其核心关键是:

  • 正式的最终修复方案:是等待大数据平台供应商如 Cloudera 提供的正式的修复包,但由于大数据平台供应商需要在大数据平台底层的多个开源组件都有了正式修复包后,才能整合测试并发包,所以一般进度相对落后;
  • 快速的临时修复方案:由于大数据平台底层的众多大数据组件,在使用 LOG4J 时,只使用了 LOG4J 的基本功能,并没有使用到 LOG4J 的 “JNDI Lookup plugin support” 功能,所以可以粗暴删除大数据平台底层众多JAR包中的危险类 JndiLookup.class;
  • 辅助工具包:Cloudera 在 GitHub 上提供了系列脚本,来辅助删除 CDH/HDP/CDP 等大数据平台上的危险类 JndiLookup.class,大家可以去 GITHUB 自行下载,GITHUB 下载链接如下:https://github.com/cloudera/cloudera-scripts-for-log4j.git

2. Flink 应用如何应对 LOG4J2 的JNDI系列漏洞

在前段时间发表的博文 “CDH/HDP/CDP等大数据平台中如何快速应对LOG4J的JNDI系列漏洞” 中,我们描述了大数据计算组件 FLINK,如何快速应对 LOG4J 的 JNDI 系列漏洞,其核心关键是:

  • Flink1.11 及以后版本,使用的是 LOG4J2.X系列,会受到上述JNDI系列漏洞影响;Flink 1.11 以前的版本,由于使用的是 LOG4J1.X 系列,不会受到上述JNDI系列漏洞影响;
  • flink 组件正式的修复方案是升级flink: 得益于 flink 社区快速即使的响应和修复,目前 flink 社区已经发布了针对 1.11/1.12/1.13/1.14 系列的修复版本,大家可以根据自己的情况,升级到同系列下最新版本即可修复该问题;
  • 如果线上应用因为各种原因,不能或不方面升级 Flink,大家仍可以采用临时修复方案,即删除JAR中 log4j-core 里的 JndiLooup.class,以达到禁用 JNDI 的效果;

640.png

640.png

3. SPARK 与 LOG4J 的系列安全漏洞

在前段时间发表的博文 “CDH/HDP/CDP等大数据平台中如何快速应对LOG4J的JNDI系列漏洞” 中,我们指出了:

  • spark 的最新版本是3.2.0,目前其依赖的还是log4j1.2.17,即log4j1.x系列,所以不受上述 LOG4J JNDI 系列漏洞影响 (截至到 01/19/2022)。

但这是否代表,SPARK 使用的 LO4GJ 就没有安全漏洞呢?答案是否定的。

  • 从以下 maven的官方截图可以看出,SPARK3.2 底层有多个安全漏洞,其中有两个是跟 LOG4J 相关的,即:CVE-2021-4104 和 CVE-2019-17571;(spark2.x 和spark3.x目前使用的都是 log4j1.x);
  • 点开连接,可以看到这两个CVE的级别,分别达到了 HIGH 和 Critical,所以同样是高风险,是需要应对的;
  • 640.png640.png

640.png


640.png


640.png


4. SPARK 应用如何应对 LOG4J 的系列安全漏洞

仔细分析下这两个高危漏洞 CVE-2021-4104 和 CVE-2019-17571:

  • CVE-2019-17571:Log4j 1.2 中包含一个 SocketServer 类,该类易受不可信数据反序列化的影响,当侦听不可信网络流量以获取日志数据时,该类可被利用与反序列化小工具结合使用以远程执行任意代码,这会影响从 1.2 到 1.2.17 的 Log4j 版本;
  • CVE-2021-4104: Log4j 1.2 中包含一个 JMSAppender 类, 该类易受不可信数据反序列化的影响,当攻击者对 LOG4J 配置文件有写权限时,可以通过更改配置文件指定使用 JMSAppender,达到类似 CVE-2021-44228 的远程执行任意代码的效果。(底层机制是通过指定 TopicBindingName 和 TopicConnectionFactoryBindingName,使得 JMSAppender 发起 JNDI 请求);
  • 当未使用 Log4j 的 SocketServer 类和 JMSAppender 类的功能时,不受此漏洞影响,亦即默认情况下只使用 Log4j local logging时,是不会触发风险的的;
  • 两外,Apache Log4j 1.2 系列在 2015 年8月份后,官方不再维护,各应用需要升级使用 LOG4J 2.X;

那么 SPARK 如何应对 LOG4J 的上述系列安全漏洞呢?

  • 不使用 Log4j 的 SocketServer 类创建 Socket 服务,同时也不主动使用 Log4j 的 JMSAppender,同时做好 LOG4J 的配置文件的权限管理,防止被篡改使用 JMSAppender;
  • 为彻底杜绝问题,也可以把问题类从jar包中删除掉:包含 org/apache/log4j/net/JMSAppender.class 和 org/apache/log4j/net/SocketServer.class;
  • 正式的永久解决方案:等待 SPARK 官方的升级修复包,Spark官方已经宣布将在Spark3.3.0 版本升级使用log4j2的2.x 系列,但该版本目前还没有正式发布;

640.png

5. 附录参考链接

砖厂官方相关链接

log4j 官方相关链接

HPE 链接

CVE 问题复现链接


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3月前
|
分布式计算 数据处理 Apache
Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
【10月更文挑战第10天】Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
412 1
|
14天前
|
存储 人工智能 JSON
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
RAG Logger 是一款专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、检索结果记录、LLM 交互记录和性能监控等功能。
44 7
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
|
5月前
|
Java API 开发者
你的应用是不是只有service_stdout.log?
本文记录了logback-spring.xml文件不生效问题的整体排查思路。
|
4月前
|
机器学习/深度学习 存储 监控
Elasticsearch 在日志分析中的应用
【9月更文第2天】随着数字化转型的推进,日志数据的重要性日益凸显。日志不仅记录了系统的运行状态,还提供了宝贵的洞察,帮助企业改进产品质量、优化用户体验以及加强安全防护。Elasticsearch 作为一个分布式搜索和分析引擎,因其出色的性能和灵活性,成为了日志分析领域的首选工具之一。本文将探讨如何使用 Elasticsearch 作为日志分析平台的核心组件,并详细介绍 ELK(Elasticsearch, Logstash, Kibana)栈的搭建和配置流程。
442 4
|
1月前
|
运维 监控 Cloud Native
一行代码都不改,Golang 应用链路指标日志全知道
本文将通过阿里云开源的 Golang Agent,帮助用户实现“一行代码都不改”就能获取到应用产生的各种观测数据,同时提升运维团队和研发团队的幸福感。
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
61 5
|
2月前
|
存储 SQL 监控
|
2月前
|
自然语言处理 监控 数据可视化
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
62 2
|
5月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决