一、SCA是什么?

今天的软件开发普遍遵循敏捷实践,发布和部署周期都很短这导致开发团队非常依赖开源来加速创新迭代速度。因此,对团队项目中包含的每个开源组件进行跟踪非常重要,这样可以避免法律不合规的风险,并保持强大的安全态势。在DevSecOps环境中,这种跟踪必须集成到SDLC中的每个阶段。

SCA(software composition analysis)保障了开源组件和库的可见性,它可以帮助企业管理组件安全性与许可证相关的风险。以确保软件中嵌入的任何开源组件都符合某种标准,以避免引入可能导致数据泄露、知识产权受损或法律纠纷的风险。

为了实现这一点,SCA工具可以识别特定的开源版本,并关联相关的安全漏洞和许可证信息。高级的SCA工具可以自动化整个过程,从检测和识别组件到漏洞或许可证关联和潜在风险的修补。

二、SCA用例

SCA主要有三种用例:开源漏洞管理、开源许可证管理以及SBOM清单。

1.开源漏洞管理

SCA工具将检测到的组件版本与已知的开源漏洞数据库(如NVD)进行撞库比对,这可以在专门的软件安全性测试期间完成,但是最好在开发过程中尽早完成,以避免将易受攻击的组件引入到开发管道中。

因此,数据库对SCA的支持至关重要。依赖分析可以知道哪些项目或应用程序受到了漏洞的影响,这是SCA的一个强大优势。

2.开源许可证管理

虽然开源软件的本质是“free”,但并不是所有开源组件都可以不受限制的拿来修改使用。对于那些利用开源来进行个人或商业商业的开发者来说,有数以千计的具有独特规定的开源许可证需要留意。SCA可以检测与开发人员创建的软件中的开源组件相关联的许可证,并帮助规避其中潜在的开源风险。

3.SBOM清单

企业越来越依赖开源项目来加速开发与创新,然而开发者可能很快就会忘记自己使用过哪些开源组件,并且可能对与他们带入项目的组件相关的依赖项缺乏可见性。

SCA扫描可以生成与软件和容器一起出现的开源组件的全面列表,包括在应用程序构建阶段解析到项目中的任何依赖项。其输出结果就是SBOM清单,其中包括关于检测到的开源组件的基本信息,通常包括:

  1. 组件或库名称
  2. 版本
  3. 来源或分布
  4. 扫描项目中的文件路径等等

三、SCA实践层级

从难度上说,SCA工具可以划分为4个等级。

1.成熟的包管理器

我们使用的许多语言都会有比较成熟的包管理器,我们可以基于它的依赖配置文件去识别组件。比如说Java我们最常用的maven,它的依赖管理文件一般都是pom.xml,go一般则是go.mod。

2.没有包管理器

但像C/C++这样的语言,它没有像maven这样统一的包管理器,SCA识别起来就会有些困难。目前业界一般的做法是进行哈希指纹匹配,但这就需要提供SCA的公司必须有一个庞大的组件库以及版本的特征库,这样才能实现软件成分分析。

3.开源代码片段

前两种情况都是建立在开发者比较懒的前提下的,也就是说他们直接、完整的引入了一个开源组件。但在很多时候,开发者可能看到某一个代码片段写的不错,就copy过来。这个代码片段可能来自github甚至CSDN,行数不等,变量定义不明。这个时候传统SCA的依赖分析(dependency check)就无法完成对这些代码片段的识别了,需要更进一步的源代码同源或二进制同源分析才行。目前一般的SCA工具只做到了依赖分析,但泛联新安的CodeAnt已经支持精准的源代码同源和二进制同源分析。

4.SBOM清单

相比于之前的白盒测试,我们在实际应用中还有很多黑盒的场景,比如说一些可执行文件以及安装包这些怎么去识别。这就是SBOM清单要做到的事情了。

四、SCA工作流程

以下是SCA的通用工作流程:

1.SCA工具扫描指定的代码库并创建SBOM清单,包括在构建过程中解决的依赖项。

2.SCA记录被检测组件的特性信息,通常包括许可证信息、组件版本和检测位置。这里生成的信息的范围和准确性取决于开源信息库的完整性,扫描结果与该数据库进行比较以进行识别。

3.SCA识别所有相关的开源安全漏洞,例如CVEs。

4.SCA可以提醒使用者任何检测到的漏洞或潜在的许可证冲突。

5.高级的SCA工具可以将检测到的每个开源组件与定义好的策略进行比较,并自动阻止项目投入开发,或通知涉及成员以加快修补过程。

6.大部分SCA工具都能集成到CI/CD管道中,以便在每次提交时自动扫描项目或新的项目版本。

五、如何选择SCA工具

以下是SCA工具中需要明确的几个重要特性:

1.一个全面的开源数据库:虽然有许多来源对公开披露的漏洞或来自特定供应商或发行版的开源组件进行了编目,但目前还没有关于所有开源组件、许可证或漏洞的集中信息来源。SCA工具应该支持各种信息源。

2.广泛的语言支持:SCA工具必须能够扫描各种语言编写的应用程序。语言支持必须与开源数据库想匹配,已提供关于相关风险的准确信息。

3.创建全面的检测报告:SCA工具旨在识别潜在的许可证和安全风险。然而,这些信息只有在以报告形式提交给相关专业人士才有用。在理想情况下,SCA工具应该提供各种报告样式并集成广泛的API,这可以使安全、工程、DevSecOps团队甚至法律和管理人员都能够看懂。

