以PoC迁移促进漏洞评估
2022-2-28 21:5:12 Author: mp.weixin.qq.com(查看原文) 阅读量:28 收藏

原文作者:Jiarun Dai, Yuan Zhang, Hailong Xu, Haiming Lyu, Zicheng Wu, Xinyu Xing, Min Yang
原文标题:Facilitating Vulnerability Assessment through PoC Migration
原文链接:https://yuanxzhang.github.io/paper/vulscope-ccs21.pdf
笔记作者:[email protected]
文章小编:[email protected]

简介

该文为发表于CCS 2021的Facilitating Vulnerability Assessment through PoC Migration。最近的研究表明,即使是由MITRE/NIST等高信誉组织发布的漏洞报告同样也无法保证包含100%正确的易受攻击版本信息,这会导致部分用户面临被攻击的危险。在本篇论文中,作者引入基于模糊测试的方法试图这个问题。作者构建了一个名为VulScope的自动化工具,通过跟踪并引导已有PoC输入发生变异,并将变异后的PoC迁移至其它版本的软件中以观察是否软件存在相同的漏洞。

方法

作者提出的自动化工具VulScope主要包含两大模块:跨版本路径对齐和PoC调整。总体而言,VulScope以在参考版本上触发漏洞的PoC作为输入,并测试同一软件的另一个版本是否也容易受到此漏洞的影响。为了确认漏洞,VulScope采用一种路径感知的模糊测试方法,不断调整输入使PoC发生变异。并在测试软件的目标版本时,保证Payload路径与参考版本上观察到的路径相似。简单来讲,VulScope主要由6个步骤实现:

  • 1:VulScope分别收集参考版本和目标版本上的给定PoC
  • 2:VulScope 执行跨版本路径对齐。
  • 3:如果在目标版本上观察到崩溃,VulScope需要验证此崩溃是否由目标漏洞触发。
  • 4:基于跨版本路径对齐找到引发崩溃的关键变量。
  • 5:使用基于模糊测试的方法改变与关键变量相关的输入字节
  • 6:执行变异的输入,并分析其执行轨迹与参考版本之间的相似性。如果没能触发目标漏洞,则取相似度最高的样本进行下一轮变异,回到步骤4。

为了读者更好理解上述6大步骤,下面对VulScope的两个模块进行简单介绍。首先,对于跨版本路径对齐,该模块是为了将两个不同版本软件执行路径中的函数进行关联。为了达成这一目的,VulScope首先确定两个版本之间函数级的代码改动情况(包括函数重命名、函数合并/拆分)。然后引入一个基于树的数据结构来表示执行路径。最后通过一种上下文敏感的树对齐算法实现跨版本的函数映射。另一方面,为了能够更好的验证在目标版本中是否可以触发参考版本中同样的漏洞,VulScope先确定在目标执行路径中访问的关键变量,改变这些变量的值可能有助于避免测试无效的执行路径。之后,VulScope使用一种基于模糊测试的方法来迭代调整原始PoC,从而纠正一些冗余、无效的执行路径。最后,VulScope采用了跨版本崩溃分类机制来判断测试中出现的崩溃是否由目标漏洞触发。

实验

作者首先手工检验了470个软件版本上的30个CVE,并进行了测试,测试结果如下表所示。

由上表可以看到,这些易受攻击的版本有76.8%与报告中不重叠。在对VulScope的测试中可以看到其在将PoC从一个版本迁移到另一个版本时基本不会引入误报,同时仅仅只有7.9%的漏报率。

此外,作者还将无法直接触发漏洞的原版PoC使用两个具有代表性的模糊测试工具AFL和AFLGO进行了实验。由上表可见,VulScope在执行PoC迁移任务时优于这两种现有技术,它可以在较短的时间内找到更多在目标版本中能够触发漏洞的变异PoC。

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

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