「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

news2024/11/15 8:27:35

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

1. SCA的发展背景及趋势

随着软件开发的复杂性不断增加,软件项目中使用的第三方组件和开源软件数量也大幅增加。然而,这些第三方组件往往存在潜在的安全漏洞和法律风险,因此对软件成分进行全面分析变得至关重要。SCA技术因此应运而生,成为软件开发生命周期中必不可少的一环。

Synopsys发布2024年开源安全和风险分析报告OSSRA中指出,有96%代码仓库包含开源代码,84%代码库包含至少一个已知开源漏洞,其中74%包含高风险漏洞。关于Synopsys 2024年发布的更详细的开源风险洞察报告可以点此下载(访问密码:6277)。

在这里插入图片描述

当前,越来越多的企业和开发团队开始重视软件成分分析,将其纳入到软件开发过程中,并寻求自动化和智能化的解决方案。SCA技术的趋势包括但不限于:

  • 更加精细化的组件识别和关系分析
  • 持续集成和持续部署(CI/CD)中的集成
  • 与软件漏洞数据库的整合

2. SCA技术原理

SCA技术的核心原理包括对软件源代码或二进制文件进行扫描,识别其中使用的第三方组件、库和框架,分析其版本、许可证、漏洞等信息,并生成报告以供开发人员参考。常见的分析方法包括静态分析、动态分析。

  • 静态分析通过检查软件源代码或二进制文件的组件依赖关系来进行分析,可以在早期发现潜在的问题。
  • 动态分析则是在软件运行时检查其实际行为,以获取更加全面的信息。

根据分析对象划分为两种SCA技术:源码SCA、二进制SCA。接下来具体介绍两种SCA技术的原理和优缺点。

2.1. 源码SCA

源码SCA分析的是软件的源代码,它通常需要访问项目的源代码仓库,对代码中的依赖关系进行分析。主要适用于开源项目、有完整源代码维护的项目,以及需要深入理解代码依赖关系的场景。

由于直接分析源代码,所以它可以更准确地识别出软件中使用的第三方库和它们的版本。具体来说,主要有以下三类分析方法:

  • 基于包管理器配置文件的分析:针对具有备包管理机制的语言,比如Java、Go、Python,可以通过解析开源软件包管理文件(如Java的POM.xml,Go语言的go.mod,Python的requirements.txt)来实现开源软件的关联分析,这种方法可以几乎可以100%准确的分析出引用的开源软件名称及依赖组件名称。
  • 基于文本相似度的分析:亦可称为源码文件级匹配,即根据源代码文件的相似度来判断待分析的源码文件属于什么组件和版本,文件相似度可以基于hash的严格匹配方法,也可以根据文本相似度匹配方法。
  • 基于语义的相似度分析:亦可称为源码片断匹配,即源代码依次通过词法分析、Token提取、语法分析、AST抽象语法树、语义分析过程来提取相应的关键特征,进一步融合机器学习、NLP、控制流图CFG、数据流图DFG等匹配算法进行代码相似度的检测。

源码SCA需要有可访问的源代码,因此对于没有源代码的二进制文件或封闭源代码的软件,这种方法不适用。

2.2. 二进制SCA

二进制SCA分析的是软件的二进制可执行文件或库文件,由于不需要访问源代码,二进制SCA可能无法像源码SCA那样精确地识别依赖关系,因为它依赖于二进制文件中的符号和字符串提取。具体分析过程通常涉及提取二进制文件中的函数名、常量字符串等信息(这些信息受CPU架构、编译选项的影响很少,几乎保持不变),然后与已知组件特征数据库进行比对即可识别二进制的成分。另,结合二进制代码的调用图CFG、数据流图DFG等信息可进行更加精准的检测,但由于这些分析涉及到二进制文件反汇编,分析时间非常长(50M大小的文件一般要2H左右),效率低,因此不适合对大量二进制文件进行扫描。

二进制SCA不需要源代码,适用于任何二进制文件,包括商业软件和封闭源代码的软件。

2.3. 源码SCA与二进制SCA的区别

不管是源代码文件的SCA检测还是二进制文件的SCA检测,他们是一种互补的关系,各有各的优缺点,比如二进制文件的SCA检测能发现构建过程中工具链引入的安全问题,而源代码的SCA则不能,SolarWinds事件就很好的说明了这一点。其他具体对比项可参见下表:

对比项源代码SCA二进制SCA
分析对象源代码二进制文件
分析阶段开发阶段测试阶段
适用场景适合需要精确识别依赖关系和进行深入代码审计的场景适用于需要分析二进制文件,或者源代码不可用的场景
准确率中,检测准确率依赖于二进制中调用了多少开源软件的功能
检测绕过存在,源码在构建环境中引入或链接静态库引入的开源软件会绕过源代码SCA检测不存在
依赖组件检测能力弱,尤其是没有包管理机制的语言,很难检测到依赖组件强,二进制中包含所有引入的开源软件功能特征信息
人工确认分析难度低,源代码人工对比分析容易高,二进制人工很大对比分析,需要借助反汇编等多种工具,确认门槛高

