基于深度学习的软件安全漏洞挖掘
早期安全漏洞挖掘:静态分析技术、动态分析技术、混合分析技术
静态分析技术:不运行程序,高效快速,但构造成本高、误报漏报率高
基于规则分析、二进制对比、静态符号执行、静态污点分析
动态分析技术:运行程序,路径覆盖率低,路径爆炸问题,消耗大量计算资源
模糊测试、动态符号执行、动态污点分析
基于机器学习:基于软件代码度量、代码属性、代码相似性、代码模式
软件代码度量:使用量化指标,检测速度快,但与漏洞本身关联不强,高误报漏报率
开发者活动、复杂度、代码变化、继承深度、耦合度、内聚度
基于代码属性:检测SQL注入、XSS、RCE、缓冲区溢出CWE-119等漏洞
基于代码相似性:提取定义好的特征,然后比较相似性,判断是否同一类型的漏洞
需要手工定义特征,且只能发现已知漏洞
基于代码模式:词法分析(文本挖掘)/语法分析(静态分析技术)
基于传统机器学习的方法存在问题:依赖专家的定义,只能检测已知漏洞,难以定位漏洞
基于深度学习:构建神经网络以提取特征
会议:IEEE S&P,USENIX Security,CCS,NDSS
数据集:美国国家计算机通用漏洞数据库(National Vulnerability Dat