专栏特辑丨悬镜浅谈开源风险治理之SBOM与SCA

随着容器、微服务等新技术日新月异,开源软件成为业界主流形态,软件行业快速发展。但同时,软件供应链也越来越趋于复杂化和多样化,软件供应链安全风险不断加剧。

软件供应链安全主要包括软件开发生命周期和软件生存运营周期,且与软件开发过程中的开发人员、环境、工具等因素密切相关。推进针对软件生命周期进行全流程安全管控的落地实践,有助于从软件生命周期的源头保障软件供应链安全。

一、战略抉择驱动:始于对关键环节可见性的持续构建

软件供应链安全始于对关键环节的可见性,企业需要为每个应用程序持续构建详细的SBOM(软件物料清单),从而全面洞察每个应用软件的组件情况。SBOM是描述软件包依赖树的一系列元数据,包括供应商、版本号和组件名称等多项关键信息,这些信息在分析软件安全漏洞时发挥着重要作用。

表1是一份软件物料清单示例,其中SPDX(软件包数据交换)和SWID(软件标识)是两种国际通用的SBOM字段标准。

SPDX用于交流软件物料清单信息,包括组件、许可证、版权等信息,通过为公司和社区共享重要数据提供通用格式来减少冗余工作,从而简化流程并提高合规性。

SWID标签旨在为组织提供一种透明的方式来跟踪在他们的托管设备商安装的软件,该标签文件包含有关软件产品特定版本详尽的描述性信息。除表格中的两种应用最为广泛的SBOM字段标准外,还有CycloneDX、CoSWID、CPE、Grafeas等其他较为常见的标准,各标准应用场景存在一定区别。

DSDX协议的组成要素


DSDX(Digital Supply-chain Data Exchange)SBOM格式由OpenSCA社区主导发起,汇聚开源中国、电信研究院、中兴通讯等权威研究机构、甲方用户、安全厂商多方力量,共同适配中国企业实战化应用实践场景。

作为国内的数字供应链安全SBOM格式,DSDX目标是成为数字供应链安全治理与运营的核心技术抓手,以助力行业及产业从软件供应链安全向数字供应链安全过渡升级,使每个软件公司都可以将SBOM 附加到每个可交付成果,并且每个人都可以完全了解软件中使用的组件,并确切地知道哪些漏洞正在影响该软件。

DSDX规范文档由基本信息、项目信息、对象信息、代码片段信息及依赖信息这几部分构成:

1)SBOM 清单信息:清单名称、ID、创建者、清单版本、创建阶段、创建时间等

2)项目基本信息:项目名称、宿主环境信息、运行时环境信息、EAR 信息等

3)组件信息:组件名称、ID、厂商、组件来源、组件类型、置信度、校验码、语言、依赖关系、依赖数量、依赖路径等

4)代码文件信息:名称、ID、校验码、路径、相似文件来源、相似度

5)代码片段信息:ID、来源文件 ID、校验码、代码片段位置、相似代码片段来源、相似度

6)依赖树信息:以 K-V 形式保存的项目完整依赖关系图(在任何情况下,SBOM 都应该捕获多级依赖关系)

7)备注信息:其他备注信息。

DSDX兼容SPDX、CycloneDX、SWID国际标准和国内标准,但不止于主流规范,在最小元素集基础上扩展其他元素。DSDX重点引入了运行环境信息、创建阶段和供应链流转信息,加强了清单间的互相引用,并实现最小集/扩展集的灵活应用,深度支持代码片段信息的存储及追踪,为企业用户提供整个数字供应链基础设施视角的落地治理实践。

构建软件的企业需要维护准确、最新的 SBOM,其中包括第三方和开源组件的清单,以确保其代码质量高、合规且安全。企业通过要求软件供应商提供 SBOM,以发现潜在的安全和许可证问题,或者应用程序是否使用过时的库版本。

当发现此类问题时,管理员可以要求供应商使用较新版本重建应用程序,在等待更新的软件期间,安全人员有机会采取临时缓解措施来保护应用程序免受攻击者利用该漏洞进行攻击,还可以帮助安全人员在漏洞被披露或核心库发布新版本时,对应用程序和代码进行抽查以避免出现安全问题。

二、速度创造价值:SBOM对漏洞风险治理实践的影响

SBOM的使用可以为软件供应链的漏洞治理节省大量时间。以往,企业在修复已部署系统的漏洞缺陷时往往需要几个月甚至是数年的时间,其重要原因是企业无法在漏洞出现的第一时间知晓该信息。软件供应链下游的企业需要等待上游软件供应商完成软件补丁,才可以进行漏洞修复,在等待的时间内,下游企业往往会面临无法预知的安全风险。而构建详细准确的SBOM则可以避免这一现象的发生,允许所有利益相关者在漏洞发现时立即开始评估漏洞,并开始制定相关的补救措施。

