V0Finder:寻找公开软件漏洞的正确来源
2021-07-17 09:00:00 Author: mp.weixin.qq.com(查看原文) 阅读量:100 收藏

原文作者:Seunghoon Woo, Dongwook Lee, Sunghan Park, Heejo Lee, Sven Dietrich
原文标题:V0Finder: Discovering the Correct Origin of Publicly Reported Software Vulnerabilities
原文链接:https://ccs.korea.ac.kr/pds/SECURITY21.pdf
笔记作者:nerd@SecQuan

简介

该文为发表于USENIX 2021的V0Finder: Discovering the Correct Origin of Publicly Reported Software Vulnerabilities。其研究了如何通过公共的漏洞信息,找出最初产生安全漏洞的软件。目前,越来越多的软件使开发人员能够以公开库和开放源码软件(OSS)的形式彼此共享代码。这种代码共享虽然能够提高了开发效率,但同时也导致漏洞的传播。为了缓解这一问题,已知的漏洞信息会通过NVD共享。但由于无法保证这些漏洞报告的质量和正确性,仍有可能无法阻止漏洞的传播。针对这一问题,基于最早发布时间的简单方法会产生大量假阳性告警,因此,在篇论文中,作者通过回溯漏洞传播方向等方法寻求最初的漏洞源头,并设计实验最终证明其方法有效。

方法

该文将仿照流行病学中“零号病人”的概念,将出现漏洞的源头软件命名为“零号漏洞(Vulnerability Zero)”,以下简称VZ。如下图所示,作者将漏洞在开源软件中的传播路径抽象为一个有向无环图。显然,在主观感觉上其中入度为0,出度不为0的节点有较大可能是VZ。

由此可见,作者提出的方法中,构建该漏洞传播图的质量至关重要,其主要面临两大难题:(1)漏洞代码中的语法多样性问题(2)选取合适特征以识别VZ。如下图所示,V0Finder主要包括三个阶段:节点发现、边连接、根节点发现,逐步解决上述两大问题。

  1. 节点发现
    作为V0Finder的首个阶段,其工作是基于CVE数据,从开源代码数据集中发现存在漏洞的软件作为节点。首先其通过漏洞的补丁重构具有漏洞的函数,然后使用基于局部敏感哈希的方法检测漏洞函数是否被复制到其它软件中,从而解决代码语法多样性的问题。
  2. 边连接
    第二阶段为边的连接,这一阶段难点在于如何确定边的方向,形象的说就是作者使用的方法是基于函数相似性的,但是在假设时间元素无法正确反应事实的条件下,如何确定谁是漏洞源头,谁是被污染的。因此,作者通过三个角度来尝试解决该问题:(1)源代码(2)代码位置(3)元数据文件。首先,作者给出两个评估参数α和β,分子分母均为函数个数。当α<1且β=1时,认为Sv'被Sv重用。该项规则用于识别那些不修改代码,将漏洞软件全部引入的情况。其次,V0Finder对相似函数所在文件的文件路径进行比较,如果出现如下图类似的包含情况,责任为被包含者为源头,漏洞传播方向指向包含者。另外,该部分可能出现一种特殊情况,即两软件相同函数所在文件的文件路径均完全相同,此时则放弃使用该条规则确定二者之间的重用关系。最后,针对那些无法通过上述方法辨别重用关系的含漏洞软件,则遍历软件的目录,记录READNELICENSECOPYING这三种元数据文件的内容与路径信息。然后判断在根目录下的这三种文件是否存在被原封不动的复制到其他软件的非根目录中的情况。如果存在该情况,则认为前者被后者重用。
  3. 根节点发现
    基于直观的想象,作者通过漏洞传播图中的根节点来寻找VZ,定义根节点为漏洞传播图中入度为0且出度大于0的节点。基于上述定义,可能存在三种情况:(1)单根(2)复数根(3)无根。其中,单根说明找到了VZ,多根表示真正的VZ不在软件数据集中或者V0Finder没有发现某些软件之间的重用关系,无根代表VZ不存在(例如算法漏洞,其重用关系很模糊,不认为其是VZ),或者漏洞尚未传播,又或者是V0Finder由于没有发现某些软件之间的重用关系从而产生的假阴性现象。

实验

作者通过CVE数据和广泛收集的开源代码进行漏洞传播图生成,其评估矩阵定义如下:

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


文章来源: http://mp.weixin.qq.com/s?__biz=MzU5MTM5MTQ2MA==&mid=2247486238&idx=1&sn=a12ba939a53acd63028a3fae541b21db&chksm=fe2ef495c9597d8368e92e4bf00a65f621656ef5334c4ccc1f9f82955dc8f57b3e0ab8adc5d9#rd
如有侵权请联系:admin#unsafe.sh