SCA,Software Composition Analysis,即软件成分分析,是一种对二进制软件的组成部分进行识别、分析和追踪的技术。SCA并不是一项新奇的技术,而是随着开源理念的盛行和开源组件的广泛使用而越发重要和不断成熟、补充和完善的技术。

除了受开源发展的影响,SCA的发展也是“不重复造轮子”的成本和效率驱动下的产物,是互联网快速发展“短平快”要求下的伴生物。因此SCA发展也几乎同步,其发展历程大概可以划分为萌芽期、发展期、成熟期、完善期等四个阶段。

第一阶段:早期人工阶段

第一阶段:早期人工阶段

打开网易新闻 查看精彩图片

在2000年代初期,随着开源理念和开源软件的流行,企业开始意识到管理和审计开源组件的重要性。最初,这些工作主要是人工手动进行的,依赖于开发者的知识和经验来识别和管理开源组件,缺乏系统化的管理和审计工具。在这个阶段,并没有标志性的事件,我们可以称这个阶段为萌芽阶段。

第二阶段:自动化工具的出现

第二阶段:自动化工具的出现

打开网易新闻 查看精彩图片

随着开源组件的使用增加,对其审计和管理的要求逐步提升,市场上开始出现了早期的SCA工具,这些工具能够自动识别软件中的开源组件,并与已知漏洞数据库进行匹配,检查已知的安全漏洞,这些工具的出现大大提高了识别和修复安全漏洞的效率。其中自动化工具最具代表性的企业是2002年成立的美国黑鸭软件Black Duck Software公司,是早期提供SCA解决方案的公司之一,同时黑鸭公司还运营了全球首屈一指的开源社区之一The Black Duck Open Hub,在国际上有很强的影响力,在国内知名度很高。

第三阶段:SCA成熟与普及

第三阶段:SCA成熟与普及

打开网易新闻 查看精彩图片

进入2010年代,SCA工具变得更加成熟和普及,如Sonatype 公司的Nexus Lifecycle和JFrog公司的Xray等,越来越多的企业开始接受并使用SCA工具,其功能更加全面,集成更多功能,如许可证合规性检查、自动化策略执行、持续监控和集成开发环境(IDE)插件等等。随着开源软件的使用持续增长,在开发过程中越来越多的应用直接使用带有已知漏洞的组件部分,在2013年OWASP发布的OWASP-TOP-10中,风险清单添加了2013-A9“使用含有已知漏洞的组件”风险,开源组件的安全管理逐步变得常态化。而在2019年Gartner在报告中把SCA正式纳入了AST应用安全技术领域范围,SCA工具开始成为软件开发生命周期中的一个标准组成部分,SCA重要性再次提到了新的高度。

第四阶段:定义扩展

第四阶段:定义扩展

打开网易新闻 查看精彩图片

近年来,开源组件的使用得到了爆发式发展。在研发安全的日常工作中,由于开源组件引入的比例越来越高,每天都会应对大量的安全风险挑战。Gartner 报告显示,全球99%的企业在研发的应用中使用了开源组件,但同时近9成的软件项目存在已知开源软件漏洞,SolarWinds、Apache log4j漏洞等黑客入侵事件,直接让开源安全漏洞威胁直接暴露在人们面前。这个阶段,SCA工具不仅仅关注安全漏洞,还开始注重许可证合规性和操作风险,其定义也发生了一定的变化。SCA工具开始与其他DevOps工具集成,如持续集成/持续部署(CI/CD)管道,以实现自动化和持续的安全和合规性检查。如Synopsys的Coverity、开源网安的SourceCheck等工具提供了与CI/CD工具链的深度集成,使得SCA真正成为开发的一部分,融入到企业的实际研发业务中来。
未来,随着人工智能和机器学习技术的发展,开源网安认为SCA工具将变得更加智能,能够提供更精确的依赖项识别、风险评估,如GitHub的Dependabot(一款自动化工具,用于检查项目依赖的版本并提供自动更新),已经开始使用自动化机制来帮助开发者更新依赖项,预防安全漏洞。同时,随着软件供应链攻击的增加,SCA工具会进一步完善和扩展其功能,持续演化、进化,以更好地适应软件开发的需求,更好地管理和保护整个软件供应链的安全,满足不断变化的市场需求。

打开网易新闻 查看精彩图片