最近在研究图算法在漏洞检测中的应用,于是看到了这篇文章,就顺手总结了一下!
DeepWukong: Statically Detecting Software Vulnerabilities using Deep Graph Neural Network
这篇论文介绍了一种新的静态检测软件漏洞的方法——DeepWukong。传统的静态分析方法只能检测一些已知的内存错误,而现代软件系统中存在各种复杂的漏洞。因此,开发精确且高效的静态分析解决方案是非常困难和费力的。DeepWukong利用先进的图神经网络技术将代码片段嵌入到紧凑、低维的表示中,并产生一种新的代码表示方式,保留了高级编程逻辑(如控制流和数据流)以及程序的自然语言信息。作者在实验中使用了105,428个真实世界的程序,与四种传统静态漏洞探测器和三种最先进的基于深度学习的方法进行了比较。结果表明,DeepWukong比其他方法更有效,为结合程序分析和深度学习技术解决静态代码分析挑战提供了有希望的方向。
- 方法概述:该论文提出了一种基于程序依赖关系图和代码符号化嵌入的漏洞预测方法。首先通过程序依赖关系图(Program Dependence Graph)获取控制和数据依赖信息,并利用割集算法提取子程序;然后将每个节点视为一个程序点,使用系统API调用、算术运算等作为程序点的候选集合;接着通过深度学习模型对这些候选集合进行分类,以识别潜在的漏洞。 具体来说,该方法分为三个步骤:程序片断选取、代码符号化与嵌入以及漏洞预测。在第一步中,通过对程序依赖关系图进行割集算法处理,得到程序中的所有可能子程序,然后将每个子程序看作一个节点,并将其加入到程序片断选取阶段的候选集合中。在第二步中,对于每个节点,先对其进行符号化,即将其变量名和函数名替换为统一的标识符,再通过Doc2Vec模型将其转换为向量表示。最后,在第三步中,将每个节点的向量表示输入到深度学习模型中,用于漏洞预测。

最低0.47元/天 解锁文章
1215

被折叠的 条评论
为什么被折叠?



