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

技术编号:38124687 阅读:8 留言:0更新日期:2023-07-08 09:27
本发明专利技术提出了一种大规模语义等价的安全补丁数据集构造方法,通过跨OSS项目及分支收集不同的真实安全补丁集;基于自然演化的等价补丁生成技术可覆盖真实开发环境下的移植安全补丁的上下文变化,实现等价补丁数量指数级增长形成演化补丁集;基于编译

【技术实现步骤摘要】
一种大规模语义等价的安全补丁数据集构造方法


[0001]本专利技术属于网络安全
,具体涉及一种大规模语义等价的安全补丁数据集构造方法。

技术介绍

[0002]越来越多的开源软件(Open Source Soft,OSS)使企业开发人员可以重用来自可靠OSS项目的简洁功能达到敏捷开发的目的。与此同时,重用第三方OSS带来的漏洞传播可能会威胁到整个系统的安全。原则上,保持重用OSS部分代码始终处于最新状态即可防止漏洞的影响。漏洞的生命周期往往长达两年,而OSS项目开发者通常偏向于静默修复漏洞,即不会在补丁提交信息中披露该补丁修复了何种漏洞,因此重用该项目的软件开发商无法知晓相关的漏洞修复信息。软件开发商需基于已披露的漏洞信息,检测软件源码中是否存在未发现的相关漏洞;此外为尽早修复漏洞,软件开发商也必须快速从上游获取关键的安全补丁。因此如何精准地检测出漏洞,并且快速准确识别出相关的安全补丁,已得到了研究者的较多关注。
[0003]然而,基于机器学习或者规则的安全补丁识别方法均需建立在大量准确全面的安全补丁数据集的基础之上,而现有的公共数据集所搜集的补丁数量无法达到要求,且往往局限于单个或多个特定的开源存储库的特定补丁,其搜集的相关补丁也无法涵盖补丁在跨项目修复时带来的特征变化。当前,现有数据集不利于解决方案的泛化能力,其易过拟合的局限性已极大地限制了相关研究的进展。为此,需要设计一种能够自动搜集不同项目跨分支的相同CVE编号的安全补丁的方法,且需满足安全补丁在真实开发环境下开发者适应上下文修改的特性,最终形成大规模语义等价的安全补丁数据集。
[0004]2021OSSRA报告显示,目前98%的代码库包含开源组件;其中84%的代码库包含至少一个CVE公开漏洞,且近60%的代码库包含高风险漏洞。通常漏洞的生命周期维持在两年,即在漏洞未被修复的两年内,攻击者可以通过利用漏洞数据库中披露的N

