克隆技术在代码溯源和复用及变更分析中的应用

news2024/9/23 3:23:04

摘要:

克隆技术已在软件代码溯源分析领域得到广泛应用,而轩宇软件成分分析系统基于溯源分析和同源分析技术,通过先进的特征向量提取、相似性匹配、高效检索引擎等多项技术,帮助企业高效识别代码来源、评估自主可控率,并优化代码复用和变更情况。该系统具备强大的知识库支持,能够快速定位潜在安全漏洞和许可合规问题,为企业提供全面的软件成分管理和安全保障方案。

【研究背景】

在过去十年中,开源软件已成为现代软件开发的基石。根据Gartner的统计,到2024年,超过90%的商业软件项目将包含开源代码。然而,随着开源软件的普及,合规与安全挑战也愈加严峻。根据国家信息安全漏洞库(CNNVD)的数据显示,仅2024年上半年就新增了20,436个安全漏洞,其中6月份的新增漏洞数为3,075个。开源软件的广泛应用虽然推动了技术创新,但也引发了安全漏洞、恶意代码、以及合规性问题的日益增加。

《2023年开源安全与风险分析报告》(OSSRA)指出,在被分析的1,067个代码库中,有84%包含至少一个已知的开源漏洞,其中74%的代码库存在高风险漏洞。与2022年的48%相比,这一比例显著增加。开发人员在每4次下载开源软件时,就可能引入一个安全漏洞隐患。此外,企业不仅面临着引入开源代码所带来的风险,还需应对由于代码复用、新代码开发而引发的安全漏洞或业务缺陷问题。因此,企业需要一套综合的解决方案,以应对开源软件带来的0day漏洞、Nday漏洞、恶意后门、木马及代码投毒等问题,同时有效管理和复用私有软件资产。

【研究现状】

轩宇高效软件成分分析系统(SunwiseSCA),基于航天领域二十多年的软件测试和测评鉴定经验,针对工业软件自主可控测评和军用软件鉴定测评中的需求,开发出一套全面的SCA(Software Composition Analysis)解决方案。该系统不仅在源代码溯源分析、安全缺陷检测、许可合规分析、自主可控分析方面具备卓越能力,还支持组织级可信软件资产库的建立、复用分析和变更分析,成为具备综合检测和评测能力的企业级产品。SunwiseSCA系统完全自主可控,兼容国产软硬件,支持本地离线部署和外场快速检测,能够在不泄露被测源码的前提下提取代码特征进行检测。

溯源分析:深度追踪代码来源和演变历史

SunwiseSCA的溯源分析功能通过追踪代码的来源、演变历史及成分,保障软件的合规性和安全性。该功能不仅能够识别代码库中开源组件和复用软件的来源,还通过分析项目和组件的元数据(如版本信息、作者信息、提交历史、缺陷版本、修复版本)来理解其演变过程。这种深度分析有助于企业在合规审计、自主研发评估及安全漏洞检测中获取全面的视图。

SunwiseSCA拥有庞大的知识库,支持私有库,并允许用户建立可信资产库。系统通过项目级、组件级、文件级、函数级和代码片段级五个维度建立特征向量库。在特征向量提取过程中,SunwiseSCA利用卷积神经网络(CNN)的卷积层和池化层,提取64位固定长度的特征向量,并构建了上千万的项目和组件、数亿级别的文件以及上百亿级别的函数和代码片段特征向量信息库。通过Simhash技术的高效性和鲁棒性,系统能够快速进行相似性搜索,通过汉明距离判断项目、组件、文件、函数和代码片段之间的相似性,极大地减少了检索次数,将分析复杂度从O(n^2)降低到O(n)。

复用分析:优化代码的复用效率

SunwiseSCA的复用分析功能是业界独有的模块,主要依赖同源分析技术。该功能帮助企业快速建立私有资产库,识别和评估代码的复用情况。通过对私有资产库的全面扫描,系统能够识别被复用的项目、文件和函数,分析其复用频率及代码与原始项目的差异性,并提供优化建议。复用分析为企业提供自动化、可视化、可量化的手段,从而优化研发资源、提高生产效率。

在代码克隆检测技术中,SunwiseSCA结合2型克隆检测(语法上相同但标识符或常量不同)来满足企业对溯源精度的要求。对于企业内部的代码复用,1型克隆检测(完全相同的代码片段)能够更好地帮助企业高效地分析代码复用情况。