3. 当前主流SCA工具

目前市面上有许多优秀的SCA工具,其中一些主流工具包括:

  • Black Duck: Black Duck 是一款知名的软件成分分析工具,当前已经被Synopsys(新思科技)收购,Black Duck一般被同行称为"黑鸭子"(直译),提供全面的开源软件扫描和漏洞检测服务,可同时支持源码及二进制SCA,是SCA界的Top1工具。它可以帮助用户识别软件项目中使用的第三方组件、版本信息,并检测这些组件是否存在已知的漏洞。Black Duck 还提供了丰富的报告和分析功能,帮助用户管理和降低软件安全风险。
  • Snyk: Snyk 是一款专注于开源组件安全的软件成分分析工具。它可以帮助用户发现项目中的漏洞、安全威胁和依赖关系问题,并提供实时的漏洞修复建议。Snyk 还提供了与开发工具集成的功能,方便开发团队在开发过程中及时解决安全问题。
  • WhiteSource: 已经于2023年改名为Mend,它是一款综合的软件成分分析工具,旨在帮助用户管理开源组件的合规性和安全性。它可以自动识别项目中使用的开源组件、版本信息,并提供实时的漏洞警报和修复建议。WhiteSource 还提供了与 CI/CD 工具集成的功能,支持持续集成和持续交付流程。
  • Nexus Lifecycle: Nexus Lifecycle 是 Sonatype 公司推出的一款软件成分分析工具,主要用于管理开源组件的安全和合规性。它可以帮助用户发现项目中的漏洞、许可证冲突等问题,并提供自动化的修复建议。Nexus Lifecycle 还提供了与开发工具集成的功能,支持开发团队在早期发现和解决安全问题。
  • Dependency-Check: Dependency-Check 是一款OWASP维护的开源软件成分分析工具,用于检测项目中使用的第三方组件是否存在已知的漏洞。它支持多种项目构建工具和编程语言,可以快速扫描项目的依赖关系,并生成漏洞报告。Dependency-Check 提供了易于集成和使用的功能,适合中小型团队和个人开发者使用。
  • 七彩棱镜FossEye:FossEye基于“左移安全”、DevSecOps及实时监控的安全理念,在软件生命周期中对开源软件和依赖组件进行持续、自动化的识别、安全分析、持续集成管理。FossEye的目标是能够适应敏捷开发,帮助企业解决因对开源软件维护、管理不善而产生的问题。

这些工具通过自动化的方式帮助开发人员进行软件成分分析,提高了软件开发过程中对第三方组件的管理效率和安全性。

4. 参考

[1] Synopsys发布2024年开源安全和风险分析报告OSSRA
[1] 源代码与二进制文件SCA检测原理
[2] 二进制SCA检测工具—技术短板及应对措施
[3] 基于源码的二进制SCA特征生成技术
[4] 漫谈软件成分分析(SCA)安全测试技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1595748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【基于HTML5的网页设计及应用】——事件代理.

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

.rdl.data是什麼文件

https://learn.microsoft.com/zh-cn/sql/reporting-services/tools/reporting-services-in-sql-server-data-tools-ssdt?viewsql-server-ver16&redirectedfromMSDN

吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.1-1.3

目录 第一门课:第二门课 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第一周:深度学习的 实践层面 (Practical aspects of Deep Learning)…

数据可视化高级技术Echarts(桑基图入门)

目录 一、什么是桑基图 二、基本特征 三、设计注意事项 四、使用Echarts进行初级绘制 1.首先不能忘记五个基本步骤 2.绘制的时需要将图像类型series.type设定为sankey类型。 一、什么是桑基图 桑基图(Sankey diagram),即桑基能量分流图&…

基于ollama搭建本地chatGPT

ollama帮助我们可以快速在本地运行一个大模型,再整合一个可视化页面就能构建一个chatGPT,可视化页面我选择了chat-ollama(因为它还能支持知识库,可玩性更高),如果只是为了聊天更推荐chatbox 部署步骤 下载…

Linux操作系统---(1)

Linux 操作系统 一 、网络连接的三大模式 1、桥接模式 指将虚拟机直接连接到物理网络中,使得虚拟机可以像局域网中的独立主机一样进行通信。 在选择桥接模式时,如果需要使用一个分配的网络账号才能上网(比如公司或学校的网络)…

探索未来:智能客服产品架构的演进与创新

