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

Flink高危漏洞 (CVE-2020-17518/17519) 修复指南_第1张图片

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

b561010b0ee741543c3953306037f00d7a9f0801
a5264a6f41524afe8ceadf1d8ddc8c80f323ebc4

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

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

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

Flink高危漏洞 (CVE-2020-17518/17519) 修复指南_第2张图片

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

Flink高危漏洞 (CVE-2020-17518/17519) 修复指南_第3张图片

3.编译打包

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

Flink高危漏洞 (CVE-2020-17518/17519) 修复指南_第4张图片

4.替换jar包

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

四、总结

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

你可能感兴趣的:(源码分析,踩坑集,大数据)