基于机器学习的动静结合的二进制漏洞检测
2021-12-11蔡昊君牛少彰
新一代信息技术 2021年20期
蔡昊君,牛少彰
(北京邮电大学 计算机学院,北京 100876)
0 引言
随着互联网的飞速发展,网络与人们的生活越来越息息相关,各种社交、学习、购物等软件逐渐渗透到我们生活中,给我们的生活带来了很多便利的同时也带来了很多网络攻击。软件漏洞是网络攻击盛行的一个根本原因,在过去的十几年中,软件漏洞数量增长迅速,NVD的统计数据显示,2002年到2019年共有121 279条漏洞出现,其中未知漏洞类型就多达38 868条。因此,及时发现漏洞是我们必须大力研究的内容,漏洞检测可以帮助安全工作人员在软件发放到市场前及时发现并修补漏洞。
本文研究的是与内存有关的漏洞,在 CWE最近两年的最危险软件漏洞榜单中,对内存缓冲区范围内操作不当和“越界写入”引起的漏洞在榜单中排名非常靠前,在官方统计中跟内存相关的缺陷所引发的漏洞威胁程度还是很高的。软件漏洞分析大致分为源代码分析和二进制代码分析,源代码的漏洞分析大部分是基于静态的,Kim等人[1]提出了基于代码相似性的方法,Yamaguchi等人[2-4]提出基于模式的方法,Ramos等人提出[5-6]符号执行的方法,而动态分析技术包括污点分析[7-8]和模糊测试[9-10]。但大部分商业软件的发布并不包含自身的源代码,而是以二进制的形式发布,所以面向二进制程序的漏洞分析具有极其重要的意义。现有的面向二进制程序的漏洞分析方法主要是静态分析方法[11-12]和动态分析方法[13-14],静态分析通过利用软件工具收集程序的语法和语义等信息,从而达到软件分析的目的。……
登录APP查看全文
