SCA 技术进阶系列(二):代码同源检测技术在供应链安全治理中的应用

从零到一:ESP32与豆包大模型的RTC连续对话实现指南 文本实现ESP32S3 SparkBot与豆包大模型的RTC连续对话 阅读详情

直击痛点:为什么需要同源检测

随着 “数字中国” 建设的不断提速,企业在数字化转型的创新实践中不断加大对开源技术的应用,引入开源组件完成应用需求开发已经成为了大多数研发工程师开发软件代码的主要手段。随之而来的一个痛点问题是:绝大多数的应用程序都包含开源组件风险。因而,能够帮助管理和降低开源组件风险的 SCA 技术应运而生。

常规的 SCA 软件成分分析工具可以通过分析组件版本及依赖,完成对引用的三方开源组件的检查,从而识别已知的组件漏洞以及授权许可风险。但是,组件漏洞来源于代码编写存在的安全缺陷,对于引用开源组件源码的部分代码片段,从而导致引入存在安全缺陷代码的场景,则需要使用代码同源检测技术进行检查。代码同源检测是基于源代码文件的维度面向源代码进行成分分析,主要用于代码溯源分析、代码已知漏洞分析、恶意代码文件等,可以准确地分析出引用的开源软件及其关联信息。本文将从代码同源检测技术原理、核心技术和常见应用场景三大方面对该技术进行解析。

原理浅析:同源检测技术原理介绍

同源检测即同源性分析,指对应用程序或软件中的组成成分进行同源性分析,按照分析的精度划分,精度由低到高可将同源检测分为文件级、函数级和片段级。代码同源检测技术主要用于检测应用源代码中某个片段代码与项目中其他片段代码或开源代码存在的相同代码成分,因此也被称为代码克隆检测。

代码克隆(Code Clone),是指本地代码库或开源代码库中存在多个以上相同或者相似的源代码片段。使用克隆代码在代码开发过程中也是提高开发效率的一种方式,一定程度上帮助了软件系统的开发,但这种方式也可能意外引入代码片段本身存在的安全风险或授权许可风险等负面影响。随着软件在敏捷开发的模式下不断迭代,代码克隆造成代码库的不断膨胀,在未有良好的克隆管理的情况下,从而增加维护成本。软件缺陷也会因为代码克隆而在系统中被传播,,降低了软件系统的可靠性。因此,运用代码克隆检测技术可实现满足 SCA 能够检测分析应用程序中引入的开源组件、分析开源组件是否有已知的安全漏洞、分析应用程序或开源组件声明的开源许可证、对源代码进行溯源分析等核心功能。

图 1 同源检测通用实现

1. 代码克隆四种类型

严格意义上的代码克隆则是指对原始代码片段或代码文件的整体克隆,代码开发者直接使用原始代码片段或文件,两者内容完全一致,未进行任何修改。但从实际应用需求看,通常将代码克隆的类型分为 4 类:

类型 1,完全克隆:除注释与空白符外,两个代码片段完全相同。

类型 2,重命名克隆:对代码的变量、类型、文字和函数名进行修改,两个代码片段逻辑内容一致。

类型 3,增删改克隆:在类型 2 的基础上,对一些代码语句进行添加、删除或修改,以及修改源代码内容布局,两个代码片段内容相似。

类型 4,自实现克隆:两个代码片段的逻辑功能相同,但是具体的编码实现方式不同,例如通过替换同类型函数或表达式实现,其时间复杂度和输入输出一致。

对于检测方法而言,其中类型 1、类型 2、类型 3 主要通过文本相似性检测技术实现,类型 4 则需要通过功能相似性进行检测。类型越靠后,其检测难度越高。

EPLAN 电气制图(六):电机正反转副勾主电路绘制 【插入】→【设备】→选择 “SIE.3RV2011-1AA15”(Q1)和 “SIE.1TL0001-1DB3”(M1),放置于图纸左侧。生成端子排 X3:【端子排导航器】→新建编号 “1-20”,部件 “PXC.3211814”,放置于电机上方,功能文本标注 “电机端子”。属性设置:双击结构盒,在 “显示设备标识符” 中输入位置代号(如 “+ 柜外”),并在 “格式” 选项卡中调整线型与颜色。实用技巧:勾选【选项】→【设置】→【图形的编辑】中的 “绘制带有空白区域的结构盒”,可使元件布局更清晰。 阅读详情

