面向开源软件的安全风险分析与防范(作者:袁豪杰,赵冉,唐刚)

回贴
回帖数 1
阅读数 888
发表时间 2024-04-24 17:05:11
🦉
阿道 楼主

目前,网络化、智能化、数字化浪潮席卷全球,我国同步大力推进以 5G、车联网、工业互联网等为代表的新兴融合领域基础设施建设,软件在各行各业、各个领域的应用也随之不断丰富深化。与此同时,现代网络和软件越来越依赖开源技术的广泛普及,大型互联网公司向开源社区开放专有软件创新已成为国际惯例,开源软件(Open Source Software,OSS)作为全球软件开发的基石,已是产业发展、数字化与信息化变革的重要技术来源。


开源软件是通过特定类型的许 证(如MPL许可证)发布的软件,这种许可证能让最终用户合法地查看、修改和分发软件所使用的 源 代 码。以 Linux、Apache、Android、Git、Hadoop、MySQL、Python 等为代表的开源软件在全球广泛普及,快速发展的云计算、大数据和人工智能等也得益于 ROS、Tensorflow、Pytorch等开源软件的发展。据美国 Forrester Research 公司估计 ,全球 80% 的软件包含开源组件,同时 Github 的 2021 年度报告显示,平台开发者数量从 2018 年的 3 100 万增至 2021 年的 7 300万,而 2018 年的新用户数比前 6 年的新用户数总和还要多。并且在过去的 6 年里,Github 平台首次开源项目贡献者数量,以 28% 的年平均增长率从近 70 万增至 305 万。总的来看,开源软件的发展已完成由个人兴趣到行业驱动的转变,成为全球软件开发的基础。


同 时,2021 年我国开源软件开发者已达755 万人,华为、阿里等公司参与开源项目的开发者人数均列居全球前 10 位,预计到 2030 年,我国将成为世界上最大的开源项目应用市场 。此外,开源软件在我国电信和互联网、党政办公、网络安全等领域应用比例超过 80%,教育培训、医疗健康、金融服务等领域应用比例近 70%,已成为我国软件生态不可或缺的组成部分。


开源软件的发展越迅猛,其所带来的安全风险越不容忽视。然而现有针对开源软件安全风险的研究多从宏观管理侧展开,其对应的防范措施也不包含技术面防范措施,此外,针对开源软件在关键信息基础设施这一重要应用领域的风险防范研究也有待补充。结合开源软件自身特性和发展历程,综合开源软件在各个场景的应用来研究分析其对现代社会、技术行业的影响,总结梳理开源软件带来的安全风险并提出应对措施,特别是从监管侧出发,开展关键信息基础设施中开源软件的安全风险防范研究,并依靠现有开源平台给出技术侧风险防范研究思路,对保障我国开源软件安全、网络空间安全乃至国家安全具有重要意义。


1.开源软件风险分析

随着开源软件应用范围逐渐扩大,特别是在关键信息基础设施中被广泛采用,开源软件所带来的安全风险也日益严峻,大致可分为以下几个方面 。


1.1 供应链安全风险

当下,开源软件供应链中的主要角色为受西方把控的商业科技巨头、开源基金会、开源社区及代码托管平台,其中商业科技巨头和开源基金会大多把持着开源社区及代码托管平台,在开源软件供应链中占据龙头地位。我国开源生态整体水平较弱,国内厂商出于成本、安全、质量、效率的综合考虑,大多直接参与到受国外主导,尤其是受美国主导的成熟开源生态中,但国外开源软件的监管受其主权影响往往会带来不可控的供应链安全风险 。在开源基金会方面,Apache 基金会明确表明遵循美国出口管制条例,Mozilla 基金会则表示其司法管辖权归属美国加利福尼亚州,RISC-V 基金会也声明其司法管辖权在美国特拉华州;在开源平台方面,GitHub、SourceForge 及 Google Code 等代码托管平台均明确遵守美国出口管制条例,且司法管辖权在美国加利福尼亚州。受美国政府影响,2020 年 8 月,Docker 宣布被美国列入实体清单的个人和组织无法使用 Docker 旗下的服务,如DockerEE 和 DockerHub。综上,在全球开源软件供应链中自主性较差、依附性较强、处于弱势地位的国家,一旦供应链“命门”被别人掌握,随时可被断供制裁,造成重大安全风险 。


