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

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

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

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

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

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

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

图1 同源检测通用实现

代码克隆四种类型

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

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

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

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

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值