通常情况下开源组件风险的修复建议是升级版本。但是这样就够了么?近日,开源安全研究院研究员发现了风险修复里一些很有意思的点。

1.开源安全研究院先是对MeterSphere的1.18.0版本进行了开源组件的安全检测发现了存在风险并向MeterSphere提出了修复的建议,MeterSphere也对此表示了感谢。

2.随后绿盟发现MeterSphere开源持续测试平台的三处漏洞并上报,MeterSphere对此表示了感谢并且升级版本为1.18.1。

3.这时开源安全研究院开始思考为何最初并未发现这几处漏洞呢?随即对绿盟发现的XXE漏洞进行了复现,最终发现了问题Dom4j 2.1.3上。

4.在经过问题的验证后,开源安全研究院向Dom4j的作者提出了修复建议。随后得到作者的回复则是:出于对现有办法具备向后兼容性的特性的考虑,他认为目前没有更优的新办法来解决该项的修复问题。

5.组件的版本已经声称修复了,然而漏洞代码依旧存在且还能被使用,也就是说还存在风险。倘若不做代码的分析,还无法知道存在问题。其次向开源作者提出修复建议,但对方考虑向后兼容问题,暂时也不会对此进行修复。

所以开源组件风险修复,真的是升级版本就够了吗?

MeterSphere的扫描检测及建议

开源网安研究院通过对MeterSphere的最新版本1.18.0进行开源组件安全检测。发现引用了存在‘超危’、‘高危’安全风险漏洞的开源组件15个

对metersphere1.18.0提出了对以上开源组件更新,防止存在被利用风险的修改意见。

MeterSphere一站式开源持续测试平台1.18.0于2022年2月28日正式发布并对深圳开源互联网安全技术有限公司反馈的若干安全漏洞表示了特别鸣谢。