Day漏洞,对未修补的软件系统进行攻击。例如,远程命令执行漏洞(CVE

2021

22205)最初于2021年4月发布;然而,七个月后,超过30000台未经修补的GitLab服务器遭到破坏,并被滥用以发起DDoS攻击。
[0005]为避免未修补的漏洞被黑客利用,下游软件厂商需要及时进行漏洞修补工作。软件补丁是两个源代码版本之间的一组更改,用于提高安全性、解决功能问题和添加新功能。其中,安全补丁可以解决特定的安全漏洞,增强软件的安全性。由于OSS软件往往会出现多个版本或分支共存的现象,且企业也常重用不同版本的OSS软件组件,因此在可以分为OSS上游和下游版本。上游版本为OSS项目的最新迭代版本,其它所有的版本均可依据版本更新的时间分为不同上游版本的下游版本。上游的软件开发商往往针对漏洞修补时静默提交,而下游厂商往往也会针对重用的代码进行定制化开发,因此下游厂商已无法确认上游版本是否修补了漏洞,也无法确认自身定制化开发后的代码是否仍存在NVD所披露的漏洞。
[0006]首先,安全补丁根据真实环境移植的特性,可分为以下四种类型:1)补丁位置调
整,将补丁移植到给定分支时,易受攻击的漏洞代码可能位于不同的文件、不同的函数或不同的代码行中,因此,开发人员需要调整补丁语句的位置以应用补丁;2)适应代码上下文。当分支上易受攻击代码的上下文与补丁开发分支的上下文不同时,直接应用原始补丁可能会导致语义或语法错误。开发人员不需要调整漏洞修复逻辑,仅只需修改补丁以适应新的代码上了文,例如使用新的命名空间;3)更改修复逻辑,移植分支和原始补丁开发分支之间的代码差异需要调整漏洞修复逻辑;4)无关变更,漏洞修复有一些不相关的更改,例如修改注释和缩进。在补丁移植期间,这些更改不是必需的。
[0007]由于安全补丁同时聚合了易受攻击的漏洞代码和相应的修改,因此许多相关漏洞检测研究均是通过安全补丁作为起点进行研究。金等人从八个著名的Git存储库获取安全补丁,以检测易受攻击的代码克隆;李等人构建了一个由19个产品组成的漏洞补丁数据库(VPD)。然而,这些数据集的大小不足以执行基于机器学习的研究,并且可能会给分析结果带来偏差。尽管SARD提供了一些缓解漏洞的样本,但它主要关注易受攻击的代码,并且大多数样本都是人工的;通过查询NVD开源项目的数千条CVE记录,F.Li等人建立一个大规模的安全补丁数据库,他们是第一个对安全补丁与非安全错误修复进行大规模实证研究的人,讨论了安全补丁的元数据特征和生命周期。此外,考虑到静默安全补丁,Xiao等人用从他们的工业合作方那里获得的提交来丰富数据集,但该数据集并没有公开。
[0008]然而大多数现有的安全补丁数据集存在以下几个限制:
[0009]1)公开可用的安全补丁数据集数据量不足。数据不足表示该数据集不具备全面性,遗漏的相关安全补丁往往并不是随机偏差,而是系统偏差,这些偏差将极大影响相关的应用的准确性;
[0010]2)公开可用的安全补丁数据集仅从单个或几个特定软件存储库中收集。特定的OSS项目中收集的安全补丁所覆盖的补丁修改类型与漏洞数目量极少,基于该数据集设计的漏洞检测或安全补丁识别方法将对仅能支持特定软件和漏洞的检测,无法迁移到其它软件的相关检测;
[0011]3)公开可用的安全补丁数据集仅关注特定类型的安全补丁。这些数据集往往仅关注缓冲区溢出、空指针等特定类型的漏洞,而较少收集其它类型的安全补丁,这将限制相关应用的泛化能力;
[0012]4)公开可用的安全补丁数据集缺少安全补丁特征增强。在不同项目中修补同一漏洞将产生许多语义相同语法不同的安全补丁,而现有的安全补丁数据集针对每个漏洞往往仅收集单一补丁,缺少真实漏洞的修补补丁的丰富性,将导致相关应用中模型的过拟合问题。

技术实现思路

