近年来,开源软件频繁爆出高危漏洞,这些软件或组件很多都应用于信息系统的底层,并且应用范围非常广泛,因此漏洞带来的安全危害非同一般。除此之外,随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。
01漏洞风险不容忽视
从源头上来说,开源组件几乎没有进行安全测试,这令它的安全指数基数本身就很低。
从开发者来说,开源软件开发者的安全意识还不够,导致其在开发时有很多安全疏忽。
举个例子:
当某个开源组件,暴露出漏洞风险,虽然安全团队通过工具及时找到了这个风险,并给出了修复方案。但是这种修复方案经常会遭到开发团队的反对。
原因很简单,任何一款软件的升级必然会面临着与其他软件或程序的业务兼容性问题,这也意味着开发团队必须付出更多的时间和精力进行兼容性测试和维护。
在这个过程中,甚至有可能导致数据丢失。在开发者看来,这些风险在短期内大于软件安全性的风险。
另一方面,开源软件源代码是开放的,所以不存在版权意识,开发者也会轻易地将项目管理权移交给其他人员,这就给了很多不法分子可乘之机。
event-stream
被植入比特币后门事件
行业内最著名的一次安全事件,是2018年的event-stream事件。该事件的起因是 event-stream项目的作者由于时间和精力有限,将其维护工作交给了另一位开发者。该开发者获得了event-stream的控制权,将恶意代码注入。
据报道,该恶意程序在默认情况下处于休眠状态,当BitPay的Copay钱包启动后,就会自动激活,它会窃取用户钱包内的私钥并发送至指定地址,这个组件一周的下载量高达200万次,直至漏洞被发现并修复之前,被下载了2000万次持续了2.5个月,影响非常巨大。
这一案例的特殊之处在于,开源组件是用户主动去下载的。在实践中,很多攻击往往是被动的,不法分子利用开源软件本身的漏洞,用软件供应链攻击或者依赖混淆攻击的方式去攻击内部应用,这种攻击方式造成的损失更是不可估量。
02软件供应链攻击更可怕
想象一下,您正在从事一个非常秘密的项目,需要依赖secret- almo的组件,您将这个组件上传到内部的一个私服制品库Private里面,并且您不希望竞争对手知道它。
npm Registry,是一个公网上的组件仓库,任何人都可以在上面发布一个npm组件,大多数npm依赖项都使用版本声明来请求最新的兼容版本,声明的格式如下图所示。
npm Registry,一个公网上的组件仓库
如果攻击者想要攻击不受保护的组织,他们可以克隆和修改源代码,将任何恶意软件嵌入其中,但仍保持与原始代码的兼容性,并将其作为secret-almo:3.9.9 上载到npm Registry。
这将会导致如下可怕情况的发生:
如果一个应用程序所使用的依赖包同时存在于公共的开源仓库和私有组件库,当程序构建时,由于版本较新,那么公共开源仓库的包就会被赋予优先权并被拉取——就会出现您需要获取3.2.4版本,但实际上获取的是3.9.9版本。
当请求secret-almo:^ 3.0.0时私服的工作模式为:
在这种情况下,就会出现依赖性混淆,也就是说开发环境无法区分软件构建中依赖的组件是内部私有创建的程序包,还是公网开源软件存储库中同名的程序包。
一旦将带有风险的恶意组件引入到内网、开发环境、软件里,将会被无数的应用引进,并且无法定位问题的影响范围,也很难在短时间内完成修复。
这也是为什么需要对开源软件进行治理的原因之一。
现在,业内普遍采取的做法是发邮件、自查,而这种方式导致研发团队受到干扰,让开发和安全团队的矛盾越来越深,“安全问题”已成为横亘在开发者和安全团队之间的一道难以逾越的鸿沟。
03安全左移最佳方案
我们讲安全左移,就是要在软件开发全生命周期解决安全问题,而不是在软件上线之后进行安全维护。这一理念的实质内容是,从需求导入、代码审计、开发测试到部署上线,安全需要持续存在以及发挥能效,且安全资源完成软件化、组件化、服务化改造,以便结合自动化手段,实现从代码到应用的全流程安全介入,增强业务应用的安全性。
开源网安,作为国内领先的软件安全全生命周期解决方案提供商,自主研发的软件成分分析SCA产品——开源组件安全及合规管理平台(SourceCheck),用于第三方组件安全管控,包括企业组件使用管理、组件使用合规性审计、新漏洞感知预警、开源代码知识产权审计等,支持对源码及发布包检测,是 OWASP Top 10 中“使用含有已知漏洞的组件”安全风险的最佳解决方案。
SourceCheck可实现自动化、无感知地对企业级软件资产信息收集与管理,使软件资产分布可视化;并提供软件资产跟踪定位和管控、新漏洞的自检和预警,以及对自研组件和程序代码的许可合规性进行检测。
未来,我们将继续秉承“捍卫中国软件安全”的核心理念,通过“软件安全开发流程+自动化安全测试工具+培训服务”三大抓手,弥合开发与安全的鸿沟,帮助企业提升软件的安全与质量,为中国软件安全保驾护航。