一种大规模语义等价的安全补丁数据集构造方法

文档序号:34703267发布日期:2023-07-07 07:01阅读:23来源:国知局
一种大规模语义等价的安全补丁数据集构造方法

本发明属于网络安全,具体涉及一种大规模语义等价的安全补丁数据集构造方法。


背景技术:

1、越来越多的开源软件(open source soft,oss)使企业开发人员可以重用来自可靠oss项目的简洁功能达到敏捷开发的目的。与此同时,重用第三方oss带来的漏洞传播可能会威胁到整个系统的安全。原则上,保持重用oss部分代码始终处于最新状态即可防止漏洞的影响。漏洞的生命周期往往长达两年,而oss项目开发者通常偏向于静默修复漏洞,即不会在补丁提交信息中披露该补丁修复了何种漏洞,因此重用该项目的软件开发商无法知晓相关的漏洞修复信息。软件开发商需基于已披露的漏洞信息,检测软件源码中是否存在未发现的相关漏洞;此外为尽早修复漏洞,软件开发商也必须快速从上游获取关键的安全补丁。因此如何精准地检测出漏洞,并且快速准确识别出相关的安全补丁,已得到了研究者的较多关注。

2、然而,基于机器学习或者规则的安全补丁识别方法均需建立在大量准确全面的安全补丁数据集的基础之上,而现有的公共数据集所搜集的补丁数量无法达到要求,且往往局限于单个或多个特定的开源存储库的特定补丁,其搜集的相关补丁也无法涵盖补丁在跨项目修复时带来的特征变化。当前,现有数据集不利于解决方案的泛化能力,其易过拟合的局限性已极大地限制了相关研究的进展。为此,需要设计一种能够自动搜集不同项目跨分支的相同cve编号的安全补丁的方法,且需满足安全补丁在真实开发环境下开发者适应上下文修改的特性,最终形成大规模语义等价的安全补丁数据集。

3、2021ossra报告显示,目前98%的代码库包含开源组件;其中84%的代码库包含至少一个cve公开漏洞,且近60%的代码库包含高风险漏洞。通常漏洞的生命周期维持在两年,即在漏洞未被修复的两年内,攻击者可以通过利用漏洞数据库中披露的n-day漏洞,对未修补的软件系统进行攻击。例如,远程命令执行漏洞(cve-2021-22205)最初于2021年4月发布;然而,七个月后,超过30000台未经修补的gitlab服务器遭到破坏,并被滥用以发起ddos攻击。

4、为避免未修补的漏洞被黑客利用,下游软件厂商需要及时进行漏洞修补工作。软件补丁是两个源代码版本之间的一组更改,用于提高安全性、解决功能问题和添加新功能。其中,安全补丁可以解决特定的安全漏洞,增强软件的安全性。由于oss软件往往会出现多个版本或分支共存的现象,且企业也常重用不同版本的oss软件组件,因此在可以分为oss上游和下游版本。上游版本为oss项目的最新迭代版本,其它所有的版本均可依据版本更新的时间分为不同上游版本的下游版本。上游的软件开发商往往针对漏洞修补时静默提交,而下游厂商往往也会针对重用的代码进行定制化开发,因此下游厂商已无法确认上游版本是否修补了漏洞,也无法确认自身定制化开发后的代码是否仍存在nvd所披露的漏洞。

5、首先,安全补丁根据真实环境移植的特性,可分为以下四种类型:1)补丁位置调整,将补丁移植到给定分支时,易受攻击的漏洞代码可能位于不同的文件、不同的函数或不同的代码行中,因此,开发人员需要调整补丁语句的位置以应用补丁;2)适应代码上下文。当分支上易受攻击代码的上下文与补丁开发分支的上下文不同时,直接应用原始补丁可能会导致语义或语法错误。开发人员不需要调整漏洞修复逻辑,仅只需修改补丁以适应新的代码上了文,例如使用新的命名空间;3)更改修复逻辑,移植分支和原始补丁开发分支之间的代码差异需要调整漏洞修复逻辑;4)无关变更,漏洞修复有一些不相关的更改,例如修改注释和缩进。在补丁移植期间,这些更改不是必需的。

6、由于安全补丁同时聚合了易受攻击的漏洞代码和相应的修改,因此许多相关漏洞检测研究均是通过安全补丁作为起点进行研究。金等人从八个著名的git存储库获取安全补丁,以检测易受攻击的代码克隆;李等人构建了一个由19个产品组成的漏洞补丁数据库(vpd)。然而,这些数据集的大小不足以执行基于机器学习的研究,并且可能会给分析结果带来偏差。尽管sard提供了一些缓解漏洞的样本,但它主要关注易受攻击的代码,并且大多数样本都是人工的;通过查询nvd开源项目的数千条cve记录,f.li等人建立一个大规模的安全补丁数据库,他们是第一个对安全补丁与非安全错误修复进行大规模实证研究的人,讨论了安全补丁的元数据特征和生命周期。此外,考虑到静默安全补丁,xiao等人用从他们的工业合作方那里获得的提交来丰富数据集,但该数据集并没有公开。