相关推荐

国外无人机蜂群作战典型战例及发展趋势

参与袭击的无人机为简易组装的固定翼飞机,采用小排量活塞发动机和手机GPS通信模块零件,机翼为轻木加泡沫板混合结构,尾梁为铝合金方管,主要依靠胶带粘接,以上全部配件均可在商用市场买到,成本较低,可在短时间内装配完成。③战场纵深短、瞬时性强。蜂群作战的参战数量显著增加,这一方面得益于无人机技术的飞速发展使得廉价无人机可以大量生产和仿制,另一方面凭借迅速发展的投放和回收技术以及集群控制技术,使得无人机蜂群可在极短时间内实现编队饱和攻击,在快速消耗敌方高价值防空武器系统的同时,保证己方物资系统的突防概率。

renhongxia1的博客 2482

多边形裁剪算法

多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。 Greiner–H...

papalqi 6729

无线图像传输新突破:深度JSCC算法在低带宽环境下的性能实测

本文深入探讨了基于深度学习的信源信道联合编码(JSCC)算法在低带宽无线图像传输中的突破性表现。通过实测数据对比,深度JSCC在低信噪比环境下展现出卓越的鲁棒性,有效对抗传统方案的“悬崖效应”,实现图像质量的平滑下降,为远程医疗、工业巡检等严苛场景提供了新的解决方案。

weixin_29090089的博客 508

STM32F407与AD7766实战:如何用SPI+DMA实现高速ADC数据采集(附完整代码)

本文详细介绍了如何利用STM32F407的SPI接口与DMA控制器,高效稳定地驱动24位高精度ADC芯片AD7766,实现高速连续数据采集。通过对比传统中断方式的瓶颈,阐述了SPI+DMA方案如何大幅降低CPU负载,并提供了从硬件设计、CubeMX配置到核心驱动代码的完整实战指南,帮助工程师解决高速ADC数据采集中的性能难题。

weixin_29281941的博客 190

新年美食鉴赏——基于注意力机制CBAM的美食101分类

新年美食鉴赏——基于注意力机制CBAM的美食101分类一、数据预处理1.数据集介绍2.读取标签3.统一命名4.整理图片路径5.划分训练集与验证集6.定义美食数据集二、注意力机制1.简介2.卷积块注意力网络——CBAM通道注意力模块CAM空间注意力模块SAM3.将通道、空间注意力模块合并三、基于卷积块注意力模块的ResNet-CBAM1.代码实现2.模型测试3.查看网络结构4.模型训练5.模型预测四、总结与升华个人简介 春节是一年当中最隆重、最盛大的节日,吃得最好的一餐可能就是年夜饭了,想想就很激动呢!随着新

zbp_12138的博客 1万+

dummy机械臂代码学习(六)

CLI-Tool文件夹下又包含四个子文件夹,以及一个gitignore文件、一个run_shell.py的python文件、一个run.bat文件和一个zadig exe文件。库解析命令行参数,并根据不同的命令执行相应的操作。Zadig是一个用于Windows操作系统的开源工具,它的主要功能是安装和配置USB驱动程序。的目的呢就是确保在版本控制过程中,不必要的或自动生成的文件被忽略掉,来保持代码仓库的干净和整洁。,DummyStudio的软件作者已放在GitHub,我们主要看CLI-Tool文件夹就行。

jumaohhh的博客 1435

本地部署 Anything LLM+Ollama+DeepSeek R1 大模型并实现外部访问

DeepSeek 一经发布就引起社会的广泛的关注,因为 DeepSeek 的价格低廉,性能卓越,提供了多种使用方式,满足不同用户的需求和场景。本文将详细的介绍如何在本地 Windows 上安装部署 Anything LLM + Ollama 来实现用户和 DeepSeek-r1 对话的功能以及利用路由侠内网穿透实现外网访问。

lyxnwct的博客 1898

一文告诉你:如何在trae中编译运行GD32程序,并让AI帮你修改代码

本文详细介绍了如何将GD32程序如何用官方固件库构建出来,然后从Keil迁移到国产免费工具Trae,并利用AI进行代码修改的全过程。

水滴爬呀爬 2663

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: 版本升级 | v1.0.11 上线,你的需求被翻牌了吗?
下一篇: KCD技术分享:以SBOM为基础的云原生应用安全治理
OpenSCA社区
博客等级 码龄4年 171粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值