原文作者:Octavian Suciu, Connor Nelson, Zhuoer Lyu, Tiffany Bao, Tudor Dumitras
原文标题:Expected Exploitability: Predicting the Development of Functional Vulnerability Exploits
原文链接:https://www.usenix.org/system/files/sec22summer_suciu.pdf
笔记作者:[email protected]
文章小编:[email protected]
该文为发表于USENIX 2021的Expected Exploitability: Predicting the Development of Functional Vulnerability Exploits。众所周知,武器化的漏洞利用程序会对网络安全造成巨大破坏,也因此网络安全行业将这种通过利用软件漏洞自动传播的恶意软件视为主要的网络攻击威胁之一。目前评估软件漏洞的可利用性仍然是一件困难且容易出错的任务,现有漏洞可利用性的评价指标往往存在不完善、不准确的问题。在本篇论文中,作者建立了一个称为“预期可利用性”的指标来改善这一情况。这一指标随着时间的推移不断预测开发功能性漏洞利用的可能性,以此帮助研究人员发现哪些漏洞应该得到优先关注。
作者首先定义了其预测目标:功能性漏洞利用。该概念是漏洞PoC的一种延续,其能够达到漏洞规定的全部安全影响。同时作者也指出虽然功能性漏洞利用更加容易用于现实世界的攻击,但其仍然受到漏洞本身以外因素(例如攻击者选择、修补延迟)的影响。因此,为了依照这个概念对数据集进行标注,本文的思路是从IBM X-Force Exchange威胁情报共享平台和Tenable Nessus漏洞扫描器中提取Temporal CVSS中的可利用性指标。再从Metasploit、Canvas等渗透工具中找到可利用的漏洞。最后,作者从Bugtraq、Skybox、AlienVault OTX等论坛通过NLP手段提取在野利用信息作为存在功能性漏洞利用的证据。综合上述多种途径,最后确定了32093个漏洞含有功能性漏洞利用。
在得到ground truth之后,作者主要对其特征选择上的创新点进行详细阐述。整体结构如下图所示,除了提取漏洞报告和NVD数据的特征,还创新性的提取PoC代码特征和文字特征。
直觉上,作者认为PoC复杂性是决定功能性漏洞利用复杂性的主要指标之一。因为如果触发漏洞需要复杂的PoC,那么功能性漏洞利用的代码也一定很复杂。另一方面,已存在复杂的PoC在一定程度上有利于开发功能性漏洞利用。因此,本文通过将代码转换为抽象语法树的方法,从中提取能标志PoC复杂度的特征,例如节点类型的统计信息、树的结构特征,以及程序内控制语句的统计信息以及它们之间的关系。此外,本文还提取PoC中的调用外部库函数的特征。作者还从AST中提取圈复杂度,用于表征程序中独立代码路径的数量。除了AST相关的特征,本文以文件大小和语言保留关键字分布的统计形式对PoC编程语言进行表征。还引入NLP处理技术,使用一组二进制unigram特征捕捉代码、描述性文字和注释中的文本信息。这些特定信息(例如漏洞作者名字)能够使分类器捕获漏洞利用程序的风格特征。具体特征选择情况如下图所示,可以看到选取特征的数量相当可观。
最后对于分类器的选择,作者并未在此多做纠结,选择了基础的两层前馈神经网络辅以ReLU激活函数作为分类模型使用,并针对多种损失函数进行较为详尽的测试。
在实验阶段,作者首先针对特征中存在噪声的问题对多种损失函数进行了测试。结果表明,作者改进得到的特征前向校准(FFC)损失函数能够有效改善由特征噪声带来的分类器性能下降问题。
之后,作者设计实验证明了其特征选择的优越性。如下图所示,使用PoC代码特征和PoC文字特征了分类器能够取得更好的效果。并且,融合NVD和漏洞报告特征也能有效提高分类器的准确率。
安全学术圈招募队友-ing
有兴趣加入学术圈的请联系 secdr#qq.com