摘要:本文介绍了SCA技术的基本原理、应用场景,业界TOP SCA商用工具的分析说明以及技术发展趋势;让读者对SCA技术有一个基本初步的了解,能更好的准确的应用SCA工具来发现应用软件中一些安全问题,从而帮助提升软件安全质量。
SCA(Software Composition Analysis)软件成分分析,通俗的理解就是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。我们知道在当今软件开发中,引入开源软件(注1)到你的项目中,避免重复造轮子是大家都再熟悉不过的了,比如开源库中开源软件按每年21%速度在增长(来源Forrester报告),开源安全威胁成为企业组织无法回避的话题,而应用SCA技术对应用程序进行安全检测,实现安全管理是最行之有效的方法之一。
SCA理论上来说是一种通用的分析方法,可以对任何开发语言对象进行分析,Java、C/C++、Golang、Python、JavaScript等等,它对关注的对象是从文件层面的文件内容,以及文件与文件之间的关联关系以及彼此组合成目标的过程细节。从SCA 分析的目标程序形式上分,既可以是源代码也可以是编译出来的各种类型的二进制文件,分析的数据对象对程序架构,编译方式都是不敏感的,比如:类名称、方法/函数名称、常量字符串等等,不管目标程序运行在x86平台还是ARM平台,不管是windows程序还是Linux程序,都是一样的,简而言之SCA 是一种跨开发语言的应用程序分析技术。
SCA分析过程:首先对目标源代码或二进制文件进行解压,并从文件中提取特征,再对特征进行识别和分析,获得各个部分的关系,从而获得应用程序的画像—–组件名称+版本号,进而关联出存在的已知漏洞清单。
由于SCA分析过程中不需要把目标程序运行起来,因此具有分析过程对外部依赖少,分析全面,快捷、效率高的优点;
根据Forrester最新SCA报告,Forrester通过10个维度(注3)对不同工具进行打分,最后根据综合得分评选出如下业界TOP 10 SCA工具魔力象限图:


注1:Top 10开源软件编程语言:JavaScript(51%)、C++(10%)、Java(7%)、Python(7%)、Ruby(%5)、Go(4%)、C(4%)、PHP(4%)、TypeScript(4%)、C#(3%)、Perl(2%)、Shell(1%)
注2:软件包是指产品用来安装、运行的发布包,里面包含了产品编译好的可以运行的二进制文件,比如.so/.jar/.exe/.dll/.pyc
注3: a.License风险管理;b.漏洞识别;c.主动式漏洞管理;d.策略管理;e.SDLC集成;f.容器和无服务器扫描; g.审计报告;h.风险报告;i.修复速度报告;j.厂商自行分析;
本文分享自华为云社区《漫谈SCA测试技术(一)》,原文作者:安全技术猿 。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1011/viewspace-2796088/ ,如需转载,请注明出处,否则将追究法律责任。