刘思琦,王一鸣
(北京交通大学 计算机与信息技术学院,北京100044)
在时间维度上,漏洞都会经历产生、发现、公开和消亡等过程,不同的时间段,漏洞有不同的名称和表现形式。1day漏洞是指在厂商发布安全补丁之后,大部分用户还未打补丁的漏洞,此类漏洞依然具有可利用性。在各类型软件中,许多漏洞的寿命超过12个月,针对此类漏洞的通用应用修复办法是使用代码匹配[1],但是往往通过补丁做出的修补都是一些细微的变化,这会导致许多代码匹配的方法不精确且不通用,造成结果高误报。
基于以上问题和背景,本文设计了一种由源代码到二进制的基于补丁特性的漏洞扫描模型Bin-Scan;基于现存算法设计了一种源代码漏洞检测算法,构建了基于公开网站的漏洞信息数据库,并得到了基于补丁源代码检测漏洞情况的初步结果;提出了一种利用补丁前后文件形成漏洞库,基于CFG和代码相似性的二进制漏洞检测算法;实现了通过识别二进制文件补丁是否存在以检测漏洞。
漏洞扫描包括静态漏洞扫描和动态漏洞扫描,静态漏洞扫描主要包括已知漏洞扫描和未知漏洞扫描,已知漏洞扫描又根据研究对象不同分为源代码扫描和二进制代码扫描。为提高漏洞检测的准确率并降低误检率,确保检全率与正确率的平衡,源代码漏洞扫描检测代码复用,主要使用方法有利用正则化窗口匹配的Redebug[2],利用签名匹配的VUDDY[3]、VulPecker[4]以及基于深度学习的漏洞检测系统VulDeePecker[5]等。……