2025开源风险治理最佳实践︱新能源汽车车企开源风险治理案例
案例来源:悬镜安全
- 案例背景
当前我国新能源汽车产业蓬勃发展,智能网联趋势持续深化。汽车技术与工程核心逐渐从传统硬件层面转移到软件层面,踏上软件定义汽车(SDV)的变革之路。引用开源组件成为车企、Tier1、Tier2在软件开发过程中的常规操作,但同时也使车企面临了安全漏洞、许可证、供应链攻击等安全风险的严峻挑战。某车汽车品牌是我国新能源汽车行业领导者,业务布局涵盖汽车、新能源、轨道交通和电子等领域。在汽车的智能化和数字化转型中,需要应对汽车面临的网络攻击、安全合规、开源组件风险等多重网络安全问题。为此,用户提出了以下4方面的安全需求:
- 业务软件安全需求:大量网联的业务软件使网联汽车面临了网络攻击、恶意软件、数据泄露等诸多网络风险。车企不仅需要遵守国内外相关法规确保整车安全合规,还要能有效防范车联网应用中存在的漏洞及潜在的安全风险。
- 固件安全需求:除了应用软件,智能汽车还有大量的嵌入式固件和硬件通信接口,这些都可能成为网络攻击的入口。因此,需要对车机固件和外采零部件进行二进制级别的安全扫描,及时发现潜在的漏洞和安全风险,并根据实际情况采取有效的防护措施。
- 许可版权需求:不同的开源组件带有特定的许可证要求,且涉及到海外出口商业分发,若未正确遵守组件许可,可能导致法律纠纷或商业损失。
- 供应链存续需求:随着国际贸易关系的紧张,部分开源组件逐步对国内市场实施闭源甚至制裁策略,这使得企业在依赖这些组件时面临“断供”风险。为此企业需提高供应链透明度,确保能够清晰地了解每个组件的来源和许可情况。
2.方案介绍
为了进一步提升整车安全能力,识别整车软件安全漏洞及整车软件组成成分,避免整车软件引入开源及第三方软件带来的许可协议风险、法律管制风险、漏洞风险、专利风险等问题,该用户引入悬镜源鉴SCA进行开源治理。相关安全能力包括:SBOM管理、二进制SCA分析、漏洞管理、组件依赖检测、开源许可分析、代码溯源分析、供应链风险预警。在该项目中,涉及多条业务线及不同扫描场景,业务量繁多,峰值二进制扫描需求量可达每小时数百个车机固件包。用户采用K8S分布式集群架构部署承载该扫描并发量。方案框图如下图所示。
3.源鉴SCA能力说明
SBOM管理 支持对DSDX、SPDX、CycloneDX等标准格式SBOM风险扫描和导出,提供目标软件中使用的许可证列表及风险提示,适用于C、C++、Java等汽车行业常用的多种开发语言。
二进制SCA分析 适配.hex、.xcd、.out、.mot等车端产品不同固件格式,基于源鉴SCA二进制制品成分分析引擎,分析可执行二进制的具体特征,提供对应的软件成分、漏洞风险等。
漏洞管理 提供详细的漏洞风险告警、漏洞影响分析及对应的修复建议,支持与漏洞安全管理中台进行深度集成,进行全局任务调度和风险管理。
组件依赖检测 能够识别并标明组件直接依赖和间接依赖,展示组件来源、组件引用位置、组件具体引入路径,引入的具体代码行数、代码片段等。
开源许可分析 识别项目中引用的许可证,对许可证进行风险评定,并对其内容进行相应的解读分析,包括许可证的使用条件、使用限制、使用范围、风险说明,帮助用户梳理许可证风险,及时履行许可证义务,规避开源许可违规问题。
代码溯源分析 基于代码成分溯源引擎,源鉴SCA可对应用内所引用的开源代码进行溯源分析,识别出所引用的开源项目,包括开源项目的名称、仓库地址、引用的许可证、官网链接、项目描述、匹配文件或代码片段及引用路径等。
供应链风险预警 源鉴SCA的漏洞信息兼容OWASP TOP10、国家信息安全漏洞库(CNNVD)、国家信息安全漏洞共享平台(CNVD)及CWE标准,结合在云端的“悬镜大脑”监控众多供应链情报,包括但不限于漏洞、组件、许可证,通过清洗、匹配、关联等一系列自动化数据分析处理后,向源鉴SCA及时推送供应链风险情报,并关联用户已有的组件、软件包、应用资产,让用户及时获取影响资产安全的最新供应链风险情报,开展治理工作。
4.实施过程介绍
针对自研业务线,引入SCA集成到CI/CD流水线,在编译构建前接入SCA检测,实现代码拉取构建时的自动化扫描,并将结果推到研发运维平台供研发查看整改。在上线前设立安全卡点,配置组件黑名单、漏洞黑名单、许可证黑名单等安全基线,通过安全卡点后方允许装车上线。
针对外采供应商场景,其特点是无法管控源代码,通过利用源鉴SCA二进制文件及SBOM文件风险扫描能力,审查交付的.Hex,.Android dex,Mot,.Xcd,.Xcd2二进制固件制品,输出标准SBOM清单后,并对比供应商提交的软件组件清单,审核确认需整改的漏洞及许可证风险,勒令供应商进行整改,整改完毕后方允许装车。
用户通过源鉴SCA,还建立了整车供应链安全审查制度,针对嵌入式固件及车端应用输出SBOM清单,梳理许可证风险,并将车端应用涉及的软件许可,在车端大屏中进行“开放源代码许可”声明公示。
5.方案特点
悬镜安全的源鉴SCA方案旨在为用户提供一套全面的整车供应链安全审查制度,通过输出SBOM清单,梳理许可证风险,并在车端大屏中进行“开放源代码许可”声明公示,从而提高供应链透明度,规避版权许可问题,并实现整车组件的可管控与可追溯。其方案特点体现在以下几个方面:
1、该方案具备高度的可扩展性和通用性,适用于多种业务场景
该方案能够覆盖整车安全组、运维部门、开发部门、测试部门以及外包服务商等多部门协同工作的复杂情况,还能覆盖多条业务产线,确保安全措施的统一性和一致性。
2、聚焦于新能源汽车行业,针对嵌入式固件及车端应用进行了精心设计
该方案能够有效地处理汽车行业常用的各类固件文件格式,对供应商不提供源码的,该方案可以够通过智能分析工具识别固件中的组件成分,确保了方案的专业性和针对性。
3、提高了整车软件供应链的透明度,提升车企开源风控的能力
源鉴SCA可以结合公司内部的采购规范及要求,对第三方供应商的产品安装包、固件包进行软件成分安全审查,自动化梳理已有及新增车载应用系统的组件资产,多维度分析开源组件的影响范围和依赖关系,提高整车供应链的透明度,并且在安全事件发生时及时回溯风险组件的位置及影响范围,全面提升车企开源风控能力。
4、简化了流程,提升了用户体验
方案实现一站式自动化开源组件漏洞风险管理,整体检测目标文件类型覆盖率98%以上,漏洞修复时间缩短60%以上,通过直观的车端大屏进行“开放源代码许可”声明公示。简化了复杂的许可证管理和组件追踪过程,有效提升该车企整体处置效率、减少运营成本。
案例点评
开源风险源自开源代码的引入,其多源性和多样性决定这需要一个长久治理过程。该案例在开源风险治理中将流程管控与审查管理进行结合,在规避网络风险的同时,也助力了企业建立更为严格的质量控制体系。在应用效果上,即能体现时性也可能在一定程度上提升管理方案的长效性。该车企作为新能源汽车领域的领导者,其成功实践可以为其他车企树立榜样,推动整个行业在供应链安全治理方面的进步。
相关文章:
2025开源风险治理最佳实践︱新能源汽车车企开源风险治理案例
案例来源:悬镜安全 案例背景 当前我国新能源汽车产业蓬勃发展,智能网联趋势持续深化。汽车技术与工程核心逐渐从传统硬件层面转移到软件层面,踏上软件定义汽车(SDV)的变革之路。引用开源组件成为车企、Tier1、Tier2在软件开发过程中的常规操…...
Spring中Bean的自动装配
1.自动装配的核心概念 定义: Bean的自动装配是Spring框架中用于自动满足Bean依赖的一种机制。通过自动装配,Spring容器会在应用上下文中为某个Bean寻找其依赖的Bean,从而减少手动配置的工作量。其核心目标是减少配置代码,通过类型…...
一文掌握 PostgreSQL 的各种指令(PostgreSQL指令备忘)
引言 PostgreSQL 作为一款功能强大、开源的关系型数据库管理系统(RDBMS),以其高扩展性、SQL 标准兼容性以及丰富的功能特性,成为企业级应用的首选数据库之一。无论是开发、运维还是数据分析,掌握 PostgreSQL 的核心指…...
C#入门学习记录(三)C#中的隐式和显示转换
C#类型转换:隐式与显式转换的机制与应用 在C#的强类型体系中,数据类型转换是实现数据交互和算法逻辑的基础操作。当数值类型范围存在包含关系,或对象类型存在继承层次时,系统通过预定义的转换规则实现类型兼容处理。隐式转换&…...
【Linux网络-网络层】TCP与IP的关系+IP协议基本概念+网段划分+路由+IP分片与组装
网络层 在复杂的网络环境中确定一个合适的路径 一、TCP与IP的关系 TCP(传输控制协议)和IP(互联网协议)是互联网协议栈中的两个核心协议,属于不同的层级,分别在传输层和网络层,共同实现数据的可…...
【第K小数——可持久化权值线段树】
题目 代码 #include <bits/stdc.h> using namespace std;const int N 1e5 10;int a[N], b[N]; int n, m, len; int rt[N], idx; // idx 是点分配器struct node {int l, r;int s; } tr[N * 22];int getw(int x) {return lower_bound(b 1, b len 1, x) - b; }int bui…...
需要使用新应用以打开此ms-gamingoverlay链接怎么解决
要解决Windows系统提示“需要使用新应用以打开此ms-gamingoverlay链接”的问题,通常与系统自带的游戏工具栏(Game Bar)或Xbox相关应用缺失或配置错误有关。以下是综合多个来源的详细解决方法: 方法1:关闭游戏栏功能 这…...
五子棋小游戏-简单开发版
一、需求分析 开发一个基于 Pygame 库的五子棋小游戏,允许两名玩家在棋盘上轮流落子,当有一方达成五子连珠时游戏结束,显示获胜信息,并提供退出游戏和重新开始游戏的操作选项。 1.棋盘显示 : 显示一个 15x15 的五子棋…...
C语言内存函数讲解
(一)memcpy函数 这是memcpy函数的说明。它的头文件是string.h。函数原型是 void* memcpy(void* destination, const void* source, size_t num) 第一个参数是一个指向一个字符串的指针,第二个也是一样的。而第三个参数是复制的字节个数。这…...
2018年全国职业院校技能大赛高职组-计算机网络应用竞赛竞赛样题C卷
目录 总体规划 模块二:设备基础信息配置 模块三:网络搭建与网络冗余备份方案部署 模块四:移动互联网搭建与网优 模块五:出口安全防护与远程接入 总体规划 CII教育公司在进行企业大学信息化建设的过程中,为了保证北京校区、广州校区与本部校区的日常OA办公通信等关键业务,…...
《解锁Flutter:跨平台开发的未来之光》:此文为AI自动生成
《解锁Flutter:跨平台开发的未来之光》:此文为AI自动生成 Flutter:崭新时代的跨平台框架 在当今数字化浪潮中,移动应用已成为人们生活中不可或缺的一部分。无论是购物、社交、娱乐还是办公,我们都离不开各种手机应用…...
基于大数据的酒类商品数据可视化分析系统
【大数据】基于大数据的酒类商品数据可视化分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统充分利用Python与Flask的强大后端处理能力,结合前端Layui框架࿰…...
【数学建模】一致矩阵的应用及其在层次分析法(AHP)中的性质
一致矩阵在层次分析法(AHP)中的应用与性质 在层次分析法(AHP)中,一致矩阵是判断矩阵的一种理想状态,它反映了决策者判断的完全合理性和一致性,也就是为了避免决策者认为“A比B重要,B比C重要,但是C又比A重要”的矛盾。…...
【YOLOv8】YOLOv8改进系列(7)----替换主干网络之LSKNet
主页:HABUO🍁主页:HABUO 🍁YOLOv8入门改进专栏🍁 🍁如果再也不能见到你,祝你早安,午安,晚安🍁 【YOLOv8改进系列】: 【YOLOv8】YOLOv8结构解读…...
【MySQL】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法
在DQL的基础查询中,我们已经学过了多表查询的一种:联合查询(union)。本文我们将系统的讲解多表查询。 笛卡尔积现象 首先,我们想要查询emp表和stu表两个表,按照我们之前的知识栈,我们直接使用…...
练习-平方拆分问题(线性筛法-筛质数)
问题描述 小蓝非常热爱数学,一天老师给小蓝出了一道数学题,想锻炼锻炼小蓝的思维能力。题目是这样的:给定两个数 a 和 b,在 a 到 b(包括 a,b)之间所有数的平方当中,试问有几个数能够表示为 xy …...
CVE-2018-2628(使用 docker 搭建)
介绍: 是一个影响 Oracle WebLogic Server 的严重漏洞,属于 远程代码执行(RCE) 漏洞。以下是对该漏洞的详细分析: ● 漏洞类型: 远程代码执行(RCE) ● 影响范围:Oracle WebLogic Server 10.3.6.0, 12.1.3.0, 12.2.1.2…...
【深度学习与大模型基础】第5章-线性相关与生成子空间
线性相关是指一组向量中,至少有一个向量可以表示为其他向量的线性组合。具体来说,对于向量组 v1,v2,…,vn,如果存在不全为零的标量 c1,c2,…,cn使得: c1v1c2v2…cnvn0 则称这些向量线性相关。否则,它们线性无关。 举…...
使用 PaddlePaddle 官方提供的 Docker 镜像
CUDA版本高PaddlePaddle不支持时,可以使用 PaddlePaddle 官方提供的 Docker 镜像 1. 安装 Docker Desktop1.1 下载 Docker Desktop1.2 安装 Docker Desktop1.3 启用 WSL 2 或 Hyper-V1.4 启动 Docker Desktop1.5 Docker不运行解决方法 2. 拉取 PaddlePaddle Docker …...
LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 论文阅读
一、TL;DR 为什么要这么做?预训练模型越来越大,比如GPT-3 175B训练独立变得越来越不可行方法:冻结预训练模型的权重,在Transformer架构的每一层中注入可训练的低秩分解矩阵效果:训练参数量减少10000x&…...
企业的应用系统
一、人力资源系统 负责管理员工信息,处理入职,离职,调岗。 1、一般员工的信息有电子档和纸质档两份。 电子档经常是excel文件。 2、高级的公司会建立一套Web应用系统。 3、实现的功能: 新员工入职登记 (登记信息一般是:…...
SpringBoot手动注册定时任务
一、背景 项目存在这样一个场景。程序启动过程中,在Spring的Bean组件注册完毕后,会初始化一些基础数据到数据库中,而项目中有部分定时任务需要依赖这些基础数据才能正常运行。如果直接使用Scheduled注解标注定时任务方法,会导致定…...
通过 Python 爬虫提高股票选股胜率
此贴为Python爬虫技术学习贴 在股票中,即便有了选股规则,从5000多只股票中筛选出符合规则的股票也是十分困难的,于是想通过爬虫来实现自动化的快速选股。全文用GP代替股票 实现方案 1、指定两套规则,第一套弱约束,第…...
InternVL:论文阅读 -- 多模态大模型(视觉语言模型)
更多内容:XiaoJ的知识星球 文章目录 InternVL: 扩展视觉基础模型与通用视觉语言任务对齐1.概述2.InternVL整体架构1)大型视觉编码器:InternViT-6B2)语言中间件:QLLaMA。3)训练策略(1)…...
代码随想录算法训练营第三十五天(20250303) |01背包问题 二维,01背包问题 一维,416. 分割等和子集 -[补卡20250316]
01背包问题 二维 链接 遍历物品没有大小顺序要求重点是模拟,推导出递推公式 #include <iostream> #include <vector>int main(){int m, n;std::cin>>m>>n;std::vector<int> weight(m,0),value(m,0);for(int i{0}; i<m; i){std:…...
RGV调度算法(三)--遗传算法
1、基于时间窗 https://wenku.baidu.com/view/470e9fd8b4360b4c2e3f5727a5e9856a57122693.html?_wkts_1741880736197&bdQuery%E7%8E%AF%E7%A9%BF%E8%B0%83%E5%BA%A6%E7%AE%97%E6%B3%95 2.2019年MathorCup高校数学建模挑战赛B题 2019-mathorcupB题-环形穿梭机调度模型&a…...
并发编程-
一、简述 线程:线程是cpu可执行的最小单位,而进程是操作系统可分配的最小资源单位。一个进程中可以有多个线程。 线程的五个状态: 新建(new Thread()) 就绪 (thread.start()) 运行(…...
Mac中nvm切换node版本失败,关闭终端再次打开还是之前的node
Mac中使用 nvm 管理 node 版本,在使用指令:nvm use XXX 切换版本之后。 关闭终端,再次打开,输入 node -v 还是得到之前的 node 版本。 原因: 在这里这个 default 中有个 node 的版本号,使用 nvm use 时&a…...
C语言(25)
一.数据在内存中的存储 1.整数在内存中的存储 整数在内存中以二进制的形式储存,分别为原码,补码,反码 有符号的整数,在上述三种形式都有符号位和数值位两个部分,符号位为0是正数,1是负数,最高…...
HTML、CSS
什么是HTML、CSS HTML结构标签及特点 CSS引入方式 CSS颜色表示形式: CSS引入方式、颜色表示、颜色属性 CSS选择器 超链接...
c#:主窗体与子控件之间的数据传递:基于事件和委托的实现
1. 概述 在WPF中,主窗体与子控件之间的数据传递通常通过以下两种方式实现: 事件(Event):主窗体触发事件,子控件订阅事件并接收数据。 委托(Delegate):通过委托将子控件…...
Dynamics 365 启用用户安全角色变更的审核功能
D365自身的审核功能这里就不说了,是一个很古老的功能,用过D365的人应该都知道,今天要说的是用户安全角色变更的审核记录。 很多人用系统的审核功能,更多的是用来追踪用户的登录记录,或者记录的修改记录。 而实际的项目…...
MyBatis注解
MyBatis 的注解(Annotations)提供了一种简洁的方式来配置 SQL 映射,而无需使用 XML 文件。通过在 Mapper 接口的方法上使用注解,可以直接在 Java 代码中定义 SQL 语句和相关映射。这种方式使得代码更加集中和易于维护,…...
1.Windows+vscode+cline+MCP配置
文章目录 1.简介与资源2.在windows中安装vscode及Cline插件1. 安装vscode2. 安装Cline插件3. 配置大语言模型3. 配置MCP步骤(windows) 1.简介与资源 MCP官方开源仓库 MCP合集网站 参考视频 2.在windows中安装vscode及Cline插件 1. 安装vscode 2. 安装Cline插件 Cline插件…...
94.HarmonyOS NEXT动画系统实现教程:深入理解FuncUtils
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT动画系统实现教程:深入理解FuncUtils 文章目录 HarmonyOS NEXT动画系统实现教程:深入理解FuncUtils1. 动画系…...
Python----数据分析(Pandas一:pandas库介绍,pandas操作文件读取和保存)
一、Pandas库 1.1、概念 Pandas是一个开源的、用于数据处理和分析的Python库,特别适合处理表格类数 据。它建立在NumPy数组之上,提供了高效的数据结构和数据分析工具,使得数据操作变得更加简单、便捷和高效。 Pandas 的目标是成为 Python 数据…...
设计模式之原型模式:原理、实现与应用
引言 原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类。原型模式特别适用于创建成本较高的对象,或者需要动态配置的对象。本文将深入探讨原型模式的原理、实现方…...
平方矩阵问题
Ⅰ 回字形二维数组 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…...
C语言之链表
文章目录 前言 一、链表基本概念 1、声明节点结构 2、创建节点变量 3、链表所有节点 4、遍历链表 二、add添加 三、insert插入 四、remove删除 五、查找 总结 前言 链表是一种重要的数据结构,用于存储和组织数据。它是由一系列节点组成的数据结构&#x…...
RabbitMQ延迟消息
文章目录 延迟消息死信交换机延迟消息延迟消息应用场景 延迟消息 生产者在发送消息的时候指定一个时间,消费者不会立即收到该消息,而是在指定时间之后才收到消息,这就是延迟消息。 比如说这么一个场景,用户下单后将商品库存进行…...
Unity中WolrdSpace下的UI展示在上层
一、问题描述 Unity 中 Canvas使用World Space布局的UI,想让它不被3d物体遮挡,始终显示在上层。 二、解决方案 使用shader解决 在 UI 的材质中禁用深度测试(ZTest),强制 UI 始终渲染在最上层。 Shader "Custo…...
【从零开始学习计算机科学】算法分析(一)算法、渐进分析、递归分析
【从零开始学习计算机科学】算法分析(一)算法、渐进分析、递归分析 算法算法分析正确性算法完成需要的时间使用的存储空间简单性渐进分析递归分析主方法求解递归式递归树求解代入法概率分析和随机算法顺序统计量算法 什么是算法?算法(Algorithm)是指解题方案的准确而完整…...
【菜鸟飞】Conda安装部署与vscode的结合使用
介绍 Conda 是一个跨平台的开源工具,用于管理软件包和环境。最初由 Anaconda 公司开发,它的设计目标是支持数据科学和机器学习领域,但其功能不仅局限于此。 以下是 Conda 的核心特点: 包管理:安装、更新、卸载各种库…...
LeetCode2593 标记所有元素后数组的分数
贪心算法实战:数组标记与分数计算(LeetCode 同类题解析) 一、问题描述 给定一个正整数数组 nums,按以下规则计算最终分数: 初始分数 score 0每次选择最小且未被标记的元素(值相同选下标最小)…...
【C++多线程】thread
C中的std::thread是C11引入的线程库的一部分,提供了创建和管理线程的能力。它封装了操作系统的线程接口,使得在C中更方便地进行多线程编程。 1. std::thread 的定义 std::thread 类位于<thread>头文件中,定义在std命名空间下ÿ…...
补充二分LIS
B3637 最长上升子序列 题目描述 这是一个简单的动规板子题。 给出一个由 n ( n ≤ 5000 ) n(n\le 5000) n(n≤5000) 个不超过 1 0 6 10^6 106 的正整数组成的序列。请输出这个序列的最长上升子序列的长度。 最长上升子序列是指,从原序列中按顺序取出一些数字排…...
airtest用法
安装python3.7.9 64 python3 -m pip install -U airtest 或者: git clone https://github.com/AirtestProject/Airtest.git pip install -e airtest 下载adb 可以开始无界面的airtest 下载AirtestIDE 安装与启动 - Airtest Project Docs Airtest Project...
30天学习Java第四天——设计模式
设计模式概述 设计模式是一套被广泛接受的、经过试验的、可反复使用的基于面向对象的软件设计经验总结,它是开发人员在软件设计时,对常见问题的解决方案的总结和抽象。 一句话就是,设计模式是针对软件开发中常见问题和模式的通用解决方案。 …...
MongoDB 和 Elasticsearch的区别、优缺点对比,以及选型建议
MongoDB 和 Elasticsearch 在存储和搜索方面各有特点,适用于不同的场景。以下是它们的区别、优缺点对比,以及选型建议。 1. 概述 MongoDB:分布式 NoSQL 文档数据库,基于 BSON(类似 JSON)的文档存储&#x…...
在Android中,子线程可以更新UI吗
目录 为什么子线程不能直接更新UI? 如何正确在子线程更新UI? 1. 使用runOnUiThread方法 2. 通过Handler发送消息到主线程 3. 使用View.post(Runnable)方法 4. 结合AsyncTask(已过时,仅作了解) 5. 使用Kotlin协程…...