SunwiseSCA通过聚变分析和相似性匹配技术,将相似代码片段进行聚类,识别代码来源。此外,API同源分析及通信协议识别增强了这一过程,通过识别项目和组件使用的API、库、通信协议及传输方式,系统能够精确定位最相似的项目和组件,并进一步分析其潜在的安全风险和许可合规问题。这些功能帮助企业建立可信、可靠的软件资产库。

变更分析:追踪代码变更与演化

在SunwiseSCA中,变更分析功能与溯源分析、复用分析紧密相连,通过追踪代码的变更路径,识别关键的变更点,帮助企业有效管理软件资产库,提升软件质量和可维护性。SunwiseSCA通过逐层分析项目、文件和代码片段的变化历史,识别出哪些变更可能引入了安全漏洞或业务缺陷,进而为企业提供最佳的修复方案。

【系统简介】

SunwiseSCA软件成分分析工具是北京轩宇信息技术有限公司自主研发的一款软件溯源分析和安全缺陷检测工具,主要面向工业软件自主可控测评和军用软件鉴定测评中对软件源代码成分识别和自主可控率评估的需求,突破了精确高效的源代码特征提取技术、海量代码特征快速匹配技术等关键技术推向市场的新一代软件成分分析工具产品。该产品具备软件源代码溯源分析、安全缺陷分析、许可证合规分析、自主可控分析之外,同时支持建立组织级可信软件资产库、支持复用分析和变更分析等具有综合检测、评测能力的企业级产品。本产品完全自主可控,兼容国产软硬件,支持本地离线部署和外场快速部署、快速检测,支持在不泄露被测源码情况下提取代码特征指纹进行检测。利用本产品可以帮助用户快速透明的掌握被检测项目的软件成分和来源,分析源码的自主可控情况和软件资产复用情况,定位和识别安全漏洞,可作为军工软件研制单位、第三方软件测评机构和安全测评机构的核心利器。

软件成分分析产品SunwiseSCA

SunwiseSCA登录界面

【产品特性与优势】

1、精确高效的源代码溯源分析

SunwiseSCA提供精确高效的软件源代码溯源分析,支持项目级、文件级、代码片段级等全维度的溯源检测,精确给出各个层级的代码溯源分析详情清单,并定位到溯源文件的来源和位置。通过精确高效的源代码特征提取技术和多级粒度的代码相似度对比技术,片段级检测的精度可达到10行;通过海量代码特征快速匹配技术检测速度可达每分钟检测超过1万行。

源代码溯源结果详情

精确定位溯源代码

2、同时支持安全漏洞和本地私有库缺陷的检测分析

SunwiseSCA提供公开的安全漏洞分析和本地私有库领域缺陷分析。SunwiseSCA根据代码溯源分析的结果,依据第三方组件信息快速匹配安全漏洞库,查询到这些组件的已知安全漏洞,并将安全漏洞的详细信息展示给用户,并给出详尽的解决方案。同时,SunwiseSCA还允许用户建立私有软件资产的领域知识库和本领域的缺陷库,如果用户复用了本地私有库中存在缺陷的软件资产,工具将举一反三,自动识别并提醒用户。

安全漏洞分析

3、符合检测标准的自主可控评估分析

SunwiseSCA提供对软件源码自研率分析和标准的符合性检测。源码自研率分析支持项目级、文件级和代码行数级三种粒度的自研率。标准的符合性检测依据工业软件自主可控测评和军用软件鉴定测评要求,可以给出源码自研率满足自主可控的等级,帮助用户提高源代码的自主可控等级。同时可以设置项目自研率门限阈值,对于不满足自研率阈值要求的软件进行自动预警。

4、组织级软件资产复用分析

SunwiseSCA支持建立本地私有库,可以对本单位的所有软件资产进行统一管理。通过构建私有库中软件资产依赖关系、软件资产复用、软件版本演化等的知识图谱,对被检测软件资产进行代码溯源分析,同时对于复用代码中潜在缺陷/漏洞进行影响分析,以降低存在风险软件资产的复用,提升高可用、高可信、高可靠软件资产的复用率。

5、无人值守的自动化检测

