SCA在得物DevSecOps平台上应用?

SCA在得物DevSecOps平台上应用?
最新回答
雨后初见彩虹

2026-07-11 13:07:36

SCA(Software Composition Analysis,软件成分分析)在得物DevSecOps平台上的应用,主要通过自动化检测开源组件风险,实现安全左移,确保开发过程中尽早识别并处理潜在的安全问题。以下是具体应用细节:

一、SCA技术简介
  • 定义:SCA通过分析软件包含的信息和特征,实现对该软件的识别、管理、追踪。
  • 分析对象:支持多种开发语言(Java、Golang、Python、JavaScript等)及二进制、固件等。
  • 分析过程:

    解压目标源代码或二进制文件,提取特征(组件名、版本号)。

    对特征进行识别和分析,获得服务使用的相关组件和版本。

    与已知漏洞库关联,找出存在的已知风险。

二、得物平台SCA检测架构
  • 目标:自动化检测相关组件风险,安全左移,禁止高危服务上线。
  • 架构图:

  • 多检测手段:得物安全检测平台不仅进行SCA检测,还结合SAST等检测手段,更早地发现问题。
三、得物平台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:

    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检测的扩展应用
  • 应急响应:针对Log4j2、Fastjson等应急响应,通过平台查询引用该组件的服务,快速获取服务负责人、发布时间、组件版本等信息,通知相应负责人升级处理。
  • 资产排查:SCA检测在资产排查方面也发挥重要作用,帮助团队全面了解项目中的开源组件使用情况。
六、未来规划
  • SCA检测左移:在开发阶段之前检测到相关安全风险,确保用户在开发阶段引用的组件就是安全的。
  • 搭建内部私服:确保私服上的包都经过安全检测,进一步保障供应链安全。