HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

每 1000 行代码有 14 个安全缺陷,开源软件的安全令人堪忧

  • 2020-04-08
  • 本文字数:2732 字

    阅读完需:约 9 分钟

每1000行代码有14个安全缺陷,开源软件的安全令人堪忧


当今,开源软件已经成为软件世界的重要组成部分。根据 Gartner 统计,99%的组织在其 IT 系统中使用了开源软件。


今年 3 月,安全公司 WhiteSource 发布了一份《开源安全年度报告》。报告表明,2019 年,公开披露的开源安全漏洞数量再创新高,总数为 6100 个。与 2018 年相比,开源安全漏洞的数量增长近 50%。这份报告表明,开源软件的安全问题非常严重。


更关键的是,开源软件的安全不仅关系自身,而且影响整个现代软件开发。“可以说,现代软件大多数是被‘组装’出来的,不是被‘开发’出来的”。事实上,现代软件开发越来越像工业生产和制造,原材料就是开源软件,加上自己写的业务代码,最后“组装”出一个软件系统。


在奇安信代码安全事业部总经理黄永刚看来,开源软件已经成为构建网络空间最基础的“砖头瓦块”,无处不在。“开源软件已经成为信息系统开发和建设的核心基础设施,开源软件安全问题应该上升到基础设施安全的高度来对待。”他说。

从 OpenSSL“心脏出血”漏洞说起

2014 年,开源软件OpenSSL Heartbleed(心脏出血)漏洞席卷全球。该漏洞不仅让整个中国互联网为之一颤,而且导致全球超过三分之二的网站“心脏出血”,可谓影响深远。据悉,这个 bug 非常严重,导致全球互联网大量私钥和其他加密信息处于暴露危险下,受影响严重的系统甚至可以从服务器中直接获取用户密码。



2017 年,美国征信巨头Equifax发生数据泄露,涉及近 1.45 亿用户。事后,该公司不仅被重罚 7 亿美元,而且 Equifax CEO 也引咎辞职。据悉,这起数据泄露事件的原因是黑客利用 Struts 开源软件的漏洞实施攻击。


无论是 OpenSSL“心脏出血”漏洞,还是 Equifax 数据泄露,都是因为开源软件出现安全问题。近年来,开源软件漏洞造成的安全事件越来越多,影响巨大,让人们开始认识到开源软件安全的严重性。


奇安信代码安全事业部总经理黄永刚表示,从另一个角度看,行业客户对安全的思考越来越系统化,很多客户开始关注信息系统全生命周期的安全。“安全开始左移,大家开始重视从源头上做好安全工作。开源软件是软件开发的原材料,是我们进行信息系统开发和建设要把住的第一道安全关口。”他说。

两个重大发现

发现 1:每 1000 行开源软件代码中就有 14 个安全缺陷,每 1400 行开源软件代码中就有 1 个高危安全缺陷。


发现 2:开源软件之间的关联依赖,导致开源软件的漏洞管理非常复杂。


2015 年,奇安信代码安全事业部发起“开源项目检测计划”。目前,该项目已经对 3000 多款开源软件进行了安全检测,并帮助许多开源项目修复了代码安全缺陷,包括 Google、Facebook、腾讯、阿里等旗下的开源项目。


据悉,通过开源项目检测计划,团队发现开源软件的安全问题确实非常严重。相关数据分析和统计显示,开源软件的代码安全缺陷密度是 14.22/KLOC,高危安全缺陷密度为 0.72/KLOC。换句话说,每 1000 行开源软件代码中就有 14 个安全缺陷,每 1400 行开源软件代码中就有 1 个高危安全缺陷。


黄永刚说,“另一个发现是,开源软件之间的关联依赖,导致开源软件的漏洞管理非常复杂。如果不用系统化的工具来做这件事,几乎不可能完成。”


2019 年,其团队检测了 935 个最新的物联网设备固件,并针对这些固件中所使用的开源软件和安全问题进行了分析。经过分析,他们发现:最新出厂的物联网设备中,还有 5%的设备使用了存在 Heartbleed(心脏出血)漏洞的 OpenSSL 版本,5 年前的超级漏洞,依然存在于最新的物联网设备中。


因此,对开源组件的梳理和漏洞分析,一定需要系统化的方法和自动化的工具,才能做到可管理、可持续,不留死角。


而开源软件最值得关注的安全问题是其放大作用。简言之,一个开源软件出现漏洞,会导致依赖它的其他开源软件受到影响,而且层层关联依赖,这就导致非常隐蔽和复杂的攻击面。


举个例子,Log4j 有一个安全漏洞——CVE-2017-5645。由于直接依赖 Log4j 的开源软件有 4000 多个,那么这 4000 多个开源软件也会受到 CVE-2017-5645 漏洞的影响。更恐怖的是,还有 46000 多个间接依赖 Log4j 的开源软件,它们则是更隐蔽的受害者。

三大原因

在软件开发上,无论是技术方面,还是流程和管理方面,任何一点疏忽都会导致开源软件出现安全问题。


具体说来,奇安信代码安全事业部总经理黄永刚总结出三方面的原因:


1.开源软件开发者自身的技术能力和安全开发知识存在问题,导致开发的代码中有安全缺陷;


2.大多数开源项目的开发缺少 SDL(安全开发生命周期)的流程和工具。并且,很多开源项目能使用的资源很有限,缺乏专业的代码安全分析工具,而大部分专业的代码安全分析工具都是收费的,价格昂贵;


3.攻击者对开源生态的攻击,比如向开源库中注入恶意代码、向包管理器仓库投放恶意组件等。


如何提高开源软件的安全性?黄永刚认为,从技术上,开源项目需要更系统地引入保障应用安全的流程、方法和工具,比如基于 SDL 的流程和理念管理开源项目的开发过程,并对开源项目开发者进行安全开发知识的普及。其次,使用源代码静态分析、动态安全测试、交互式安全测试等工具,并对开源项目开发者提交的代码进行全面的安全测试等。


从非技术角度来说,“我觉得,开源技术社区和安全技术社区可以加强交流和合作,形成互动和反馈,互相促进。开发和安全的良性互动,是解决软件安全问题非常重要的前提。”他说。

五条安全建议

针对软件开发者和企业,黄永刚建议从引入控制、资产梳理、风险识别、漏洞告警和合理修复五个方面加强开源软件的安全治理。


1.引入控制。企业应规范开源软件的引入流程,建立开源软件安全引入和退出机制。同时,对开源软件的引入需要加入安全评估因素,不仅需要评估项目团队引入的开源软件是否存在公开的漏洞,是否存在开源法律风险,而且企业应进行完整性验证,开源软件是否来自官方,避免使用被篡改的开源软件。


2.资产梳理。无论是软件开发者,还是企业,它们在软件开发过程中会引入大量开源软件。然而,企业的安全管理者和开发管理者常常不清楚自身的信息系统到底引入多少开源软件,引入了哪些开源软件。开源软件有着层层嵌套的依赖关系,软件开发者或企业很难通过人工方式进行梳理。因此,建议使用专业的自动化工具识别软件系统中含有哪些开源软件以及开源软件之间的关联关系,形成企业开源软件可视化资产清单。


3.风险识别。软件中使用的开源软件可能存在已知漏洞,且这些开源软件背后调用或依赖的其他开源软件也可能存在已知安全漏洞。在软件开发过程中,企业应及时发现存在漏洞的开源软件版本并进行升级。


4.漏洞告警。在软件运行阶段,企业应监控开源软件漏洞情报信息,及时发现开源软件的最新漏洞信息,并进行应急响应。


5.合理修复。绝大多数的开源软件是通过版本更新实现漏洞修复的。对于不能通过升级新版本或打补丁来修复漏洞,企业应引入专业的漏洞研究队伍,定制漏洞修复方案。


2020-04-08 07:005460
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 356.0 次阅读, 收获喜欢 1800 次。

关注

评论 1 条评论

发布
用户头像
的确开源软件的维护和安全性在一些方面不及专业性的软件,着体现了开源软件社区的重要性,我们应该推动社区的建设和运营。

2020-04-08 17:46
回复
没有更多了
发现更多内容

工作卷,是主动选择还是迫于无奈?

王中阳Go

golang 微服务 面试题 大厂面经 Go进阶

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

加密眼界

一文读懂 Pencil 积分,打开 Pencils Protocol 生态权益大门

股市老人

鸿蒙HarmonyOS实战-ArkUI组件(Canvas)

蜀道山

鸿蒙 架构 HarmonyOS 鸿蒙系统 鸿蒙 Ability

鸿蒙HarmonyOS实战-ArkUI动画(布局更新动画)

蜀道山

鸿蒙 架构 HarmonyOS 鸿蒙系统 鸿蒙 Ability

linux主要是干嘛的

百度搜索:蓝易云

云计算 Linux 运维 服务器 云服务器

淘宝开放平台API接口:淘宝店铺订单列表接口丨淘宝店铺订单详情接口丨淘宝店铺订单物流接口

tbapi

淘宝店铺订单接口 淘宝店铺订单详情接口 淘宝店铺订单物流接口

明道云HAP成功通过了AWS 的 FTR 认证

明道云

云服务器的租用价格

百度搜索:蓝易云

云计算 运维 服务器 云服务器 ECS

linux是什么时候诞生的

百度搜索:蓝易云

Linux 运维 操作系统 服务器 云服务器

linux是什么语言开发的

百度搜索:蓝易云

云计算 Linux 运维 C语言 云服务器

什么是正向控制,反向控制?

玄兴梦影

正向控制 反向控制

Pandabuy VS Wegobuy 淘宝代购系统

tbapi

淘宝代购系统 Pandabuy wegobuy

Pencils Protocol Valut 板块:实现杠杆挖矿收益&一鱼多吃

石头财经

Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景

云物互联

云计算 负载均衡 网络

linux是什么架构

百度搜索:蓝易云

云计算 Linux unix 运维 云服务器

银行核心背后的落地工程体系丨混沌测试的场景设计与实战演练

PingCAP

数据库 开源 分布式 TiDB

线上展厅是什么?和传统展厅相比有什么区别和优势?

点量实时云渲染

云展厅 3D展厅 线上展厅

OpenHarmony公开课 - 开发者手机OTA升级适配

Laval小助手

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

BlockChain先知

大模型一体机是在“卖盒子”吗?

脑极体

AI

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

股市老人

PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来

PingCAP

数据库 分布式 TiDB

多点 Dmall x TiDB:出海多云多活架构下的 TiDB 运维实战

PingCAP

数据库 分布式 TiDB 多云

每1000行代码有14个安全缺陷,开源软件的安全令人堪忧_开源_万佳_InfoQ精选文章