(原文链接:

https://mp.weixin.qq.com/s/JNTksqArR1d0kbOdbYIzjQ

MeterSphere漏洞通知及修复方案

2022年3月3日,LaiHan of NSFOCUS Security Team 发现了MeterSphere开源持续测试平台的三处漏洞,并向MeterSphere开源项目进行上报。漏洞包括:

1.   未授权XXE漏洞(使用SAXReader导致的未授权XXE攻击漏洞)

2.   Prometheus未授权访问漏洞(Prometheus组件未授权访问导致的敏感信息泄露)

3.   getMdlmage函数未授权调用漏洞

现MeterSphere版本升级为1.18.1。并且MeterSphere开源社区对LaiHan of NSFOCUS Security Team的及时反馈漏洞表示感谢。

(原文链接:

https://mp.weixin.qq.com/s/A4GpuBIIZZ7PptROIJJAaA)

为什么先前扫描未发现该漏洞?

开源安全研究院觉得很奇怪,为什么我们之前进行扫描检测时没有发现这个漏洞呢?

然后对绿盟发现的XXE漏洞进行了复现。最终发现问题出在Dom4j 2.1.3

但是Dom4j 2.1.3被认为是安全的,因为CVE-2020-10683漏洞已经被官方宣传修复。

Dom4j2.1.3 XXE XML外部实体注入漏洞思考

Dom4j 是一款开源的java 解析XML文件与数据的库(https://github.com/dom4j/dom4j)

在2020.6.6公开披露了一个CVE-2020-10683 默认配置XXE漏洞,随后官方在最新版2.1.3进行了修复,但是官方修复方案存在一些问题:
1、必须要求用户重写调用SAXReader 代码,才能避免XXE漏洞。

2、但是原有的用户调用SAXReader 的代码(通过构造函数创建对象)依然可以正常使用,且依然存在XXE漏洞。(Dom4j 官方并没有修复SAXReader 构造函数中禁用解析外部实体DTD)。

所以容易造成:用户得知需要升级有漏洞的Dom4j库,以为升级到了最新的2.1.3版本,就安全了,而没有修改自有代码中调用SAXReader 代码,最后的结果就是:即使升级了Dom4j,但是漏洞依然存在。

官方修复方案

1、Dom4j 2.1.3提供一个静态 createDefault关闭解析外部实体DTD。从而修复了该漏洞。(src/main/java/org/dom4j/io/SAXReader.java)

2、Dom4j 2.1.3 DocumentHelper.parseText(String text) 中调用 createDefault关闭解析外部实体DTD,表明也修复了该漏洞。
(src/main/java/org/dom4j/DocumentHelper.java)

3、官方修复后的建议:

a)   使用安全的SAXReader.createDefault() 创建 SAXReader对象。

b)   使用安全的DocumentHelper.parseText(String text)解析XML数据。

官方修复补丁:

https://github.com/dom4j/dom4j/commit/a822852

修复后存在的问题

现开源安全研究院发现官方修复方案存在的问题:

1、升级到了最新的2.1.3版本,用户必须修改使用代码,不然漏洞依然存在,原因在于Dom4j 官方并没有修复SAXReader 构造函数中禁用解析外部实体DTD。

SAXReader .read 方法中也没有禁用解析外部实体DTD。

问题验证:

1、继续使用SAXReader构造函数创建对象,使用Read方法,XXE依然存在:

2、使用官方建议 SAXReader.createDefault() 创建 SAXReader对象,规避了XXE

3、使用官方建议DocumentHelper.parseText(String text)解析XML数据,规避了XXE。

对于该组件的问题开源安全研究院向Dom4j提交了该漏洞,但是该组件作者出于对现有办法具备向后兼容性的特性的考虑,他认为目前没有更优的新办法来解决该项的修复问题。

(组件作者回复如下图)

现开源安全研究院总结并建议:

Dom4j 官方的修复方案,不完整,建议用户使用最新的修复后的
DocumentHelper.parseText与static createDefault。
而原有的用户调用代码,通过SAXReader()默认构造函数后,调用Reader却没有修复,或者没禁止用户使用构造函数调用,造成用户只升级Dom4j 而不修复自有调用代码,XXE漏洞依然存在。

建议:

1、 Dom4j 库官方继续修复,要么禁用旧的调用方式,要么在SAXReader()构造函数中禁用解析外部实体DTD。

2、 对于开源库使用者:在得知某个开源库有漏洞需要修复,不要简单的升级补丁后的开源库,而是需要进一步验证,自有代码调用最新的库时候,漏洞是否真正得到了修复。

开源安全

Gartner报告曾指出,在当前DevOps的模式下,应用程序中大部分的代码都是被组装出来的而不是开发出来的。有数据表明超过95%的组织在业务中有直接或者间接地使用了重要的开源软件。而Forrester Research的研究也表明,应用软件的百分之八十到百分之九十的代码来源于开源组件。因此开源组件的安全性也直接关系到信息系统基础设施的安全。

根据开源安全院的研究调查发现开源安全软件的安全性不容乐观。这也成为了近日软件供应链安全问题增长的重要因素。

开源安全研究院现展开对开源项目的安全分析研究,将从三个方向上对开源安全做出贡献。

(一)软件安全爱好者

可为软件安全爱好者提供更多开源项目的安全分析报告。与此同时开源安全研究院现搭建了一个免费的DevSecOps平台git.gitsec.cn,可为软件安全爱好者提供一个完整的DevSecOps实验环境。

(二)开源项目厂商

可以与开源项目厂商进行战略合作对开源项目存在的安全问题进行深入的交流合作,共同进步。

(三)创建开源项目安全交流社群

对开源项目及其安全感兴趣的开发者、厂商及专家提供交流平台,希望能共同维护开源生态平衡并共同进步。

(感兴趣的可以扫码进群)

开源组件风险修复,升级版本就够了吗?相关推荐

  1. 金融行业开源技术应用社区(FINOC)研讨实录:开源组件安全问题与升级方式

    科技云报道原创. 在开源成为全球趋势的今天,抢跑科技创新的金融机构成为开源技术的重度用户.然而,由于我国金融机构对开源软件的管理尚不完善,不具备较成熟的开源治理体系,金融机构在引入和管理开源软件时总会 ...

  2. 开源建站系统的开源组件风险

    在互联网迅速发展的今天,许多企业和个人的建立网站的需求在持续增加.在没有太多资金预算的情况下,唯有自己建站了.而目前建站分为开源建站和模板建站(也就是不开源建站)两种. 为什么选择开源建站系统? 如果 ...

  3. 开源组件XStream 修复11个漏洞并公开 PoC

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 XStream 发布新版本 1.4.16,修复了11个漏洞:CVE-2021-21341.CVE-2021-21342.CVE-202 ...

  4. 海云安SCA平台迎来新升级 助力企业全面透视开源组件安全风险

    本月初,最受欢迎的开源轻量级 Java 框架 Spring 被曝存在高危的远程控制0Day漏洞,这一事件让开源安全再次引发了IT行业的讨论和关注.自SolarWinds太阳风黑客攻击事件和Apache ...

  5. UCanCode发布升级版本E-Form++可视化源码组件库2011 第二版!

    UCanCode发布升级版本E-Form++可视化源码组件库2011 第二版! --- UCanCode有史以来最强大的版本发布! E-Form++可视化源码组件库企业版本16.01发布!(超过50万 ...

  6. 如何应对开源组件⻛险?软件成分安全分析(SCA)能力的建设与演进

    随着 DevSecOps 概念的推广,以及云原生安全概念的快速普及,研发安全和操作环境安全现在已经变成了近几年非常热的词汇.目前,在系统研发的过程中,开源组件引入的比例越来越高,所以在开源软件治理层面 ...

  7. 物联网开源组件安全:Node-RED白盒审计

    文|腾讯研发安全团队 Spine.martinzhou 背景 Node-RED是IBM开源的低代码物联网编排工具,在物联网领域有广泛应用,包括研华WISE PaaS.西门子Iot2000.美国groo ...

  8. 开源组件漏洞检查工具实践分析

    文章目录 Murphysec开源组件漏洞检查工具 介绍 检测原理 JetBrains IDE插件MurphySec Code Scan工具使用 介绍 支持功能 插件安装 插件配置 一键扫描 一键修复功 ...

  9. 开源组件ExcelReport 1.5.2 使用手册

    ExcelReport是一款基于NPOI开发的报表引擎组件.它基于关注点分离的理念,将数据与样式.格式分离.让模板承载样式.格式等NPOI不怎么擅长且实现繁琐的信息,结合NPOI对数据的处理的优点将E ...

最新文章

  1. Java实现xml和json互转
  2. spoj 179. Word equations (代码等式)
  3. Linux 初始化之 Systemd机制
  4. Druid 连接池的实用 配置详解
  5. boost::geometry模块Linestring相关的测试程序
  6. 中科大计算机是一流学科吗,安徽2017双一流学科排行榜:中国科技大学第一
  7. java win10 通知_如何在Java中创建Windows通知
  8. fastify 后台_如何使用Fastify启动和运行
  9. UVa 140 Bandwidth【枚举排列】
  10. win10安装python3_win10 64位肿么安装python3.x
  11. 国内首家生鲜电商平台要凉了:阿里曾参投,7月底已申请破产重组
  12. Scala + Intellij IDEA 环境搭建及编译、打包
  13. 【历史上的今天】3 月 1 日:个人计算机鼻祖问世;天涯社区上线;Shell 排序算法作者诞生
  14. 新GRE词汇按部就班的学习方法
  15. 微信小程序开发工作流程
  16. python 更换windows壁纸(简单)
  17. 诺基亚wp手机安装linux,1小时搞定 普通用户3步轻松更新WP8.1
  18. GO 重新进阶学习(四)
  19. 佛祖保佑 永无shell
  20. python将一张图片粘贴到另外一张图片上,按照指定坐标放置

热门文章

  1. 虚拟机VMware6.5将厚置备转成精简置备
  2. 一个贯穿图像处理与数据挖掘的永恒问题
  3. 谭浩强c语言课后习题笔记[第6章]
  4. 生英语视频信息在计算机内表现形式是,计算机专业英语 unit 2 Computer Architecture.ppt...
  5. springboot stopwatch
  6. android6.01升级弊端,手机系统升级带来的利和弊,你知道多少?
  7. 13省Cc8-打印十字图(小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示)
  8. JavaScript 内置对象 BigInt
  9. 关于图结构的相似度比较
  10. hdu_oj1847Good Luck in CET-4 Everybody!(巴什博弈)