随着科技的迅猛发展和人工智能技术的不断成熟,智能客服已经成为了现代企业提供客户服务的重要方式。而智能客服产品的架构设计则直接影响着其在实际运营中的效果和用户体验。本文将探讨智能客服产品架构的演进历程以及未来的创新趋势。 1. 传统客服架构的局限性 传…

【VUE】使用Vue和CSS动画创建滚动列表

使用Vue和CSS动画创建滚动列表 在这篇文章中,我们将探讨如何使用Vue.js和CSS动画创建一个动态且视觉上吸引人的滚动列表。这个列表将自动滚动显示项目,类似于轮播图的方式,非常适合用于仪表盘、排行榜或任何需要在有限空间内展示项目列表的应…

深度学习500问——Chapter08:目标检测(1)

文章目录 8.1 基本概念 8.1.1 什么是目标检测 8.1.2 目标检测要解决的核心问题 8.1.3 目标检测算法分类 8.1.4 目标检测有哪些应用 8.2 Two Stage 目标检测算法 8.2.1 R-CNN 8.2.2 Fast R-CNN 8.2.3 Faster R-CNN 8.1 基本概念 8.1.1 什么是目标检测 目标检测(Obj…

HCIP的学习(8)

OSPF数据报文 OSPF头部信息(公共固定) 版本:OSPF版本,在IPv4网络中版本字段恒定为数值2(v1属于实验室版本,v3属于IPv6)类型:代表具体是哪一种报文,按照1~5排序&#xff…

从MySQL5.7平滑升级到MySQL8.0的最佳实践分享

一、前言 升级需求:将5.7.35升级到8.0.27, 升级方式 in-place升级【关闭现有版本MySQL,将二进制或包替换成新版本并在现有数据目录上启动MySQL并执行升级任务的方式,称为in-place升级】 原版本 5.7.35 CentOS Linux release 7.9.2009 新版本…

常见的登录验证方式

目录 一、CookieSession登录 二、Tokencookie 三、单点登录(Single Sign On——一次登录,全线通用) 四、Oauth2.0 一、CookieSession登录 HTTP是一种无状态的协议,客户端每次发送请求时,首先要和服务端创建一个连接…

TMS320F280049 EPWM模块--功率拓扑中的应用(9)

三相交错DC-DC转换器 下图为示意框图。右侧为电路示意图,可以看到用了3路epwm,每路epwm的A/B两端口分别控制一个开关管。左侧为epwm配置示意图,可以看到epwm1在ctrzero时产生同步信号输出,然后同步到epwm2和3。epwm1/2/3的相位分…

【C++】C++11 lambda表达式

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 C11引入『 lambda表…

maven3.9+下载安装

maven介绍 Maven 是一个项目管理和理解工具,它基于项目对象模型(POM)概念。Maven 可以帮助开发者定义项目结构、依赖关系、构建过程以及其他任务。它主要用于 Java 项目,但也可以用于其他类型的项目。Maven 的主要目标是简化构建…

传感器展会现场直击!道合顺传感邀您共鉴气体传感器前沿技术

4月14日,#深圳国际传感器#与应用技术展览会在深圳会展中心(福田)如期举办。道合顺传感亮相本届大会并展示了对气体传感器的探索和最新研究成果,获得了传感器业内的广泛关注。 多年来,道合顺传感依托于雄厚的研发实力&a…

京东jd商品详情数据接口丨店铺所有商品接口丨评论接口丨京东API接口

京东(JD)作为中国的主要电商平台之一,提供了丰富的API接口供商家和开发者使用,以便获取商品详情、店铺所有商品以及评论等数据。使用这些接口时,你需要先成为京东的商家或开发者,并在京东开放平台注册账号&…

一个令人惊艳的图片高清化重绘神器:SUPIR来了!

今天给大家分享一个将模糊图片还原为照片级高清图像的AI项目:SUPIR。这个项目以尖端的大规模人工智能革新图像恢复技术,通过文本驱动、智能修复,将AI技术与创新思维相结合,赋予每张图像全新的生命力。这个项目的修复能力本质上是一…

Python 实战人工智能数学基础:图像处理应用

1.背景介绍 在许多计算机视觉任务中,图像处理占据了很重要的角色,尤其是在目标检测、特征提取、分类、跟踪等计算机视觉任务中。图像处理是一个复杂的过程,涉及到图像的采集、分析、存储、显示等环节。本文将讨论基于Python实现的图像处理的…

Solana主网使用自定义的RPC进行转账

1、引言 如果用 browser 连接主网的 RPC server 会收到 error code 403 message 為 Access forbidden, contact your app developer or supportrpcpool.com. 错误,因为主网的 RPC server 会检查 HTTP Header 如果判断出來是 browser 就会报告 403 錯誤。 要解決这…