7、然而大多数现有的安全补丁数据集存在以下几个限制:

8、1)公开可用的安全补丁数据集数据量不足。数据不足表示该数据集不具备全面性,遗漏的相关安全补丁往往并不是随机偏差,而是系统偏差,这些偏差将极大影响相关的应用的准确性;

9、2)公开可用的安全补丁数据集仅从单个或几个特定软件存储库中收集。特定的oss项目中收集的安全补丁所覆盖的补丁修改类型与漏洞数目量极少,基于该数据集设计的漏洞检测或安全补丁识别方法将对仅能支持特定软件和漏洞的检测,无法迁移到其它软件的相关检测;

10、3)公开可用的安全补丁数据集仅关注特定类型的安全补丁。这些数据集往往仅关注缓冲区溢出、空指针等特定类型的漏洞,而较少收集其它类型的安全补丁,这将限制相关应用的泛化能力;

11、4)公开可用的安全补丁数据集缺少安全补丁特征增强。在不同项目中修补同一漏洞将产生许多语义相同语法不同的安全补丁,而现有的安全补丁数据集针对每个漏洞往往仅收集单一补丁,缺少真实漏洞的修补补丁的丰富性,将导致相关应用中模型的过拟合问题。


技术实现思路

1、为了解决现有技术中存在的上述问题,本发明提供了一种大规模语义等价的安全补丁数据集构造方法。本发明要解决的技术问题通过以下技术方案实现:

2、本发明提供的一种大规模语义等价的安全补丁数据集构造方法包括:

3、步骤1:从通用数据库获取漏洞披露条目cve信息,根据cve信息递归访问可能相关的超链接得到原始安全补丁,并根据原始安全补丁全分支定位潜在补丁,对潜在补丁进行等价有效判断,从而组成真实安全补丁集;

4、步骤2:提取所述真实安全补丁集中的每个补丁的补丁内容,并根据补丁内容分析补丁的历史修改演化时间线,沿着所述历史修改演化时间线进行补丁超采样,获得演化补丁集合;

5、步骤3:对所述真实安全补丁集以及所述演化补丁集合中的每个补丁,分别对补丁进行编译以及反编译以生成语法不同且语义等价的等价安全补丁,并消除所述等价安全补丁内由编译器引入的无效差异,分别获得所述真实安全补丁集对应的第一等价安全补丁集合以及所述演化补丁集合对应的第二等价安全补丁集合;

6、步骤4:对所述真实安全补丁集以及所述演化补丁集合中的每个补丁,分别通过建立抽象语法树、更改抽象语法树的等价控制流节点以及与补丁的源代码映射的方式,生成控制流等价且语义等价的安全补丁;并且将所述真实安全补丁集对应的安全补丁组成第三等价安全补丁集合,以及将所述演化补丁集合对应的安全补丁组成第四等价安全补丁集合;

7、步骤5:将所述真实安全补丁集合、演化补丁集合、第一等价安全补丁集合、第二等价安全补丁集合、第三等价安全补丁集合以及第四等价安全补丁集合融合,从而得到大规模语义等价的安全补丁数据集。

8、本发明至少具备以下有益效果:

9、(1)本发明提供了一种大规模语义等价的安全补丁数据集构造方法,通过三种不同的补丁生成技术,满足安全补丁自然演化过程中语义等价的特性,基于该方法,可形成大规模语义等价的安全补丁数据集。

10、(2)本发明在构建安全补丁数据集时,提出了一种满足真实环境下安全补丁移植习惯的等价自然演化安全补丁生成技术。该技术与现有安全补丁数据集的生成方法相比,可基于真实漏洞影响的oss项目所有分支中,利用历史修改时间线通过超采样生成上下文修改、语义等价的安全补丁自然演化版本;本发明的该方法生成的自然演化安全补丁具备覆盖软件版本范围广、语义多样性等价、大规模批量操作的优点;

11、(3)本发明在构建安全补丁数据集时,提出了一种基于编译-反编译的语法变动、语义等价的安全补丁生成技术。该技术通过对目标代码做形态的变换,从源代码编译到二进制,再反编译到源代码形态,这中间的变换会一定程度上引入语法结构的重新构造,从而得到语法不同、控制流不同但语义仍等价的安全补丁;

12、(4)本发明在构建安全补丁数据集时,提出了一种基于ast变更控制流的控制流等价、语义等价的安全补丁的技术。该技术通过将控制流复杂性引入安全补丁,从而丰富安全补丁的等价表达,可有效降低减轻学习模型的过度拟合,提高自动补丁分析任务的性能。

13、以下将结合附图及实施例对本发明做进一步详细说明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1