一种用于识别引入Linux内核漏洞的Git提交的方法和系统

文档序号:34587750发布日期:2023-06-28 15:46阅读:76来源:国知局
一种用于识别引入Linux内核漏洞的Git提交的方法和系统

本发明属于信息安全,具体涉及一种用于识别引入linux内核漏洞的git提交(git commit)的方法和系统。


背景技术:

1、当前,linux是非常流行且被广泛使用的操作系统,linux内核是其主要组件,负责管理系统资源并为用户态程序提供访问硬件资源的接口。linux内核是个非常复杂的系统,截至2022年linux内核的代码行数已经超过3500万行,并且代码行数在不断增加,每年有数百万行的代码被添加到linux内核中。

2、linux内核面向全世界开源,使用git作为版本控制工具。git是开源且免费的分布式版本控制软件,可以用于存储代码、管理代码历史记录、合并代码更改、团队协同开发等。linux内核分为多个子系统,每个子系统都有各自的维护人员(maintainer)。来自世界各地的开发人员如果想要为linux内核做贡献,可以通过发邮件给维护人员的方式,向linux内核提交补丁(patch)。提交补丁需要遵守社区的规定,首先需要描述代码改动,包括解决的问题、带来的影响等说明;然后需要将每个逻辑更改拆分成一个单独的补丁;之后需要检查补丁格式是否符合规范;最后需要把补丁通过邮件的方式发给对应子系统的维护人员。维护人员会检查收到的补丁,如果遇到问题可能会和开发人员交流。维护人员会最终决定是否将补丁合并入上游分支。

3、由于linux内核是一个非常复杂的系统,代码之间相互依赖,而绝大部分开发人员和维护人员只熟悉linux内核代码的一部分,因此合并补丁到linux内核时可能引入漏洞。linux内核的漏洞被利用可能造成比较严重的影响,例如系统崩溃、数据泄露、权限提升等。linux内核的复杂性导致漏洞不容易被发现,漏洞存在时间会比较长。漏洞从引入到被发现并且修复平均需要1732.97天,这就导致内核的不安全性。因此理解漏洞是如何引入的是非常重要的,可以帮助提升linux内核漏洞检测的准确率,降低引入linux内核漏洞的可能性,从而提升linux内核的安全性。

4、为了理解漏洞是如何引入的,需要引入漏洞的git提交来查看具体修改的代码。目前识别引入漏洞的git提交的方法主要为szz算法及其变体,该类算法能够根据修复漏洞的git提交找出其对应的引入漏洞的git提交。该类算法有一定的局限性,首先该类算法需要修复漏洞的git提交,对于一些开源项目,其使用的项目管理工具包含了漏洞追踪管理功能(例如jira),或者项目社区规定了提交代码时需要打上标签,这些项目找出修复漏洞的提交比较容易。linux内核并没有使用漏洞追踪管理工具,也没有为提交打标签的规范,因此直接批量获取修复linux内核漏洞的git提交比较困难。其次,szz算法仅通过代码变更去寻找引入漏洞的提交,正确率不高。虽然szz算法的变体增加了一些规则去减少噪音数据,但是正确率提升有限。因此szz算法及其变体不适合linux内核,需要一种识别引入linux内核漏洞的git提交的方法。


技术实现思路

1、针对现有技术的不足,本发明提供一种用于识别引入linux内核漏洞的git提交的方法和系统,能够批量获取linux内核漏洞、修复linux内核漏洞的git提交和引入linux内核漏洞的git提交,并且能够建立他们之间的对应关系,用于帮助研究人员寻找漏洞的相关特征,进而帮助提高linux内核安全性。

2、本发明的目的通过如下的技术方案来实现:

3、一种用于识别引入linux内核漏洞的git提交的方法,该方法包括如下步骤:

4、步骤一:获取linux内核的cve漏洞数据;

5、步骤二:识别修复linux内核漏洞的git提交,即识别kvfc;

6、步骤三:识别kvfc对应的引入linux内核漏洞的git提交,即识别kvfc对应的kvic。

7、进一步地,所述获取linux内核的cve漏洞数据,具体步骤为:

8、(1.1)使用linux kernel作为关键词搜索漏洞数据库cve,用网络爬虫获取搜索到的所有cve-id;

9、(1.2)遍历步骤(1.1)获取的所有cve-id,用网络爬虫通过漏洞数据库cve获取每个cve-id对应漏洞的具体信息,包括描述、参考和创建日期。

10、进一步地,所述识别kvfc,具体步骤为:

11、通过如下4种方法自动化获得并合并识别kvfc,若合并时出现冲突,则进行手动处理:

12、(1)借助提交消息:遍历linux内核每个git提交的提交消息,查询是否包含步骤(1.1)获取到的cve-id;如果包含,检查提交消息中是否包含以修复为目的的关键词;如果是,这个提交就被识别为提交消息中包含的cve-id对应的kvfc;

13、(2)借助漏洞数据库的提交url:遍历步骤(1.2)获取到的cve-id的参考,检查其中的url是否是linux内核的git提交,如果是,这个提交就被识别为该cve-id对应的kvfc;

14、(3)借助漏洞数据库的提交标签:遍历步骤(1.1)获取到的cve-id,使用网络爬虫在国家信息安全漏洞共享平台获取其参考中标签为patch的url,检查这些url是否是linux内核的git提交,如果是,这个提交就被识别为该cve-id对应的kvfc;

15、(4)借助linux发行商:包括借助ubuntu和借助android;遍历步骤(1.1)获取到的cve-id,使用网络爬虫从网站https://ubuntu.com/security/cves获取对应的漏洞信息,在status中查询package中是否存在linux;如果存在,查询该package下是否存在patches信息;如果存在,则patches中的fixed by之后的sha-1哈希就被识别为该cve-id对应的kvfc;使用网络爬虫从android安全公告中获取每月安全公告,检查其中每个cve对应的参考中的url是否是linux内核的git提交,如果是,这个提交就被识别为该cve对应的kvfc。

16、进一步地,合并kvfc,若合并时出现冲突,则进行手动处理,具体的步骤如下:

17、对于每个cve-id,如果只有1种方法得到kvfc,或者有多种方法得到相同的kvfc,则直接将cve-id和对应的kvfc加入到kvfc最终结果中;否则,如果有2种或以上的方法得到的kvfc不同,则认为是冲突,将cve-id以及各种方法得到的kvfc加入到冲突集合中;手动检查得到的冲突,确定每个冲突正确的kvfc,合并到最终的kvfc结果中。

18、进一步地,所述识别kvic,具体步骤为:

19、通过如下3种方法自动化获得kvic,并对其进行合并,若合并时出现冲突,则进行手动处理:

20、(1)借助提交的修复标签:遍历获取到的kvfc,查询其提交消息中是否包含标签“fixes:”,如果包含,则提取该标签之后的sha-1哈希,这个sha-1哈希就被识别为该kvfc对应的kvic;

21、(2)借助提交消息中的提交id:遍历获取到的kvfc,查询其提交消息中是否包含sha-1哈希,如果包含,进一步检查该哈希是否是一个提交id,如果是,这个提交就被识别为该kvfc对应的kvic;

22、(3)借助linux发行商:遍历获取到的cve-id,使用网络爬虫在网站https://ubuntu.com/security获取其对应的漏洞信息,在status中查询package中是否存在linux;如果存在,查询该package下是否存在patches信息;如果存在,则patches中的“introducedby”之后的sha-1哈希就被识别为kvic,与其对应的kvfc为patches中的“fixed by”之后的sha-1哈希表示。

23、一种用于识别引入linux内核漏洞的git提交的系统,该系统用于实现上述任意一项的方法,该系统包括:cve数据获取模块、kvfc识别模块、kvic识别模块和数据库模块;

24、所述cve数据获取模块,通过网络爬虫获取cve漏洞数据;

25、所述kvfc识别模块,用于识别cve漏洞对应的kvfc,并对kvfc进行合并,当合并出现冲突时,能够自动获取冲突集合,并将人工处理后的冲突合并到kvfc结果中;

26、所述kvic识别模块,用于识别kvfc对应的kvic,并对kvic进行合并,当合并出现冲突时,能够自动获取冲突集合,并将人工处理后的冲突合并到kvic结果中;

27、所述数据库模块,用于存储cve数据获取模块、kvfc识别模块和kvic识别模块分别获取到的cve漏洞数据、kvfc数据和kvic数据;所述数据库模块也为kvfc识别模块和kvic识别模块提供数据查询的功能。

28、本发明的有益效果如下:

29、本发明提供了一种识别引入linux内核漏洞的git提交的方法和系统,能够批量获取linux内核漏洞、修复linux内核漏洞的git提交和引入linux内核漏洞的git提交,并且能够建立他们之间的对应关系,得到数据集。通过分析这些git提交的特征,可以帮助理解linux内核漏洞是如何引入的,进而帮助提升linux内核漏洞检测的准确率,降低引入linux内核漏洞的可能性,提升linux内核的安全性。

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