SunwiseSCA通过代码入库自动触发、编程语言自动识别、多任务调度管理、检测报告自动生成等多种自动化手段,无需人工干预,实现从代码入库到检测结果生成全链条的自动化运行检测。

可视化的自动检测结果概览

【应用场景】

1、第三方软件测评、安全测评 

适用场景

软件第三方测评机构对送测软件合规性、标准符合性、安全性、自主可控等方面的安全测评。

场景需求

(1)第三方测评机构对送测软件进行合规性检测、标准符合性检测和自主可控检测时,需要客观、全面、精确的发现送测软件中不同来源的成分、所占比例、潜在风险及开源许可证使用情况;

(2)送测软件类型繁杂、规模庞大,通常需要在较短时间内对大量软件进行自动检测;

(3)可以快速出具详尽的检测报告,减少人工编写报告的工作量。

2、军工、工业软件研制单位

适用场景

军工、工业软件研制单位对软件质量控制、软件供应链安全治理和软件资产分析。

场景需求

(1)为了提高软件研制效率,使用了大量的开源代码组件或复用了私有资产库中历史资产,但对引入的比例,安全漏洞缺陷等风险不清晰;

(2)对复用或引入的代码或组件进行透明化管理,实现对企业软件资产信息的全面收集与管理,实现企业级、部门级、及项目级的软件资产分布可视化;

(3)减少开发人员与安全人员的风险排查时间成本,加快开发进程。

【结语】

SunwiseSCA将溯源分析、复用分析和变更分析有机结合,为企业提供了全面的软件管理解决方案。这不仅帮助企业应对开源代码引入的安全和合规挑战,还通过优化代码复用和变更管理,提高软件开发效率和质量。SunwiseSCA是企业在现代软件开发中不可或缺的利器。(结束)

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

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

相关文章

【数据结构】关于哈希表内部原理,你到底了解多少???(超详解)

前言: 🌟🌟本期讲解关于哈希表的内部实现原理,希望能帮到屏幕前的你。 🌈上期博客在这里:http://t.csdnimg.cn/7D225 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 目录 &a…

安嘉空间:智慧科技守护空间健康

在当今社会,随着人们对生活质量要求的不断提升,室内环境的健康与安全问题日益受到重视。安嘉空间,作为一家致力于人居健康空间技术研发的高科技企业,以其独创的技术和卓越的产品,为广大用户提供了一套全面的空间健康解…

进销存自动统计单据表格——未来之窗行业应用跨平台架构

一、代码 function 未来之窗_人工智能_计算单据(objbyclass,obj目标显示,obj目标值){console.log("未来之窗_人工智能_计算单据"objbyclass);var 计算结果0;$("."objbyclass).each(function(){var 输入框值 $(this).val();console.log("输入框值"…

去中心化(Decentralization)

去中心化(Decentralization) 并不是一个新概念,它已在战略、管理和政府中使用了很长时间。去中心化的基本思想是将控制权和权限分配给组织的外围,而不是由一个中心机构完全控制组织。这种配置为组织带来了许多好处,例如提高了效率…

欧洲用户对中国应用程序的感知:一个复杂的挂毯

在数字时代,中国应用程序迅速在全球范围内占有一席之地,吸引了全球用户的注意力和好奇心。在欧洲,这些应用程序引发了人们的兴趣、阴谋和担忧,不同国家和人口统计数据的看法差异很大。 对中国应用程序感兴趣的主要驱动力之一是它…

git命令使用详情

目录 一. 安装教程 二. git配置 1. 查看git配置参数 2. 设置邮箱和用户名 3. SSH配置 4. 配置git远程库公钥 5. 编码设置 三. git 提交流程 1. 整体操作流程图 2. Git仓库包含5个区域 3. 下载、提交、更新命令 3.1. 下载 3.2. 提交 3.3. 更新(两种方式…

无人机 PX4 飞控 | ROS应用层开发:基础代码框架构建

无人机 PX4 飞控 | ROS应用层开发:基础代码框架构建 基础代码框架构建文件建立代码基本构建测试 基础代码框架构建 本篇博客拟在构建一个 无人机 PX4 飞控 ROS应用层开发 的 基础代码框架。 其中包含了基础类文件、类头文件、main主函数文件,及其编译所…

数据结构-c/c++实现栈(详解,栈容量可以动态增长)

一.栈的基本介绍 栈是一种只能够在一端进行插入和删除的顺序表。如下图 空栈:表示不含任何元素的栈 栈顶:表示允许进行插入和删除元素的一端 栈底:表示不允许进行插入和删除元素的一端 即栈是一种后进先出的线性表数据结构 二.栈的常见操…

Redis高级---面试总结之内存过期策略及其淘汰策略

目前已更新系列: 当前:Redis高级---面试总结之内存过期策略及其淘汰策略 并发编程之----线程池ThreadPoolExecutor,Excutors的使用及其工作原理 Redis高级----主从、哨兵、分片、脑裂原理-CSDN博客 计算机网络--面试知识总结一 计算机网络-----面试知…

【深度学习】yolov8的微调

yolov8的集成度太高了,除了config的哪些参数以外,需要更精细的微调。 比如这里: https://github.com/ultralytics/ultralytics/blob/main/ultralytics/utils/tuner.py 应用场景,交通标志的向左转,向右转之类的&#x…

Golang | Leetcode Golang题解之第384题打乱数组

题目: 题解: type Solution struct {nums, original []int }func Constructor(nums []int) Solution {return Solution{nums, append([]int(nil), nums...)} }func (s *Solution) Reset() []int {copy(s.nums, s.original)return s.nums }func (s *Solu…

STM32G474之HAL_Delay()会导致死机的原因

使用HAL库需要HAL_Delay()函数支持,离开这个函数,和这个函数有关的函数就无法调用了。遇到这个问题,我们肯定会否定HAL库,也确实它是有点差,但也有好的一面。 为什么HAL库初始化了SysTick定时器,也使能了相…

书生大模型实战营(1)——InterStudio基础知识+Vscode SSH连接远程服务器+Linux基础指令

参加书生.浦江大模型实战训练营,学习大模型知识和微调技术,所有课程免费,通过闯关的形式学习,也比较有趣。一起来了解LLM的世界。邀请链接 产品简介 InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法…

Android Handler消息机制完全解析(二)

欢迎转载,转载请注明出处:https://blog.csdn.net/dmk877/article/details/141690289 在阅读本篇博客之前建议先阅读此篇 Android Handler消息机制完全解析(一) 在看Looper源码之前必须要理解ThreadLocal,ThreadLocal在Handler消息机制中起到…

信息安全--(五)物理与环境安全技术(二)机房安全分析与防护

在使用本博客提供的学习笔记及相关内容时,请注意以下免责声明:信息准确性:本博客的内容是基于作者的个人理解和经验,尽力确保信息的准确性和时效性,但不保证所有信息都完全正确或最新。非专业建议:博客中的…

FlowUs 小程序:开启高效之旅,订阅内容超精彩

一、丰富多样的订阅选择 FlowUs 小程序提供了极为丰富的订阅内容。无论你是对知识管理、项目管理感兴趣,还是专注于创意写作、时间规划,都能在这里找到适合自己的订阅选项。从专业的行业资讯到实用的技巧指南,从激发灵感的创意案例到深入的学…

业务解耦-Spring事件监听的三种实现方式

实现ApplicationListener 步骤如下: 1.写Event类,需要继承Spring的ApplicationEvent类 2.写监听类,需要实现Spring的ApplicationListener接口,加上Component注解 3.监听类实现onApplicationEvent方法 4.通过ApplicationContext.p…

开放大世界的全局寻路

开放大世界的寻路一直是很困扰我的一个点,地图大、还是动态可变的,所以寻路会有很多要求。就我们项目来讲,有这几个要求: 能满足极大范围的地图; 地图寻路数据能实时构建,且重建代价很小; 寻路的…

地质灾害监测预警系统的作用

在地球的广阔舞台上,自然灾害如同不可预测的演员,时常上演着惊心动魄的剧目。地震的震撼、滑坡的肆虐、泥石流的咆哮,这些地质灾害不仅给人类生命财产带来巨大威胁,也考验着社会的防灾减灾能力。为了应对这一挑战,地质…

【Linux】在 bash shell 环境下,当一命令正在执行时,按下 control-Z 会?

目录 题目分析答案 题目 分析 ctrl-c: 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序;ctrl-z: 发送 SIGTSTP信号给前台进程组中的所有进程,常用于挂起一个进程;ctrl-d: 不是发送信…