#############################
免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者无关。
##############################
SCA(Software Composition Analysis)软件成分分析,通俗的理解就是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。
架构
如何自动化检测相关组件风险并且安全左移,让开发尽早感知到风险并禁止高危服务上线,是这边的目标。
其中检测架构如下图:
其中得物安全检测平台目前不仅仅做SCA检测、也在做SAST等检测,尽可能的安全左移,更早的发现问题。
实现
目前得物内部主要有Java、Go、Python、JavaScript等语言,目前对以上四种语言已经做到全部支持(包括Java打包后的Jar文件、Go静态语言编译后的二进制文件)。
语言 | 文件 | 是否支持 |
---|---|---|
Java | pom.xml、jar | 支持 |
Go | go.mod、go.sum、binaries built by go | 支持 |
Python | requirements.txt、Pipfile、Pipfile.lock | 支持 |
JavaScript | package.json、package-lock.json、yarn.lock | 支持 |
目前主要采用项目构建及解析包管理文件两种方式。
-
方式一:项目构建
以Java项目为例,通过与发布平台打通,获得项目编译后的Jar文件,JAR 文件格式是以 ZIP 文件格式为基础,对Jar文件进行解压,可在BOOT-INF/lib/目录下获取全部第三方依赖包信息。
-
方式二:包管理文件
解析相应语言的配置文件,以Go为例,通过解析go.mod和go.sum文件,获取相关依赖信息。
对项目依赖的安全分析在服务端进行,基于安全运营同学持续维护的漏洞库,可以快速识别到存在安全缺陷的依赖,当检测到相应依赖存在安全风险的时候,即发相应通知到项目Owner,督促去进行相应改进。
为了让开发者重视安全问题,该检测结果还会同步输出在Gitlab Merge Request处,当Reveiew代码时,将会直接看到安全检测相关结果。
漏洞库
漏洞库的建设非一朝一夕能完成的,目前漏洞库的建设主要以开源为主,如NVD、GHSA、GLAD、Go VulnDB等,辅以内部人工收集到的一些漏洞信息。这里提一下,NVD官方的漏洞库虽然很全,但里面定义的cpe信息与组件信息不是完全一致,而且许多CVE数据无影响版本、修复版本等数据,这些信息需要结合其他漏洞情报综合判定。
好消息是今年夏天CVE 数据格式将会完成5.0格式的发布(目前CVE格式均为4.0),这次 CVE 发布添加了几个新数据字段,除了 CVE ID 号、受影响的产品、受影响的版本和公共参考的必需数据之外,将记录包括可选数据,例如严重性评分、研究人员的信用、其他语言、受影响的产品列表、附加参考、社区贡献能力等。这些可选数据将为下游用户和整个漏洞管理社区增强 CVE 记录。详情可参考: https://www.cve.org/Media/News/item/news/2022/01/11/Changes-Coming-to-CVE-Record
漏洞库 | 地址 |
---|---|
NVD | https://nvd.nist.gov/ |
GHSA | https://github.com/advisories/ |
GLAD | https://gitlab.com/gitlab-org/advisories-community/ |
Go VulnDB | https://github.com/golang/vulndb |
Node | https://github.com/nodejs/security-wg |
原文始发于微信公众号(菜鸟小新):SCA在得物DevSecOps平台上应用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论