写点什么

每 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:005538
用户头像
万佳 前InfoQ编辑

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

关注

评论 1 条评论

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

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

Sobit:将BRC20资产桥接到Solana ,加速铭文市场的火热

股市老人

苹果Mac电脑远程桌面连接推荐 Microsoft Remote Desktop正式版

mac大玩家j

远程办公 远程办公软件 Mac软件 远程工具

INFINI Gateway 如何防止大跨度查询

极限实验室

Gateway 极限科技 数据网关

测试开发 | 词嵌入(Word Embeddings):赋予语言以向量的魔力

测吧(北京)科技有限公司

测试

数据恢复:AnyMP4 Data Recovery激活中文版

mac大玩家j

数据恢复 数据恢复软件 Mac软件

测试开发 | TensorFlow:深度学习的引擎

测吧(北京)科技有限公司

测试

测试开发 | PyTorch:深度学习的艺术之选

测吧(北京)科技有限公司

测试

Sobit:将BRC20资产桥接到Solana ,加速铭文市场的火热

鳄鱼视界

软件开发

Geek_8da502

淘宝API接口:助力电商应用快速开发

tbapi

淘宝商品详情数据接口 淘宝商品列表数据接口 淘宝API 关键词搜索淘宝商品列表 关键词搜索淘宝商品接口

关于AIOps、AI人像写真、云上AI应用训练与推理的感想

老周聊架构

AI 年度总结

拼多多数据宝贝(掌握拼多多数据分析方法)

tbapi

拼多多 拼多多商品详情接口 拼多多API接口 拼多多商品采集方法

DevOps系列文章之Docker部署web ssh工具sshwifty教程。

百度搜索:蓝易云

Docker Linux Web SSH 云服务器

作息时间提醒软件推荐:MacBreakZ 5免激活最新版

胖墩儿不胖y

Mac软件 休息提醒工具

Sobit:将BRC20资产桥接到Solana ,加速铭文市场的火热

威廉META

Pixelmator Pro for Mac(图像编辑软件) v3.5.3激活直装版

mac

Pixelmator Pro 苹果mac Windows软件 图像编辑软件

如果让你来设计消息加密

EquatorCoco

信息安全 加密 消息加密

Typora for Mac(Markdown文本编辑器) 1.7.6中文激活版

mac

Typora 苹果mac Windows软件 Markdown编辑软件

2023平台云原生探索与实践

雪雷

DevOps 认证 #云原生 应用现代化

功能强大的PDF编辑器推荐:Acrobat Pro DC 2023 最新中文版

胖墩儿不胖y

PDF pdf编辑器 Mac软件分享

C 语言中布尔值的用法和案例解析

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

一文聊透 Linux 缺页异常的处理 —— 图解 Page Faults

bin的技术小屋

Linux 操作系统 内存管理 内核

前端 JS 安全对抗原理与实践

EquatorCoco

前端 接口 js 接口安全

测试开发 | 命名实体识别(NER):解锁文本中的信息宝藏

测吧(北京)科技有限公司

测试

终端闲思录(4)- 关于终端的哲学呓语

蓬蒿

wsl下面的子系统启用systemctl教程。

百度搜索:蓝易云

Linux windows wsl 云服务器 systemctl

云原生中间件 MongoDB 的集群架构与设计

老周聊架构

mongodb 云原生 年度总结

生成式AI:创造力助力者还是替代者?

聊聊kube-scheduler如何完成调度和调整调度权重

不在线第一只蜗牛

架构 集群 Kubernetes 集群

测试开发 | 自然语言处理基础:从文本到智能

测吧(北京)科技有限公司

测试

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