开源软件在软件供应链中扮演着至关重要的角色。然而,OWASP指出,业界缺少一个统一的对于开源软件风险的理解和评估方法。这个问题涉及到众多风险和潜在隐患,亟待我们进行深入研究。
OSS在软件供应链中的高度依赖
如今,软件行业里开源软件十分普遍。无论是企业内部使用的办公系统,还是面向大众的网站、APP等,都大量采用了开源软件。以安卓系统为例,全球众多手机等移动设备都运行着基于Linux内核等开源软件搭建的系统。特别是许多小型创业公司,因为缺乏开发软件的人力物力,对开源软件的依赖性极高,以便快速构建产品。但这也带来了不小的风险,一旦开源软件出现问题,可能影响到众多相关系统和用户。回顾过往,几年前就有一起案例,某知名办公软件因其中一个开源软件部件存在安全漏洞,导致全球许多企业的办公数据面临泄露的威胁。
开源软件对软件开发便捷性和成本降低有着显著作用。多年来,众多企业专注于业务功能的开发,为了迅速进入市场,广泛使用了开源软件来组合功能。然而,对开源软件潜在风险的关注不足,这好比建造高楼,若基础材料不稳定,整个结构便岌岌可危。
许可管理开启OSS风险管理
许可管理只是开源风险管理过程中的初始阶段。以Linux内核这样的开源项目为例,它们各自拥有特定的开源许可协议。对于企业和开发者来说,遵循这些协议至关重要,因为这直接关系到法律合规性等多方面问题。在挑选开源软件组件以适配项目需求时,开发人员必须掌握相应的许可协议规定。
关注许可管理只是基础,不足够。在项目实践中,不少开发者初期只顾着看许可是否宽松,方便自己开发,却忽略了后续的安全和运营风险。而且,一些开源许可在实际应用中,解读起来有些模糊,这容易隐藏风险,就像埋下了定时炸弹,不知何时会引发严重问题。
现有CVE体系的不足
CVE体系在软件安全方面有所贡献,但对开源软件的风险评估存在不少局限。观察安全事件,CVE在反映运营风险方面表现不佳。比如,对于因软件过时而产生的问题,CVE体系缺乏相应的评估标准。即便有软件版本在使用,若因长期未更新导致运行不稳定或存在安全漏洞,CVE也无法及时揭示这一状况。
此外,对于新一代供应链中诸如名称混淆攻击等新兴风险,CVE并未全部涉及。在开发实践中,若开发人员仅凭CVE来评估开源软件(OSS)的安全性,很可能忽视众多其他潜在威胁。过分依赖单一体系来评估整体安全状况的行为极其危险,就如同仅凭一种检测手段去评判复杂多变的情况一般草率。
隐藏的漏洞风险
开源组件的版本中,开发者可能无意中引入了存在漏洞的代码。在众多软件开发项目中,这些漏洞可能暂时未被察觉或调用。然而,一旦在后续的软件应用场景中遇到适宜的条件,这些漏洞就可能被利用。例如,在电商平台的软件后台开发中,有一个用于流量统计分析的开源组件,开发者在引入时并未进行细致的审查。当遇到特定促销活动的流量高峰时,这个组件中的漏洞便会暴露出来,引发系统负载过重甚至崩溃,严重影响了平台的正常运营。
有些组件版本已经停止了积极的开发与维护。以某个金融平台使用的开源加密算法组件为例,自从原开发团队停止了项目开发,就再也没有新的安全补丁来对抗新出现的恶意破解技术。这导致该金融平台的数据保密性以及整个系统的安全性持续降低。
开发中的风险指标线索
检查代码和项目特征中的风险指标极为重要。在审视代码时,无论是安装前还是安装后的钩子环节,亦或是编码中的payload,这些地方都可能潜藏风险。观察项目特征,若源代码仓库存在安全漏洞,黑客便有机会篡改代码。从维护人员账户的角度来看,一旦账户被盗,修改代码便变得容易。例如,某科技公司的开源项目就曾因维护人员账户被盗,导致恶意代码被植入软件中,使得众多用户下载后遭受恶意软件攻击。
例如,项目发布节奏不规律,而依赖它的用户群体庞大,一旦出现问题,影响范围便会十分广泛。以一个知名的免费网页框架为例,其更新速度缓慢且不稳定,许多小公司基于这个框架进行开发,若框架内出现风险,这些小公司可能遭受严重打击。
使用中的各类风险
在实际开发过程中,必须为正在开发的软件挑选出合适的、可接受的组件许可。这需要考虑组件的连接方式、软件的部署模型以及分发计划,这些都是至关重要的。值得注意的是,某些开源项目在开发和管理上并不规范。以某开源图像处理软件为例,它缺乏明确的开发和审计指南,这导致使用该软件的公司在集成使用过程中遇到了不少兼容性和稳定性问题。
依赖软件无法如预期运行,导致运行时的可靠性问题十分明显。以某些开源的人工智能开发框架为例,由于文档不完善,新手开发者操作起来既复杂又容易出错。而且,有些组件的更新并未遵循既定的版本控制计划,频繁的突发变更常常干扰系统的稳定运行。
在大家进行软件开发或使用软件的过程中,是否遭遇过因开源软件带来的具体风险问题?欢迎点赞、分享,并在评论区分享您的亲身经历。