1.2 开源软件源代码安全风险

开源软件在广泛普及的同时,其源代码自身带来的安全风险影响也随之扩大,可总结为以下 3 个方面。

1.2.1 开源软件代码安全开发规范应用不足,安全漏洞数量居高不下

开源软件具有开放、低成本、自由参与、广泛传播等特性,在开源软件的更新迭代过程中,不同时期参与的开发群体,其自身技术能力和安全意识参差不齐,加上开源平台或社区并不对开源代码的安全性进行审核,因此开源软件源代码往往更容易爆发漏洞。据奇安信《2021中国软件供应链安全分析报告》,奇安信代码安全实验室在 2020 年对 2 001 个自主开发的软件源代码进行了安全检测,检测结果显示源代码的安全风险点密度约为 10 个 / 千行,高危风险点密度约为 1 个 / 千行;同期对 1 300 多个开源软件源代码所进行的检测结果显示,开源软件整体风险点密度为 15 个 / 千行,高危风险点密度为 1 个 / 千行。在高危风险点密度大致相等的情况下,开源软件的源代码风险点密度更高,更容易爆发安全漏洞。

1.2.2 开源代码漏洞影响范围和危害难以估量

由于开源软件在众多行业领域内广泛应用,不同开源软件形成你中有我、我中有你的复杂关系,导致开源软件的使用比想象中更广泛,一旦爆发漏洞,其造成的危害远超人们预期。


有研究表明,一半以上的企业、政府机构、非营利组织等使用的开源组件包含漏洞 。据奇安信报告,在其 2020 年调研的涉及公共、金融、电信、能源等重要行业的 2 557 个软件中,均有开源软件的存在。因此,当某一个开源软件或组件爆发漏洞时,其覆盖面往往超过人们预期。事实上,前述 2 557 个软件中,约 90% 的软件存在已知的开源软件漏洞,约 80% 的软件存在已知的高危漏洞,约 70% 的软件存在已知的超危漏洞。2014 年 4 月,开源组件 OpenSSL 被发现存在心脏滴血漏洞(Heartbleed),且该漏洞至少从 2012 年 5 月所发布的版本就已经存在,攻击者可利用该漏洞获取可能包含了证书私钥、用户名、用户密码、用户邮箱等敏感信息的数据,在近两年的时间内,该漏洞造成的影响根本难以估量。2021 年 12 月,开源组件 Apache Log4j2被发现存在远程代码执行高危漏洞(Log4Shell),由于 Apache Log4j2 组件性能好、利用门槛低,该漏洞短时间内席卷全球,Steam、推特、亚马逊等多家公司或服务平台受到该漏洞影响。综上,一旦不能及时处理开源软件高危漏洞,将很有可能威胁到整个网络空间,甚至危害国家安全。


1.2.3 开源软件可随时演变为网络攻击武器

由于众多开源软件使用者存在“开源等于安全”的错误理念,导致使用者在下载更新开源软件时,往往忽略开源软件自身存在的风险,同时维护者可随时修改代码,将其作为网络攻击媒介。开源 Unix 系统管理工具 Webmin 曾被发现存在远程代码执行高危漏洞,且该漏洞并非无意的编码错误,而是开发人员恶意修改代码所导致。同时,在最近的俄乌冲突中,Github平台node-ipc软件包被发现人为注入恶意代码,该恶意代码可根据 IP 地址定向删除俄罗斯地区用户的文件。

1.3 开源软件管理安全风险

除供应链断供制裁风险、代码安全风险外,在开源软件全生存周期中,还存在着安全责任归属不明、用户安全能力和安全意识不足、末端关联资产排查不清等管理安全风险。

1.3.1 安全责任归属不明

通常,开源社区或平台不承担开源软件的漏洞安全修复责任,而软件使用者同样不承担软件安全责任,仅仅负责维护其自身设备或应用,这使得开源软件安全责任归属不明。在不承担安全责任的基础上,大多数开源软件使用者很难对使用的开源软件进行高质量的安全审计,一旦开源软件存在漏洞,只能被动等待开源软件平台方或维护方主动发布修补通知,导致修复或加固工作滞后。此风险叠加断供制裁风险,将会对我国网络空间安全乃至国家安全造成更加严重的威胁。

1.3.2 用户安全能力和安全意识不足

开源社区的松散式开发维护模式并不对代码的安全机制进行全面审核,使得开源软件能够较为容易地被人为置入后门或恶意程序,而对使用开源软件的用户而言,由于缺少安全风险信息跟踪能力,针对开源软件安全风险防范和修复存在明显的滞后性,严重威胁相关系统的安全运行。此外,开源软件的自由属性使得大多数活跃在开源社区或平台的用户往往注重编程能力培养,而忽视安全能力提升,叠加开源软件的主要使用厂商或贡献厂商往往倾向于忽视安全方面资源经费投入,使得开源软件安全风险防范能力无法有效提高 。

1.3.3 末端关联资产排查不清

目前,商业软件供应商通常在未做安全验证的情况下直接引用开源软件,并将其集成和开发至商业软件产品中,导致企业用户信息系统中被动地引入了相关组件。开源软件来源合法性和安全测试验证机制缺失,用户在应用相关产品时存在不可知、不可控的安全风险。在开源软件的开发和使用过程中,不同开源软件之间的复杂依赖关系使得绝大多数厂商无法准确梳理其自身的开源软件使用情况 。一方面,软件开发者可能疏于管理,使得已存在漏洞的开源软件代码被整合至新版本软件;另一方面,使用者可能疏于统计,无法准确排查存在风险的开源软件在其设备资产中的具体部署情况。上述情况均会带来一定程度的风险隐患。

2.开源软件风险防范

针对前文所总结的开源软件供应链安全、源代码安全、管理安全等安全风险,本文在政策面上提出打造开源网络安全生态、建设国家级开源平台和项目以发展促安全、面向关键信息基础设施开展开源软件网络安全专项整治等安全防范措施;在技术面上依托开源平台开展软件源代码分析,实现软件缺陷及漏洞预测。最终形成如图 1 所示的“政策 + 技术”双驱动开源软件网络安全防范体系。

图 1 “政策 + 技术”双驱动开源软件网络安全防范体系

2.1 政策面风险防范措施

2.1.1 打造开源软件网络安全生态

开源软件网络安全生态脱胎于开源软件生态,主要是为开源软件营造安全可靠的发展环境。在开源软件成长周期中,商业科技公司为充分利用开源软件带来的诸多优势,会围绕开源软件进行业务拓展,同时部分开源软件项目也是基于商业利益驱动,进而形成“商业 + 开源”的利益共同体,演化为各种开源软件生态。基于开源软件生态的成长历程,我国开源软件网络安全生态的构建需要 3 方面共同发力。


一是发起成立全球知名的开源基金会。开源基金会是为开源软件发展提供日常的运营、管理及资金支持的非营利性组织,是生态的重要基石。同时,开源软件基金会为商业公司和开源软件开发者打造交流、合作的平台,自身掌握大量开源代码,为多个重要领域的应用软件提供服务。例如,国外著名的 Apache 基金会收录了 Tomcat、Hadoop 等知名开源项目,推动 Web服务和大数据的发展,OpenStack 基金会旗下的OpenStack 项目则是目前应用最为广泛的云计算解决方案。目前我国已成立中国开源云联盟、开放原子开源基金会等组织,助力 XuperChain、OpenHarmony 等开源项目的发展,但抢占全球开源话语权,构建开源软件网络安全生态,尚需打造更加知名的基金会,并培育更多开源项目,以此奠定我国开源安全生态的基石。


二是助力知名软件企业成长为开源行业龙头。据欧盟委员会发布的  The 2021  EU Industrial Research and Development Scoreboard 统 计 ,全球 2020 年研发投入排名前十的企业中,我国仅有华为一家上榜,而同期美国谷歌、微软、苹果、脸书、英特尔共 5 家公司位列前十。在对包含开源软件在内的研发投资总体规模上,我国大型科技企业对比国际知名科技巨头更是处于明显劣势。受此劣势影响,我国科技产业赖以生存的底层操作系统、数据库等核心软件,均严重依赖受国外主导的开源社区或商业科技公司。


三是打造各方认可的开源安全文化。开源安全文化是我国开源软件网络安全生态长久发展的内在价值观及外在行动力的综合体现。其不仅依赖于开源开发群体具有较强的安全开发能力,也依赖于开源基金会、大型科技公司等共同营造开源安全开发氛围,包括开展企业安全管理、安全开发培训、代码安全检测、开源安全应用等实际行动,此外更需要社会各方在政策扶持、知识版权保护、标准完善等方面一同发力,助力开源安全文化发展。


2.1.2 建设国家级开源平台和项目以发展促安全

国家级开源平台和项目的建设与全球知名开源基金会的成立同等重要,其目的都是全面推进开源软件产业化、规模化。2020 年,开源中国联合国家工业信息安全发展研究中心等单位,华为、奇安信、浪潮等科技公司,北京理工大学、西南科技大学等高校,依托码云 Gitee建设中国独立的开源托管平台。同时,基于华为打造的 HarmonyOS 系统,由开放原子开源基金会孵化及运营的 OpenHarmony 开源项目也已在 Gitee 平台上繁荣发展。目前 OpenHarmony 开发成员数 235、仓库数 401、贡献数 2 400、代码库复制数 25 600,已成为 Gitee 平台最有价值的开源项目之一。在此工作基础上,应当持续打造我国自主掌握的高质量开源托管平台,脱离对国外成熟开源平台的依赖,培育更多助力我国软件产业发展的核心开源软件项目,在平台侧和软件侧同时引领创新,有力遏制开源供应链断供制裁风险。

2.1.3 面向关键信息基础设施开展开源软件网络安全专项整治

关键信息基础设施,是指公共通信和信息服务、能源、交通、水利、金融、公共服务、电子政务、国防科技工业等重要行业和领域的,以及其他一旦遭到破坏、丧失功能或者数据泄露,可能严重危害国家安全、国计民生、公共利益的重要网络设施、信息系统等 。关键信息基础设施的保护是国家推进数字经济发展的重要保障,目前开源软件已渗透到各行各业的网络设施和信息系统中,基于关键信息基础设施的重要性,梳理开源软件在关键信息基础设施中的使用情况尤为迫切。面向关键信息基础设施开展开源软件网络安全专项整治需各部门协同发力,常态化开展整治工作,建立本部门、本行业、本领域关键信息基础设施开源软件资产清单,掌握开源软件供应链情况,定期开展开源软件应用安全培训及系统安全威胁检测,及时验证并修复漏洞。

2.2 技术面风险防范措施

基于政策面建设国家级开源平台的措施,可通过同步在开源平台侧开展源代码静态分析,进而实施代码缺陷和漏洞预测,来实现在软件生命周期的初始阶段为开发者和使用者提供漏洞风险预警及排查参考。

开展源代码静态分析并实施漏洞检测具有以下优点。一是源代码静态分析可用于代码中的函数单元,这使得某些较为明显的漏洞可在开发阶段被及时发现。二是检测速率高,能够检测代码数量大的软件。源代码静态分析不依赖人工,当前基于词语法分析、符号执行、模型检验、机器学习、深度学习等理论的长足发展,也使得源代码静态分析能力得到快速提高。

2.2.1 开展源代码静态分析技术基础

针对开源代码开展静态分析以检测其存在的漏洞或其他风险隐患,主要基于两种技术。一种技术为不同代码间的特征比对,该技术的本质为用同一种特征提取手段分别提取目标代码 Code_A 的特征 Ca 与参考代码 Code_R 的特征Cr 并进行对比,如果代码特征相同,则意味着代码内容一致,其风险点也一致。

在进行特征比对时,比对结果的准确性依赖于代码特征提取及比对方法、代码特征库(参考代码库)的全面性和准确性两个方面。

另一种技术为不同代码之间的依赖关系比对,该技术通常需要对完整代码而非截取代码片段进行分析,其主要基于比对不同代码中依赖的外部函数库或组件,如果目标代码 Code_A引用了已知存在风险点的代码库或函数 Code_B,则目标代码通常会存在相同的风险点。

其中, 为 Code_A 存在的风险点, 为 Code_B 存在的风险点。在进行依赖关系比对时,比对结果的准确性依赖于对代码依赖的外部函数库或组件的识别能力、代码依赖的递归分析能力两个方面。

