Deep learning-based vulnerability detection models have recently been shown to be effective and, in some cases, outperform static analysis tools. However, the highest-performing approaches use token-based transformer models, which do not leverage domain knowledge. Classical program analysis techniques such as dataflow analysis can detect many types of bugs and are the most commonly used methods in practice. Motivated by the causal relationship between bugs and dataflow analysis, we present DeepDFA, a dataflow analysis-guided graph learning framework and embedding that uses program semantic features for vulnerability detection. We show that DeepDFA is performant and efficient. DeepDFA ranked first in recall, first in generalizing over unseen projects, and second in F1 among all the state-of-the-art models we experimented with. It is also the smallest model in terms of the number of parameters, and was trained in 9 minutes, 69x faster than the highest-performing baseline. DeepDFA can be used with other models. By integrating LineVul and DeepDFA, we achieved the best vulnerability detection performance of 96.4 F1 score, 98.69 precision, and 94.22 recall.
翻译:最近已经证明,基于深层次学习的脆弱性检测模型是有效的,在某些情况下,超过了静态分析工具。然而,绩效最高的方法使用基于象征性的变压器模型,这些模型不能利用域知识。典型的方案分析技术,如数据流分析,可以检测许多类型的错误,也是实践中最常用的方法。受错误和数据流分析之间因果关系的驱动,我们介绍了DeepDFA,一个数据流分析指导图表学习框架,并嵌入了使用程序语义特征来检测脆弱性的嵌入。我们发现,DeepDFA是表现和高效的。DFA在回顾中名列第一,首先是对未见项目进行概括化,在F1中排名第二。它也是我们所试验的所有最先进的模型,在参数数量方面也是最小的模型,在9分钟内培训,比最高基准速度快69x。DeepDFA可以与其他模型一起使用。通过整合LEVul和DeepDFA,我们取得了96.4 F1评分、98.69精确度和94.22回顾的最佳脆弱性检测性。