2026-07-11 13:07:36
SCA(Software Composition Analysis,软件成分分析)在得物DevSecOps平台上的应用,主要通过自动化检测开源组件风险,实现安全左移,确保开发过程中尽早识别并处理潜在的安全问题。以下是具体应用细节:
一、SCA技术简介解压目标源代码或二进制文件,提取特征(组件名、版本号)。
对特征进行识别和分析,获得服务使用的相关组件和版本。
与已知漏洞库关联,找出存在的已知风险。


支持语言及文件:
Java:pom.xml、jar文件
Go:go.mod、go.sum、二进制文件
Python:requirements.txt、Pipfile、Pipfile.lock
JavaScript:package.json、package-lock.json、yarn.lock
实现方式:
项目构建:
以Java项目为例,通过与发布平台打通,获得项目编译后的Jar文件。
对Jar文件进行解压,在BOOT-INF/lib/目录下获取全部第三方依赖包信息。

解析相应语言的配置文件,以Go为例,通过解析go.mod和go.sum文件获取相关依赖信息。

在服务端进行项目依赖的安全分析,基于安全运营同学持续维护的漏洞库,快速识别存在安全缺陷的依赖。
当检测到相应依赖存在安全风险时,发送通知到项目Owner,督促改进。
检测结果同步输出在Gitlab Merge Request处,Review代码时直接看到安全检测结果。

漏洞库来源:
主要以开源为主,如NVD、GHSA、GLAD、Go VulnDB等。
辅以内部人工收集到的漏洞信息。
NVD漏洞库特点:
虽然全面,但定义的cpe信息与组件信息不完全一致。
许多CVE数据无影响版本、修复版本等数据,需结合其他漏洞情报综合判定。
CVE数据格式更新:
今年夏天CVE数据格式将完成5.0格式的发布,添加新数据字段,如严重性评分、研究人员的信用等,增强CVE记录。
常用漏洞库地址:
NVD:
GHSA:
GLAD:
Go VulnDB:
Node: