近年来,开源软件得到广泛应用,已经成为软件供应链的重要环节,是软件生态不可或缺的组成部分。然而,一旦具有大规模用户基础的开源软件存在安全漏洞,势必会影响整个软件行业的安全。

开源软件漏洞安全分析

安全意识和技术能力参差不齐

安全公司Snyk通过扫描数以百万计的Github代码库和程序包,并对超过500个开源项目的维护者进行调查后发现:只有8%的开源项目维护者自认为具备较强的信息安全技术,接近50%的开源项目维护者从来不审计代码,只有11%的开源项目维护者能做到每季度审核代码。另据Linux基金会发布的《开源软件供应链安全报告》显示,大量开发人员在开发软件时并未遵守应用程序安全规程。开源项目维护者对代码安全质量重视不够和技术能力水平不足,是造成当前开源软件安全漏洞的主要原因。

黑客组织开始盯上开源软件

现今软件生产过程中,代码复用程度越来越高,各种开发包、核心库的应用越来越广泛。很多黑客组织也意识到了这一点,逐渐把目光放在了开源软件上,利用开源代码植入后门。这些代码的复用程度越高,其中的后门影响范围就越广,极易造成对软件供应链上游的攻击。

2019年8月,Webmin软件被爆存在高风险远程命令执行漏洞,据Webmin开发人员透露,该漏洞不是编码错误的后果,而是“恶意代码注入受损的基础架构中”导致的。

缺少系统的代码安全审查机制

根据Snyk公司的报告显示,37%的开源开发者在持续集成(CI)期间没有实施任何类型的安全测试,54%的开发者没有对Docker镜像进行任何安全测试。

开源代码中新的安全漏洞不断被发现,但很多项目却缺乏查找并修复漏洞的响应机制。开源项目的安全记录方式也没有明确的标准可以遵循,GitHub上排名前40万的公共代码库中,仅2.4%的项目有安全文档。

开源软件在实际的流通过程中,各个环节间缺乏系统的安全审查机制,部分企业内部也缺少必要的安全检测要求和规范,导致一旦底层开源组件出现安全漏洞,这些问题组件将传染给哪些商业产品、影响哪些业务领域,没人能给出一个准确的答案。

风险防范措施

国家层面

随着开源软件在商业软件中所占的比重越来越高,开源软件俨然已经成为软件开发的关键基础设施,因此开源软件的安全问题应该上升到国家安全的高度来对待。建议国家相关部门组织有业务基础的科研机构开展开源软件源代码检测工程,并将检测的成果以一种安全可控的方式与商业软件制造商及关键领域的企业共享,尽可能降低开源软件漏洞对社会各行各业的影响。

企业层面

企业应该建立开源软件安全治理体系,明确开源软件使用的安全准入条件,从软件开发阶段就建立开源软件使用的统一策略,实现开源软件引入和使用的标准化、规范化和合规化。对于明确需要引入的开源软件,在加强版本控制的基础上,一方面开展安全风险评估检测;另一方面持续跟踪相关的漏洞情报,时刻提防软件供应链攻击。

用户层面

从已经发生的软件供应链攻击案例来看,非常有必要开展软件上线前的渗透检测。通过采用良性的攻防渗透方法和手段,及时发现软件系统中存在的安全漏洞和隐患,降低新软件上线给系统带来的风险。企业在开展软件采购时,应向供应商明确要求提供软件中包含的开源组件(如用了什么、什么版本、软件来源等),并在验收时进行细致核查。

检测机构层面

信息安全产品是重要信息系统安全防护的基本组成部分,其自身的安全性将影响重要信息系统的安全。检测机构应要求软件供应商准确提供产品中包含的开源组件等信息,并针对开源组件开展专门的安全检测。这样一旦某个开源软件被曝出重大的安全漏洞,产品检测机构可以及时迅速地发布安全预警,并要求相关产品厂商尽快开展修复,甚至对修补不力的产品予以禁用处置。

本文作者

冯兆文,西北工业大学

刘振慧,中国航空工业发展研究中心

声明:本文来自保密科学技术,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。