Flink高危漏洞 (CVE-2020-17518/17519) 修复指南

2024-09-03 11:38

本文主要是介绍Flink高危漏洞 (CVE-2020-17518/17519) 修复指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    • 一、背景
    • 二、修复方法
    • 三、详细步骤
        • 1.准备flink源码
        • 2.找到修复的commit
        • 3.编译打包
        • 4.替换jar包
    • 四、总结

一、背景

​ 国家信息安全漏洞库(CNNVD)收到关于Apache Flink安全漏洞(CNNVD-202101-271、CVE-2020-17519)(CNNVD-202101-273、CVE-2020-17518)情况的报送。成功利用漏洞的攻击者,可在未授权的情况下,构造恶意数据执行任意文件读取或文件写入攻击,最终获取服务器敏感性信息或权限。Apache Flink 1.5.1 - 1.11.2版本均受此漏洞影响。目前,Apache官方已经发布了版本更新修复了该漏洞,建议用户及时确认产品版本,尽快采取修补措施。

Apache Flink安全漏洞(CNNVD-202101-271、CVE-2020-17519):

https://lists.apache.org/thread.html/r6843202556a6d0bce9607ebc02e303f68fc88e9038235598bde3b50d@%3Cuser.flink.apache.org%3E

Apache Flink安全漏洞(CNNVD-202101-273、CVE-2020-17518):

https://lists.apache.org/thread.html/rb43cd476419a48be89c1339b527a18116f23eec5b6df2b2acbfef261@%3Cuser.flink.apache.org%3E

上面一段话粘贴过来的,详情:https://it.cztgi.edu.cn/2021/0113/c1751a49194/page.htm

二、修复方法

  • 升级Flink版本至1.11.3及以上

  • 就地修复漏洞

    网上大多是描述有这个漏洞,只告诉你升级可以解决,很少告诉你就地解决的方法。但是某些情况下,升级的代码可能有点多,在之前的版本上做了较多的定制开发,或者环境适配比较麻烦,或者担心新版本带来未知的问题,所以,这里选择就地修复漏洞的方法,此教程也适合小白。

三、详细步骤

这里以flink1.11.1版本为例进行修复

1.准备flink源码

flink1.11.1源码:https://github.com/apache/flink/archive/release-1.11.1.zip

2.找到修复的commit

由于此次的修复比较简单,就不去下载flink的全量仓库代码来查找对应修复漏洞的pull request了,这样比较慢,对于代码量比较大的修复,还是建议clone整个仓库下来。

点开最上面的两个邮件列表链接,里面包含commit id

微信图片_20210119215135.png

两个漏洞对应的commit分别为:

b561010b0ee741543c3953306037f00d7a9f0801
a5264a6f41524afe8ceadf1d8ddc8c80f323ebc4

找到对应的commit id再到github找到对应的代码变更,根据commit id拼接得到url:

https://github.com/apache/flink/commit/b561010b0ee741543c3953306037f00d7a9f0801

https://github.com/apache/flink/commit/a5264a6f41524afe8ceadf1d8ddc8c80f323ebc4

微信图片_20210119215723.png

实际有用的代码改动就一行,其余所有的test类可以不用管,把两个url对应的commit改动到自己的flink1.11.1版本上

微信图片_20210119220034.png

3.编译打包

两个漏洞对应的修复其实就2行代码,都属于flink-runtime模块下的代码,所以,只要把这个模块重新打包后替换生产即可。这里一定要注意!flink安装包中,并没有flink-runtime-xxxx.jar,flink把核心的一些包都打在了flink-dist_2.11-1.11.1.jar中,所以,这里要编译flink-dist模块

微信图片_20210119220731.png

4.替换jar包

把最后编译生成的flink-dist_2.11-1.11.1.jar包替换到所有flink节点的$FLINK_HOME/lib目录下

四、总结

这里是给不太熟悉apache项目的同学一个简单的漏洞修复教程。中间有两个地方花了点时间,一是在找漏洞对应github仓库pr的时候,在社区jira上面有一个没搜到;二是打包的时候忙着打flink-runtime模块而不是flink-dist模块;对于这种小修改,能不升级版本就不升级,尽量最小化风险,希望能帮到你。

这篇关于Flink高危漏洞 (CVE-2020-17518/17519) 修复指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132866

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke