论文部分内容阅读
随着代码量和代码复杂度的不断提高,存在越来越多容易被攻击者所利用而导致原始程序逻辑错误的漏洞。为了能尽早发现并修补软件中存在的漏洞,二进制软件漏洞挖掘技术成为了安全研究领域的热点课题之一。使用机器学习的二进制漏洞检测模型有着能批量处理大规模数据,检测速度快,检测成本低的优势。但是因为二进制级别的软件不能直接表达程序信息,无法从中提取有效的特征集,导致现有的基于机器学习的二进制漏洞挖掘方法往往具有较高的漏报率和误报率。在此情形下,本文结合机器学习和自然语言处理技术,提出一种二进制特征提取的方法并在Android平台上设计和实现了一个漏洞检测系统。本文的主要工作及成果如下:1、通过对二进制文件预处理和词嵌入技术的研究,提出一种基于底层语言的特征向量化模型,使用这种模型可以从二进制文件中初步构建出包含汇编指令内上下文关系的特征向量。2、通过对深度神经网络的研究,提出Att-BLSTM特征提取模型,该模型的核心是双向长短期记忆网络(BLSTM)及注意力(Attention)机制,通过这种模型可以从二进制文件中提取出包含丰富程序语义信息的二进制特征向量。3、经过研究,本文并未在网上和其他论文中找到可用的Android平台二进制软件的漏洞数据集。为了完成本文的实验工作,本文通过从漏洞信息发布平台收集到了从2000年到2018的漏洞信息,并建立了一个Android平台二进制软件(动态链接库文件)的数据集。4、基于所提的两个模型,本文在Android平台上设计并实现了一套二进制漏洞检测系统。测试结果表明,相较于现有的基于机器学习的二进制漏洞挖掘方法,本文所提出的模型能够更好地学习二进制文件的程序语义信息,基于该模型所设计的漏洞检测系统的精确度最高能够达到93.86%。