2.2.2 基于深度学习的开源代码静态分析

目前,开源平台上源代码数据快速增长,使得基于机器学习和深度学习的静态分析技术快速发展,自动化对比特征提取识别技术愈发成熟。在基于机器学习的漏洞检测方面,Backes等人 率先利用机器学习方法实现了对敏感信息泄露漏洞的自动检测,Moshtari 等人则致力于寻找在跨项目中影响漏洞检测准确率的特征,其发现选用复杂度作为特征指标,比选取耦合度更能预测漏洞,同时提出了新的耦合度量——内嵌漏洞标题(Included Vulnerable Header,IVH)度量,使得漏洞检测准确率从 60.9% 提高到 87.4%。在基于深度学习的漏洞检测方面,Phan 等人 提出,模型特征不能准确捕获程序的语义是影响预测准确率的重要原因,故其利用精确的图形表示程序执行流,并利用深度神经网络自动学习缺陷特征。Song 等人  利用深度信任网络程序的抽象语法树中提取的令牌向量自动学习语义特征,并利用 10 个大型开源项目进行验证,结果表明与传统特征相比,自动学习的语义特征提高了项目内缺陷预测 14.7%的准确率和跨项目缺陷预测 8.9% 的准确率。


在 最 新 的 研 究 中, 采 用 基 于 二 倍 体 遗 传算法与深度学习融合的遗传算法模型(DNN SYMbiotic GAs)以及自然语言处理技术来提高预测准确率 的相关研究正在广泛开展。基于机器学习和深度学习的漏洞检测框架分别如图 2、图 3 所示。

图 2 基于机器学习的漏洞检测框架


图 3 基于深度学习的漏洞检测框架

目前,深度学习在静态分析的漏洞检测方面达到了 95% 的准确性 。尽管在真实场景中,其准确率稍有下降,但也正因此,面向开源平台部署基于深度学习的漏洞检测技术,可同时完成提高漏洞检测模型准确率、增强相关科研领域综合实力和降低开源软件安全风险、提升网络空间综合防御能力两方面目标。


3. 结语

开源软件的应用越广泛,其所隐含的安全问题越不可忽视。做好开源软件的安全风险分析及防范措施研究是每个网络安全研究人员的重点工作。本文在系统分析开源软件安全风险的 基 础 上, 提 出“ 政 策 + 技术”双驱动安全风险防范体系,依托打造开源网络安全生态、建设国家级开源平台和项目、面向关键信息基础设施开展专项整治等政策面防范措施和依托开源平台开展软件源代码分析等技术面防范措施,多角度防范开源软件安全风险。需要清醒认识的是,开源软件安全风险将会随着软件的发展随时产生新的变化,诸如知识产权、责任归属等问题也有待进一步明晰。后续,应随时跟进风险点的新变化,并结合有关主管部门或行业单位的工作实际,动态调整现有防范措施,持续为我国网络空间安全乃至国家安全提供助力。



作者简介 >>>

袁豪杰,男,硕士,工程师,主要研究方向为网络安全与数据安全、卫星互联网安全等;

赵 冉,男,硕士,工程师,主要研究方向为网络安全与工业互联网安全;

唐 刚,通讯作者,男,硕士,高级工程师,主要研究方向为网络安全与数据安全

选自《信息安全与通信保密》2023年第2期



——————————————————————————————

原文链接:https://mp.weixin.qq.com/s/3-3QveSDyv0r2dRFUIU2gw

原文出处:信息安全与通信保密杂志社(公众号)


声明:本文系转载文章,文章版权归原作者所有,如有疑问,请联系删除。
2024-04-24 17:10:50 阿道 最后编辑
1个回复
禅道-Bee 沙发
2024-04-28 17:19:37 禅道-李锡碧 回帖
联系人
刘斌/高级客户经理
电话(微信)
17685869372
QQ号码
526288068
联系邮箱
liubin@chandao.com
返回顶部
刘斌
高级客户经理
17685869372
526288068
统一服务热线 4006-8899-23
我要提问提问有任何问题,您都可以在这里提问。 问题反馈反馈点击这里,让我们聆听您的建议与反馈。