软件供应链安全关键入口-SCA工具初探索

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

SCA的发展背景

步入2024 - 2025年,软件开发领域的复杂度呈指数级攀升。在敏捷开发、微服务架构盛行的当下,软件项目对第三方组件及开源软件的依赖愈发显著。以2024年的行业数据为例,超80%的企业级软件项目中,第三方组件与开源软件的代码占比平均达到40% ,部分互联网创新应用甚至高达70%。 虽然这些第三方资源极大加速了开发进程,提升了效率,却也带来了前所未有的安全隐患。

2024年上半年,工业和信息化部电子第五研究所软件发布的报告指出,开源软件漏洞传播范围广,危害性沿供应链传播且逐级放大,开源组件漏洞一级传播(直接依赖)影响范围扩大125倍,二级传播(间接依赖)影响范围扩大173倍。

像2021年爆发的log4j2漏洞,修复周期长达十余年,期间持续引发安全风险。同时,利用第三方组件漏洞进行供应链攻击的行为也愈加频繁,攻击者将移动设备的0day漏洞制作成间谍软件进行商业化,近50%被用于执行间谍活动。

在这样的背景下,SCA(软件成分分析)技术顺势崛起,成为保障软件开发生命周期安全的关键防线。它通过深度扫描和智能分析,精准识别软件中的第三方组件与开源软件,梳理依赖关系,快速定位潜藏的安全漏洞与法律合规风险,比如许可证合规问题,避免企业陷入法律纠纷。从安全左移理念出发,在开发早期融入SCA检测,能有效减少漏洞引入;在持续集成/持续部署(CI/CD)流程中,SCA实时监控,一旦发现风险,即刻阻断发布,确保交付软件的安全性与合规性,已然成为现代软件开发不可或缺的关键技术。

SCA技术原理

SCA技术的核心原理包括对软件源代码或二进制文件进行扫描,识别其中使用的第三方组件、库和框架,分析其版本、许可证、漏洞等信息,并生成报告以供开发人员参考。一款优秀且成熟的SCA工具至少要涵盖SCA源码组件成分分析、制品二进制分析技术、容器镜像成分扫描技术、运行时成分动态追踪技术、代码成分溯源分析技术及开源供应链安全情报分析等六大核心引擎。接下来重点介绍下源码级SCA技术、二进制SCA技术。

源码级SCA技术又包括基于源码文件的代码溯源分析和基于包管理器的组件依赖检测。

基于代码文件的同源检测(或“代码溯源分析”)是指对应用程序或软件中的组成成分进行同源性分析,通过静态分析技术,提取被检代码中的函数、变量、标识符等特征信息,结合相似哈希精准匹配算法将提取出的代码特征生成Token指纹并与源鉴SCA的同源指纹库进行检测对比,识别出所引用的开源组件、开源项目,全面审视代码片段引入的风险。检测结果可将相似代码行高亮显示,相关数据在平台可视化呈现,并可生成对应检测报告。一般代码溯源分析工具支持Java、C、C++、Python等主流开发语言的检测,同时支持文件级、函数级、代码片段级的检测策略,检测粒度可精确到3行代码片段。通过提供多维度的开源代码和自研代码的比例展示,帮助企业或团队评估产品的自研率。

图:同源检测实现流程

基于包管理器的组件依赖检测

软件包管理器是一种用于管理开发项目中引入的第三方软件或组件的工具,方便开发人员快速高效地安装、升级、配置和使用软件或组件。不同编程语言有不同的包管理器,目前主流的编程语言都有专用的包管理器。基于包管理器的依赖检测技术,首先通过递归解压方式解析源码包内容,根据每种语言的包管理器的依赖规则,精确识别并定位依赖特征文件的位置,并通过多级开源组件依赖特征提取技术,精准提取组件信息,分析开源第三方组件直接及间接依赖信息,同时也可以连接Sonatype Nexus、JFrog Artifactory等企业内部私服仓库以全面检测组件的全量依赖信息,结合源鉴SCA的实时知识库数据,解析生成组件依赖关系,进而分析组件的漏洞及许可证风险信息,最后将检测结果数据在平台可视化展示,并可生成SBOM组件风险清单。

图:基于Maven包管理器的组件依赖检测

二进制SCA技术

对二进制应用程序进行安全分析过程中,基于二进制代码相似度比较技术来识别二进制应用程序中用到的开源项目成分,从二进制文件中提取特征信息,然后将其与从源代码项目中提取的信息进行相似度匹配,从而检测出二进制文件中用到的开源项目信息,进而分析其中的漏洞风险和许可证风险。

图:二进制SCA检测处理流程

主流SCA工具

  1. 源鉴SCA:源鉴SCA是悬镜安全自主研发的新一代开源数字供应链安全审查与治理平台,具备源码、二进制、容器镜像、代码溯源、运行时及供应链风险情报预警等六大核心引擎能力,可深度挖掘开源组件的安全漏洞与协议风险,帮助企业从多维度闭环治理开源威胁。2021年12月31日,悬镜安全发布开源数字供应链安全社区OpenSCA,基于源鉴SCA核心技术开源,整合软件成分分析、依赖图谱、代码特征识别、开源许可证合规检测及组件投毒防护等模块,结合云端SaaS平台与实时威胁情报,覆盖软件供应链全生命周期,提供动态资产清单管理和智能风险溯源功能,展现出强大的DevSecOps场景适配能力。源鉴SCA作为商业化版本,提供更全面的安全治理能力;OpenSCA则以开源模式为社区用户带来灵活、易用的开源组件安全管理方案。
  2. Snyk: Snyk 是一款专注于开源组件安全的软件成分分析工具。它可以帮助用户发现项目中的漏洞、安全威胁和依赖关系问题,并提供实时的漏洞修复建议。Snyk 还提供了与开发工具集成的功能,方便开发团队在开发过程中及时解决安全问题。
  3. Black Duck: Black Duck 是一款知名的软件成分分析工具,当前已经被Synopsys(新思科技)收购,Black Duck一般被同行称为"黑鸭子"(直译),提供全面的开源软件扫描和漏洞检测服务,可同时支持源码及二进制SCA,它可以帮助用户识别软件项目中使用的第三方组件、版本信息,并检测这些组件是否存在已知的漏洞。
  4. WhiteSource: 已经于2023年改名为Mend,它是一款综合的软件成分分析工具,旨在帮助用户管理开源组件的合规性和安全性。它可以自动识别项目中使用的开源组件、版本信息,并提供实时的漏洞警报和修复建议。WhiteSource 还提供了与 CI/CD 工具集成的功能,支持持续集成和持续交付流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值