受感染的开源组件在软件中未被修复的每一分钟都会增加潜在被利用的风险,SBOM 有助于企业在漏洞披露的早期对漏洞进行识别,通过提供受感染开源组件和依赖项的准确位置,为企业在风险分析、漏洞管理和补救过程中节省数百小时至数月的时间。SBOM 有助于揭示整个软件供应链中的漏洞与弱点,提高软件供应链的透明度,减轻软件供应链攻击的威胁,还可以帮助企业进行漏洞管理、应急响应、资产管理、许可证和授权管理、知识产权管理、合规性管理、基线建立和配置管理等。

三、勤于思、敏于行:基于SCA技术工具及时响应

企业需要谨慎、合理地选择、获取和使用第三方闭源组件和开源组件。软件安全团队或研发团队通过必要的技术手段确保所使用的第三方组件的安全性,及时获取所使用第三方组件和开源组件的漏洞情报,并适时做出响应。

软件成分分析(SCA)是一种对二进制软件的组成部分进行识别、分析和追踪的技术。SCA可以生成完整的SBOM,分析开发人员所使用的各种源码、模块、框架和库,以识别和清点开源软件的组件及其构成和依赖关系,并精准识别系统中存在的已知安全漏洞或者潜在的许可证授权问题,把这些安全风险排除在软件的发布上线之前,也适用于软件运行中的诊断分析。

SCA分为静态和动态两种模式。静态模式是使用工具对目标工程文件进行解压,识别和分析各个组件的关系;动态模式则是依赖于执行过程,在程序执行的同时收集必要的活动元数据信息,通过数据流跟踪的方式对目标组件的各个部分之间的关系进行标定。

使用基于多源SCA开源应用安全缺陷检测技术的安全审查工具,可以精准识别应用开发过程中软件开发人员有意或违规引用的开源第三方组件,并通过对应用组成进行分析,多维度提取开源组件特征,计算组件指纹信息,深度挖掘组件中潜藏的各类安全漏洞及开源协议风险。

Apache log4j 2漏洞,因其严重性和广泛性的影响而被业界称为“核弹级”漏洞,同时也使得开源安全及软件供应链安全治理相关话题再次成为热点。

开源安全作为软件供应链安全的重要环节以及面临的已知或未知的安全风险,更让业界意识到开源安全治理已是迫在眉睫。通过引入SCA工具以保证软件供应链安全,在软件开发的需求阶段、编码阶段、构建集成、软件测试等相应阶段使用SCA,将开源组件安全检测和合规检测融入到企业开发测试流程中,可以帮助企业以最小代价落地开源安全保障体系,降低软件安全问题的修复成本,保障开源软件供应链安全。

悬镜安全率先在源鉴SCA商业化产品中集成了DSDX、SPDX、CycloneDX、SWID四种SBOM标准格式的自动化生成能力。在商业化的同时,悬镜安全更不忘为开源社区、广大开发者和中小企业赋能,旗下开源数字供应链安全社区OpenSCA是目前国内能够完全自主化、自动化生成DSDX、SPDX格式SBOM清单的开源SCA工具。

问题解答

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

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

相关文章

18.Excel数据透视表:第1部分创建数据透视表

一 什么是数据透视表 通过万花筒可以用不同的方式査看里面画面图像,在excel中可以将数据透视表看作是对准数据的万花筒,用不同角度去观察数据,也可以旋转数据,对数据进行重新排列,对大量的数据可以快速的汇总和建立交叉…

商业航天运动控制系统中的高可靠性芯片解决方案:挑战、策略与应用研究

摘要:随着商业航天领域的迅速发展,运动控制系统对芯片的可靠性提出了前所未有的挑战。本文深入探讨了商业航天运动控制系统中芯片可靠性面临的挑战,包括宇宙辐射效应、极端环境适应性及系统级可靠性保障等。同时,通过案例研究展示…

音视频学习:使用NDK编译FFmpeg动态库

1. 环境 1.1 基础配置 NDK 22b (r22b)FFmpeg 4.4Ubuntu 22.04 1.2 下载ffmpeg 官网提供了 .tar.xz 包,可以直接下载解压: wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz tar -xvf ffmpeg-4.4.tar.xz cd ffmpeg-4.41.3 安装基础工具链 sudo …

前端开发避坑指南:React 代理配置常见问题与解决方案

前端开发避坑指南:React 代理配置常见问题与解决方案 一、为什么需要配置代理?二、使用 create-react-app 默认配置代理三、使用 http-proxy-middleware 配置复杂代理四、高级代理配置五、生产环境中的代理配置一、为什么需要配置代理? React 应用在开发过程中经常需要与后端…

用影刀RPA打通内容创作“最后一公里”:CSDN草稿一键同步多平台发布

