PATCHSCOUT:一种新的定位安全补丁的方法

  • A+
所属分类:逆向工程

PATCHSCOUT:一种新的定位安全补丁的方法


原文标题:Locating the Security Patches for Disclosed OSS Vulnerabilities with Vulnerability-Commit Correlation Ranking

原文作者:Xin Tan, Yuan Zhang, Chenyuan Mi, Jiajun Cao, Kun Sun, Lin Yifan, and Min Yang

发表会议:2021 ACM Computer and Communications Security Conference

原文链接:https://secsys.fudan.edu.cn/_upload/article/files/22/d2/3f5f0cdf411e965d6f1071485190/598f3009-256f-48ec-8043-5824ef8fe86e.pdf

笔记作者:[email protected]

文章小编:[email protected]

0x01 INTRODUCTION

随着开源软件的广泛应用,开源软件中所含有的漏洞已经成为危害软件供应链安全的一大威胁。为了减少漏洞所带来的危害,软件的开发者通常会为软件打上补丁(patch),在开源软件中,补丁通常表现为开发者提交到开源项目中的代码(commit)。在已有的研究中,研究者通常使用基于匹配的方法定位针对某个公开漏洞的补丁。这些方法有如下缺点:1)只有少量的关于漏洞的信息被考虑进去;2)基于匹配的方法只选取有限的候选提交代码。为了解决上述问题,作者提出了一种基于排名的补丁定位方法,这种方法综合考虑了更多的漏洞描述信息,并通过计算漏洞和提交的代码之间的关联性,并根据关联性的强弱进行排名,这一排名可以为人工审查漏洞补丁提供帮助。实验的结果表明,这种方法相较已有的方法可以更好地定位到给定漏洞的补丁的位置,并且能够大大减少所需的人力成本。

Contribution

这篇论文的主要贡献在于:

  1. 提出了一种新的定位漏洞补丁的方法,这种方法将搜索问题转换为了一种排名问题。

  2. 提出了一种新的技术,这种技术可以对漏洞和开发者提交的代码之间的关联性进行排名。在这一排名机制中,作者充分考虑了两者之间的关联特征。

  3. 对提出的方法进行了验证,实验的结果表明:该方法能够覆盖更多的漏洞补丁并且减少所需的人力成本。

  4. 运用提出的方法对补丁在开源软件分支之间的部署情况进行了第一手研究。

0x02 PRELIMINARY STUDY

在上文中提到,已有的定位漏洞补丁的方法主要是基于匹配的方法,在这些方法里只使用漏洞的少量信息。在主流的方法中,主要根据以下三方面信息匹配漏洞补丁:

  1. CVE-ID:在CVE漏洞数据库中,每个漏洞都有一个独一无二的标识符,可以通过在提交的代码中搜索CVE-ID的方法判断所提交的代码是否为补丁。

  2. commit-like URLs in CVE/NVD:在CVE以及NVD数据库中,一些与漏洞有关的外部资源会以参考链接的方法保存在数据库中,而在这些外部资源中,可能会包含漏洞的补丁。

  3. patch-tagged URLs in the NVD:NVD数据库会对引用的参考链接标注分类,可以通过"Patch"标签判断其是否为补丁。

为了判断提出的方法的有效性,作者将这三种方法作为baseline,与作者提出的方法进行对比。这三种方法及其结合的表现如图:

PATCHSCOUT:一种新的定位安全补丁的方法

0x03 PATCHSCOUT DESIGN

为了实现所提出的方法,作者设计PATCHSCOUT,这个工具将NVD数据库和开源软件代码仓库作为输入,并将漏洞与所有提交的代码之间的关联性进行排名。

PATCHSCOUT的工作流程分为三步:Information Extraction;Feature Generation;Commits Ranking。

Information Extraction

在这一步中,PATCHSCOUT将所需信息从漏洞数据库以及代码仓库中提取出来。

Feature Generation

在这一步中,PATCHSCOUT使用上一步提取出来的信息,生成漏洞与提交代码的关联性特征。生成的特征如下图:

PATCHSCOUT:一种新的定位安全补丁的方法

Commits Ranking

在这一步中,PATCHSCOUT训练了一个基于RankNet的模型,并使用这一模型将漏洞和提交的代码之间的关联性进行排序。

0x04 Evaluation

作者使用召回率和审查提交的代码所需的时间作为评估PATCHSCOUT有效性的指标.实验的结果如下:

PATCHSCOUT:一种新的定位安全补丁的方法

其中N代表最多评估的提交的代码的个数。从实验的结果可以看出,PATCHSCOUT可以在有限的人工下覆盖大多的漏洞补丁。

0x05 PATCH DEPLOYMENT ACROSS BRANCHES

文章的最后,作者使用PATCHSCOUT对开源项目分支部署补丁的情况进行了研究,有如下发现:

  1. 一般认为风险等级越高的漏洞,越应该被修复,然而在作者的调查中发现,有三分之一的漏洞是高危漏洞,未修复的漏洞在分布上与CVSS漏洞风险等级无关。

  2. 漏洞数据库中信息并不完备,忽略了一些受漏洞影响的版本。

  3. 作者还对开源项目对漏洞的响应情况进行了研究。

0x06 Conclusion

本文提出了PATCHSCOUT,这个工具可以帮助人们在开源软件漏洞仓库中定位补丁的位置。PATCHSCOUT的核心思想是将一个搜索问题转换为排名问题。PATCHSCOUT综合考虑漏洞与提交代码之间的联系特征,对比现有的方法,能够更好地覆盖漏洞补丁。除此之外,作者使用PATCHSCOUT对开源项目补丁部署情况进行了调查,提出了一些新的值得研究的点。

安全学术圈招募队友-ing, 有兴趣加入学术圈的请联系secdr#qq.com

PATCHSCOUT:一种新的定位安全补丁的方法



原文始发于微信公众号(安全学术圈):PATCHSCOUT:一种新的定位安全补丁的方法

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: