Predicting buffer overflow using semi-supervised learning

题目: Predicting buffer overflow using semi-supervised learning
作者: Meng Qingkun, Wen Shameng, Feng Chao, Tang Chaojing
单位: National University of Defense Technology, NUDT
出版: CISP-BMEI, 2016

解决的问题

利用标签传播算法进行缓冲区溢出漏洞检测。

所用方法

标签传播

一种半监督学习算法,利用少部分有标签的点与大部分无标签点进行分类。若一个无标签点与某个有标签点的距离在阈值之下,则用有标签点的标签为其标注。

抽取特征

K. J. Kratkiewicz总结出22个缓冲区溢出相关的特征,如下所示。

  • write/read:确定对于缓冲区的操作
  • buffer boundary:这一项特征确定了是缓冲区上溢还是缓冲区下溢
  • data type:缓冲区数据类型
  • memory location:堆或栈
  • scope:过程内/全局/过程间
  • container:数组或结构体或两者结合
  • pointer:确定缓冲区是否有指针解引用
  • index complexity:我们基于的假设是索引越复杂,越可能发生缓冲区溢出。缓冲区索引从常数到非线性表达式,到另一个数组中的元素,复杂度不尽相同,除了指针解引用,我们对每一种索引有不同的表示
  • address complexity:表示对于指针计算的复杂度
  • length complexity:与诸如strncpy,strncat,memncpy等库函数相关,表示需要复制的长度的复杂度
  • alias of buffer address:缓冲区地址别名的复杂度需要累积起来
  • alias of index:缓冲区索引别名的复杂度的累积
  • proximate control flow:在一个缓冲区变量附近的条件语句
  • forane control flow:在一个缓冲区变量附近的条件语句,并且在变量和此条件语句中间有另外一个条件语句
  • loop structure:确定缓冲区所在的循环的类型,for/while/do-while
  • loop complexity attribute:确定在for初始化中的变量个数
  • asynchrony attribute:程序是同步还是异步
  • taint:缓冲区是否会被输入影响,输入包括命令行,环境变量,读入的文件,socket/service,进程环境
  • runtime environment dependency:确定溢出是否与运行时有关
  • magnitude:溢出的大小
  • continuous/discrete:确定缓冲区访问的是连续还是离散的元素
  • signed/unsigned:确定缓冲区溢出是否由signed和unsigned的错误匹配造成

我们对于上面的特征做出了修改,去除了读/写和上溢/下溢特征,缓冲区的数据类型,循环复杂度,运行时环境依赖,溢出大小,连续/离散,有符号/无符号错误匹配也不考虑。
对于上面提到的索引别名和缓冲区地址,我们构建一个6维度的向量:<常数索引,变量索引,线性表达式索引,非线性表达式索引,函数值索引,数组内容索引>,<常数地址,变量地址,线性表达式地址,非线性表达式地址,函数值地址,数组内容地址>,对长度复杂度属性,我们构建了一个7维向量<无长度,常数长度,变量长度,线性表达式长度,非线性表达式长度,函数值长度,数组内容长度>。
我们还添加了最大循环次数和条件层级数,以缓冲区作为参数的函数调用数,最后得到了一个22维向量。

实验

实验所用6个程序如下所示:

  • nginx 0.6.32
  • inspircd 1.1.22
  • libexif 0.6.20
  • popler 0.15.0
  • snort 2.40
  • ffmpeg 0.5.7

我们的训练数据是4个程序中10个有漏洞函数和10个无漏洞函数,训练程序和已标注漏洞如下所示:

我们利用nginx和libexif作为测试集,实验结果表明,模型辨认出了CVE-2009-2629, CVE-2009-3896, CVE-2012-2836, CVE-2012-2814, CVE-2012-2841, CVE-2012-2840, CVE-2012-2812,达到了87.2%的精确度和87.5%的召回率。

猜你喜欢

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