文章目录 引言 一、需求场景:多平台分发的效率困境1. 痛点分析2. 影刀RPA的破局价值 二、影刀RPA是啥?打工人逆袭神器!三、手把手教你造"搬运工"——技术宅的土味开发日记第一步:当个"偷窥狂"——观察手动操作…

进程与线程:09 进程同步与信号量

课程引入:进程同步与信号量 接下来这节课开始,我们再开始讲多进程图像。讲多进程图像的下一个点,前面我们讲清楚了多进程图像要想实现切换,调度是如何做的。同时,多个进程放在内存中,就会存在多进程合作的…

【愚公系列】《Manus极简入门》036-物联网系统架构师:“万物互联师”

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! &#x1f…

MySQL 8.0 OCP 英文题库解析(四)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题26~30 试题26:…

什么是原码和补码

补码的本质确实是模运算(Modular Arithmetic),这是理解补码为何能统一加减法的核心数学原理。下面用最通俗的语言和例子解释清楚: —### 1. 先理解什么是“模运算”- 模运算就是“周期性计数”,比如钟表: -…

笔记项目 day02

一、用户登录接口 请求参数: 用loginDTO来封装请求参数,要加上RequestBody注解 响应参数: 由于data里内容较多,考虑将其封装到一个LoginUser的实体中,用户登陆后,需要生成jwtToken并返回给前端。 登录功…

2025年土木建筑与水利工程国际会议(ICCHE 2025)

2025 International Conference on Civil and Hydraulic Engineering (ICCHE 2025) (一)会议信息 会议简称:ICCHE 2025 大会地点:中国银川 投稿邮箱:icchesub-paper.com 收录检索:提交Ei Compendex,CPCI,C…

运行Spark程序-在shell中运行1

(一)分布式计算要处理的问题 【老师提问:分布式计算要面临什么问题?】 【老师总结】 分布式计算需要做到: 1.分区控制。把大的数据拆成一小份一小份的(分区,分片)让多台设备同时计算…

一文理清人工智能,机器学习,深度学习的概念

目录 一、人工智能的起源与核心范畴(1950-1980) 1.1 智能机器的最初构想 1.2 核心范畴的初步分化 二、机器学习的兴起与技术分化(1980-2010) 2.1 统计学习的黄金时代 2.2 神经网络的复兴与子集定位 2.3 技术生态的形成与AI…

《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码

《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码 在编程的世界里,每个语言都有其独特的风格和最佳实践。对于 Python 而言,“Pythonic”已经成为描述遵循 Python 特定风格的代码的代名词。这种风格不仅让代码更易读、更简…

MySQL 事务(二)

文章目录 事务隔离性理论理解隔离性隔离级别 事务隔离级别的设置和查看事务隔离级别读未提交读提交(不可重复读) 事务隔离性理论 理解隔离性 MySQL服务可能会同时被多个客户端进程(线程)访问,访问的方式以事务方式进行一个事务可能由多条SQL…

代码仓提交分支规范

以下是我部门开发时用的分支规范,参考于Linux社区 Tips 分支命名通常遵循一些最佳实践和规则,以便使分支的用途和内容清晰易懂,就在写一个文档的主题一样。 功能分支 (Feature Branches) 用于开发新功能。 命名格式:feature/功能名…

Google Earth Engine(GEE) 代码详解:批量计算_年 NDVI 并导出(附 Landsat 8 数据处理全流程)

一、代码整体目标 基于 Landsat 8 卫星数据,批量计算 2013-2020 年研究区的 NDVI(归一化植被指数),实现去云处理、数据合成、可视化及批量导出为 GeoTIFF 格式,适用于植被动态监测、生态环境评估等场景。 二、代码分步解析(含核心原理与易错点) 1. 加载并显示研究区边…

Maven 处理依赖冲突

Maven处理依赖冲突 什么是依赖冲突?如何解决?Maven自动处理依赖冲突的规则路径优先原则第一声明优先原则注意 子模块覆盖父模块父模块声明dependency子模块覆盖dependency父模块声明dependencyManagement 子模块覆盖dependency父模块声明dependencyManag…

docker 安装 sqlserver2022 和注意点

一、前言 1、可以直接参考微软官方文档 快速入门:使用 Docker 运行 SQL Server Linux 容器映像,这里主要是说一些注意点和坑 二、安装 1、拉取镜像 docker pull mcr.microsoft.com/mssql/server:2022-latest2、创建挂载目录,这里只是比官方…

Dagster Pipes系列-1:调用外部Python脚本

本文是"Dagster Pipes教程"的第一部分,介绍如何通过Dagster资产调用外部Python脚本并集成到数据管道中。首先,创建Dagster资产subprocess_asset,利用PipesSubprocessClient资源执行外部脚本external_code.py,实现跨进程…