现代企业的软件开发高度依赖开源项目,同时也导致很多企业(包括这些企业的用户)严重低估了软件项目对开源代码的依赖度,以及由此引发的巨大安全隐患。

01 开源安全危机四伏

根据安全牛此前的报道《开源盛世需警惕“安失之乱”》,自由软件与开源软件(FOSS)在现代软件中的占比高达80%-90%。与此同时75%的开源代码库存在安全漏洞,其中49%属于高危漏洞。国内的开源安全形势尤为严峻,因为国内相当大比例的软件是被组装出来的,其原材料就是开源软件。开源软件已经成为网络空间的“砖头瓦块”,无处不在。而一个开源软件出现安全问题,会导致依赖它的其他开源软件受到影响,这种层层关联的依赖性,造成了非常隐蔽和复杂的攻击面。

近日,Google发布了一个全新的实验性开源依赖性分析工具Open Source Insights,可以帮助开发人员发现他们使用的开源包/库的依赖项以及他们当前存在的已知安全漏洞。

02 开源依赖性分析

Open Source Insights是谷歌云平台托管的工具,通过网站访问,用户可以在其中输入特定开源包的名称并大致了解它们与开源项目的依赖度,包括如下信息:

  • 关于软件包的信息(描述、所有权、链接)

  • 依赖项(软件包依赖的开源组件)

  • 依赖者(依赖该开源组件的软件包)

  • 安全公告(软件包和依赖项中的已知漏洞、非托管依赖项等)

  • 许可证信息

“除此之外,Insights还提供交互式工具来可视化和分析完整的、可传递的依赖图。它还提供一个比较工具,可以突出显示软件包的不同版本是如何影响您的依赖项的:可能是通过更改它们自己的依赖项、添加许可要求或修复安全问题来实现的。”开源洞察团队解释道。

该工具目前显示有关50,000个(Rust)Cargo包、60万个Go模块、42万个Maven(Java)和360万个npm包(Node.js)的信息。此外,谷歌正在开发额外的打包系统。

Insights开发团队解释说:“该项目会扫描它可以发现的所有可用包,方法是读取npm等系统包的主站点或者扫描GitHub和其他存储库的托管站点。”

“目前,Insights只能使用已知的打包模型分析此类系统,因为它需要打包信息来构建依赖关系图。这意味着至少目前它们没有C或C++的数据,没有明确的打包模型。”

03 提高开源供应链的安全性

由于企业软件开发对开源软件的依赖不断增加,以及不受管理的开源代码带来的安全风险(包括安全漏洞、过时或废弃的组件以及许可合规性问题)无处不在,企业软件开发团队需要密切关注软件解决方案包中的许多频繁变化的开源代码依赖关系。

开发人员可以使用漏洞扫描程序和依赖项审计来识别漏洞,但Open Source Insights提供了对软件供应链安全性更广泛和更深入的思考。

“Insights不是试图取代标准工具集,而是通过对每个包模型的整个生态系统的全新集成视图来增强它。”Google解释说。

“一个关键的区别是Insights数据来自软件本身及其软件包定义。结果可能与仅声明的依赖项(例如打包‘锁定’文件)完全不同或更完整。此外,Insights提供的数据会定期重新评估,以保持最新状态,这在快速发展的开源开发世界中非常重要。”

Insights还会跟踪各种公共漏洞数据库以标记已知的安全问题。

Google表示,常用包的数据通常是最新的,但非活跃和旧软件包的数据可能是过时的。

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