[0013]为了解决现有技术中存在的上述问题,本专利技术提供了一种大规模语义等价的安全补丁数据集构造方法。本专利技术要解决的技术问题通过以下技术方案实现:
[0014]本专利技术提供的一种大规模语义等价的安全补丁数据集构造方法包括:
[0015]步骤1:从通用数据库获取漏洞披露条目CVE信息,根据CVE信息递归访问可能相关的超链接得到原始安全补丁,并根据原始安全补丁全分支定位潜在补丁,对潜在补丁进行等价有效判断,从而组成真实安全补丁集;
[0016]步骤2:提取所述真实安全补丁集中的每个补丁的补丁内容,并根据补丁内容分析补丁的历史修改演化时间线,沿着所述历史修改演化时间线进行补丁超采样,获得演化补丁集合;
[0017]步骤3:对所述真实安全补丁集以及所述演化补丁集合中的每个补丁,分别对补丁进行编译以及反编译以生成语法不同且语义等价的等价安全补丁,并消除所述等价安全补丁内由编译器引入的无效差异,分别获得所述真实安全补丁集对应的第一等价安全补丁集合以及所述演化补丁集合对应的第二等价安全补丁集合;
[0018]步骤4:对所述真实安全补丁集以及所述演化补丁集合中的每个补丁,分别通过建立抽象语法树、更改抽象语本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种大规模语义等价的安全补丁数据集构造方法,其特征在于,包括:步骤1:从通用数据库获取漏洞披露条目CVE信息,根据CVE信息递归访问可能相关的超链接得到原始安全补丁,并根据原始安全补丁全分支定位潜在补丁,对潜在补丁进行等价有效判断,从而组成真实安全补丁集;步骤2:提取所述真实安全补丁集中的每个补丁的补丁内容,并根据补丁内容分析补丁的历史修改演化时间线,沿着所述历史修改演化时间线进行补丁超采样,获得演化补丁集合;步骤3:对所述真实安全补丁集以及所述演化补丁集合中的每个补丁,分别对补丁进行编译以及反编译以生成语法不同且语义等价的等价安全补丁,并消除所述等价安全补丁内由编译器引入的无效差异,分别获得所述真实安全补丁集对应的第一等价安全补丁集合以及所述演化补丁集合对应的第二等价安全补丁集合;步骤4:对所述真实安全补丁集以及所述演化补丁集合中的每个补丁,分别通过建立抽象语法树、更改抽象语法树的等价控制流节点以及与补丁的源代码映射的方式,生成控制流等价且语义等价的安全补丁;并且将所述真实安全补丁集对应的安全补丁组成第三等价安全补丁集合,以及将所述演化补丁集合对应的安全补丁组成第四等价安全补丁集合;步骤5:将所述真实安全补丁集合、演化补丁集合、第一等价安全补丁集合、第二等价安全补丁集合、第三等价安全补丁集合以及第四等价安全补丁集合融合,从而得到大规模语义等价的安全补丁数据集。2.根据权利要求1所述的一种大规模语义等价的安全补丁数据集构造方法,其特征在于,步骤1包括:步骤11:从通用数据库获取通用漏洞条目披露CVE信息;步骤12:从CVE信息中获取URL字段;步骤13:递归访问所述URL字段对应的源项目网站的URL,通过所述URL可能出现的超链接,获得在Github上补丁内容以及受影响的OSS项目列表及相关内容;步骤14:通过所述补丁内容从OSS项目列表的仓库中查找,获得若干个的原始安全补丁;步骤15:利用所述原始安全补丁定位潜在补丁,并对潜在补丁进行等价以及有效性判断,获得与所述原始安全补丁有效等价的潜在等价补丁;步骤16:将潜在等价补丁与原始安全补丁组成真实安全补丁集。3.根据权利要求2所述的一种大规模语义等价的安全补丁数据集构造方法,其特征在于,步骤15包括:步骤151:利用所述原始安全补丁的subject信息在OSS项目中全分支定位潜在补丁,如果一个潜在补丁与所述原始安全补丁的subject类似,则认定该潜在补丁为与所述原始安全补丁等价的潜在等价补丁;步骤152:将所述潜在等价补丁与所述原始安全补丁的每一处添加行、删除行以及相关上下文信息进行比较,如果三个差异值综合后的均值低于预设的差异值阈值,则确认该潜在等价补丁为等价有效补丁;步骤153:保存所述等价有效补丁的相关信息。4.根据权利要求1所述的一种大规模语义等价的安全补丁数据集构造方法,其特征在
于,步骤2包括:步骤21:提取所述真实安全补丁集中的每个补丁的补丁内容;其中,所述补丁内容包括修改文件名称FileName,添加行以及删除行;步骤22:分析补丁内容的历史修改演化时间线,获得补丁的自然演化时间线;其中,在自然演化时间线中,原始安全补丁所对应的修改为原始提交,原始提交之前的上一次修改为过去提交,原始提交之后的所对应的修改为更新提交;步骤23:将每一次更新提交与过去提交之间的差异生成为演化补丁;步骤24:利用超采样规则对演化补丁进行超采样,获得采样后的演化补丁集合;步骤25:将采样后的演化补丁组成演化补丁集合;其中,所...

【专利技术属性】
技术研发人员:付玉龙杨金城易威高依然
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1