一句话:提出 DeepDFA,一种受数据流分析启发的图学习框架与嵌入技术,实现高效且有效的漏洞检测。
深度学习漏洞检测性能突出,但高性能方法多用 token-based Transformer,难以高效捕获所需代码语义。本文结合基于根因的数据流分析与深度学习,提出 DeepDFA:受数据流分析启发的图学习框架及使图学习模拟数据流计算的嵌入技术。实验表明,DeepDFA 优于所有非 Transformer 基线,训练仅 9 分钟,比最强基线快 75 倍;仅用 50+ 漏洞样本和数百总样本即可保持全量性能。它在 DbgBench 上平均检出 17 个真实漏洞中的 8.7 个,并能区分修补版与缺陷版,而最强基线未检出漏洞;结合 LLM 后在 Big-Vul 上达到 96.46 F1、97.82 精确率和 95.14 召回率的新 SOTA。
Deep learning-based vulnerability detection has shown great performance and, in some studies, outperformed static analysis tools. However, the highest-performing approaches use token-based transformer models, which are not the most efficient to capture code semantics required for vulnerability detection. Classical program analysis techniques such as dataflow analysis can detect many types of bugs based on their root causes. In this paper, we propose to combine such causal-based vulnerability detection algorithms with deep learning, aiming to achieve more efficient and effective vulnerability detection. Specifically, we designed DeepDFA, a dataflow analysis-inspired graph learning framework and an embedding technique that enables graph learning to simulate dataflow computation. We show that DeepDFA is both performant and efficient. DeepDFA outperformed all non-transformer baselines. It was trained in 9 minutes, 75x faster than the highest-performing baseline model. When using only 50+ vulnerable and several hundreds of total examples as training data, the model retained the same performance as 100% of the dataset. DeepDFA also generalized to real-world vulnerabilities in DbgBench; it detected 8.7 out of 17 vulnerabilities on average across folds and was able to distinguish between patched and buggy versions, while the highest-performing baseline models did not detect any vulnerabilities. By combining DeepDFA with a large language model, we surpassed the state-of-the-art vulnerability detection performance on the Big-Vul dataset with 96.46 F1 score, 97.82 precision, and 95.14 recall. Our replication package is located at https://doi.org/10.6084/m9.figshare.21225413.