Vulnerability Extrapolation: Assisted Discovery of Vulnerabilities using Machine Learning

题目: Vulnerability Extrapolation: Assisted Discovery of Vulnerabilities using Machine Learning
作者: Fabian Yamaguchi, Felix Lindner, Konrad Rieck
单位: Technische Universitat Berlin, Germany
出版: USENIX


解决的问题

漏洞的发现是一个艰难的过程,需要大量的人工操作。我们提出一个方法来辅助漏洞检测。

方法

漏洞的推断基于的思想是利用对已知漏洞进行观察得到的编程模式来识别未知的漏洞。基于的假设是漏洞经常与特定的API模式联系在一起。我们的方法分为以下四步:

API symbol的抽取

我们将用来获取API功能的标识符都称作API symbol。在本工作中的API symbol包括以下几种:

  • 类型名
  • 函数名
  • 类型转换

以下图为例,函数func1的API symbol已经加粗。

基于API symbol,我们就可以定义API使用模式,即在多个函数中使用过的API symbol集合。

从API symbol到向量


上图表示了从API symbol到向量的映射方法,X表示函数集合,S表示API symbol集合,TFIDF为s赋予权重。赋予权重是为了确保把过于频繁出现的API symbol的贡献降低,类似与对自然语言文本去停用词。

主成分分析

主成分分析是机器学习中一个标准的技术,用来自动确定一个向量空间中更具描述性的方向。在我们的设定中,这样的方向是与API symbol的结合有关的,并且能够被解释为较明显的API使用模式。
PCA在向量空间中寻找d个正交方向来抓住数据中尽可能多的变化。我们利用矩阵分解来实现。矩阵M可以被分解为以下三个矩阵:

下面对三个矩阵分别进行解释:

  • 矩阵U的d列反映了代码基中d个最明显的API使用模式。
  • 矩阵sigma指示了主成分的变化,并且允许我们获得d个使用模式中每一个的重要性。
  • U和V的行分别代表了API symbol和函数。矩阵V可以用来描述函数的相似性。

辅助漏洞发现

漏洞推断

通过利用相似度计算方法比较V的行向量,代码基中所有函数的关系都能够被评估。这就允许了对拥有相似API使用模式的函数的快速检测,这就是漏洞推断的基础。给出一个包含已知漏洞的函数,分析人员能够集中检查有相似API使用模式的函数。

抽取明显的使用模式

矩阵U的d列代表d个最明显的API使用模式,分析人员能够利用这一点将代码基分为几个子集,而专注于特定的模式。

API浏览

待续

猜你喜欢

转载自blog.csdn.net/m0_37924639/article/details/81286869