一句话:揭示现有深度学习漏洞检测器因只关注单个基元而漏检跨基元漏洞,并提出改进框架。
论文研究基于深度学习的漏洞检测。现有公开漏洞数据集通常将漏洞表示为代码行、函数或程序切片等基元,检测器学习单个基元的脆弱模式并据此预测其他基元。作者假设只关注单个基元会妨碍对跨多个基元(MBU)漏洞的检测,因为这类漏洞需要所有组成基元均被判为漏洞才算正确。为验证假设,作者分析 ReVeal、DeepWukong 和 LineVul 三个代表性检测器,发现其数据集中均存在 MBU 漏洞,且检测此类漏洞时准确率显著下降。论文提出一个框架,以帮助 DL 检测器更恰当地纳入 MBU 漏洞。
Deep learning (DL) has been a common thread across several recent techniques for vulnerability detection. The rise of large, publicly available datasets of vulnerabilities has fueled the learning process underpinning these techniques. While these datasets help the DL-based vulnerability detectors, they also constrain these detectors' predictive abilities. Vulnerabilities in these datasets have to be represented in a certain way, e.g., code lines, functions, or program slices within which the vulnerabilities exist. We refer to this representation as a base unit. The detectors learn how base units can be vulnerable and then predict whether other base units are vulnerable. We have hypothesized that this focus on individual base units harms the ability of the detectors to properly detect those vulnerabilities that span multiple base units (or MBU vulnerabilities). For vulnerabilities such as these, a correct detection occurs when all comprising base units are detected as vulnerable. Verifying how existing techniques perform in detecting all parts of a vulnerability is important to establish their effectiveness for other downstream tasks. To evaluate our hypothesis, we conducted a study focusing on three prominent DL-based detectors: ReVeal, DeepWukong, and LineVul. Our study shows that all three detectors contain MBU vulnerabilities in their respective datasets. Further, we observed significant accuracy drops when detecting these types of vulnerabilities. We present our study and a framework that can be used to help DL-based detectors toward the proper inclusion of MBU vulnerabilities.