4.优先级排序和修复:由于当前的快速部署周期,SCA工具应该有助于优先处理最严重的问题,并提供修复建议。对真是风险进行适当的优先排序和验证可以节省大量的时间和精力。

泛联新安的CodeAnt开发安全平台的漏洞安全库支持10万条漏洞能力,涵盖CVE、NVD、CNNVD等漏洞信息。支持主流软硬件环境与主流编程语言,一键生成doc、pdf、xml等报告模式,能实现多维度中文版结果展示,为您的开源安全保驾护航。

软件成分分析(SCA)详述相关推荐

  1. 什么是软件成分分析(SCA)安全测试技术

    [摘要] 本文介绍了SCA技术的基本原理.应用场景,业界TOP SCA商用工具的分析说明以及技术发展趋势:让读者对SCA技术有一个基本初步的了解,能更好的准确的应用SCA工具来发现应用软件中一些安全问 ...

  2. 国内外软件成分分析SCA产品评测

    1. 概述 SCA理论上来说是一种通用的分析方法,可以对任何开发语言对象进行分析,Java.C/C++.Golang.Python.JavaScript等等,它对关注的对象是从文件层面的文件内容,以及 ...

  3. 什么是SCA(软件成分分析)

    1.基本概念 软件成分分析(SCA,Software Composition Analysis)是一种对二进制软件的组成部分进行识别.分析和追踪的技术.专门用于分析开发人员使用的各种源码.模块.框架和 ...

  4. 从开源组件安全看SCA软件成分分析技术

    1.基本概念 软件成分分析(SCA,Software Composition Analysis)是一种对二进制软件的组成部分进行识别.分析和追踪的技术.专门用于分析开发人员使用的各种源码.模块.框架和 ...

  5. SCA-Soft Composition Analysis软件成分分析

    1. 概述 目前 SCA(软件成分分析)在2016-2018年Gartner发布的DevSecOps中均有出现.但每年的关注点不同,在2016年的报告中,强调的是DevSecOps的安全测试和RASP ...

  6. 软件成分分析技术介绍

    软件成分分析技术介绍 1.关于软件成分分析 SCA,Software Composition Analysis,软件成本分析是一种对二进制软件的组成部分进行识别.分析和追踪的技术.在开源软件日益盛行的 ...

  7. 漫谈SCA(软件成分分析)测试技术:原理、工具与准确性

    本文分享自华为云社区<漫谈SCA测试技术(一)>,原文作者:安全技术猿 . 1.什么是SCA SCA(Software Composition Analysis)软件成分分析,通俗的理解就 ...

  8. 北大软件“软件成分分析与漏洞检测工具”(CoBOT—SCA)正式发布

    根据全球知名IT研究与顾问咨询公司Gartner统计,从2010年到2018年软件代码中采用开源框架或组件.第三方库的比例每年以30%的速度增长,大量的软件系统引入开源代码和第三方库,有的系统引用开源 ...

  9. SCA软件成分分析 简析(一)

    一.概述 SCA全称 Software Compostition Analysis,译为软件成分分析,即通过分析软件源码提取项目依赖的第三方组件及其版本.许可证.模块.框架和库等信息,生成软件物料清单 ...

最新文章

  1. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for i
  2. “芯片大脑“是什么?科学家提出了“忆阻性神经混合芯片“这一概念
  3. UA MATH636 信息论8 线性纠错码
  4. python字典程序题_急!一道关于python字典的编程题!求思路!
  5. 人工智能是未来发展趋势吗 用Python入门怎么样 赶紧看看
  6. promise then返回值
  7. anime.js 图片位移动画_打造高大上的Canvas粒子动画
  8. R语言软件和RStudio环境的下载与安装
  9. 【百度云提取】:JDK1.8API、Jdk1.8安装包、jQueryAPI文档、JavaScriptAPI文档、W3School相关API文档
  10. win10计算机休眠快捷键,win10睡眠快捷键,win10睡眠按啥键唤醒
  11. 万年历单片机c语言程序,51单片机c语言电子万年历完整程序.pdf
  12. CodeForces - 1040B Shashlik Cooking(水题)
  13. VM虚拟机安装CentOS7添加硬盘扩展存储空间的方法
  14. 不可战胜的苹果:全球最酷企业十大经验
  15. 一套WPF+EF+SQLServer 会员卡管理系统源码
  16. es6 Promise是什么?
  17. 如何用MathType编辑圆圈符号
  18. 南阳理工计算机与科学技术,南阳理工学院计算机科学与技术咋样
  19. Camera硬件知识汇总
  20. React-服务器端渲染

热门文章

  1. asp.net 探针下载_光探针代理卷:5.4功能展示
  2. 在VC 6.0里Win32 Application和Win32 console Application的区别
  3. VS2019中使用C++初步实现winform界面
  4. 深入解析数据库透明加密技术
  5. pycharm 中引用airtest中的air 文件
  6. ESP32 LOG库使用
  7. 计算机教学改革典型案例,高职计算机课程案例化与信息化融合的教学改革探讨...
  8. 链路追踪 zipkin 可执行 zipkin-server-x-exec.jar 下载地址
  9. 几道经典递归算法案例
  10. VS2015+QT运行C# dll,出现“错误C2182 “t”: 非法使用“void”类型”的解决方案