一句话:提出 VulTeller,用深度学习定位漏洞语句并生成漏洞描述,首次形式化漏洞描述生成任务。
自动发现软件漏洞是长期目标,但现有检测工具信息有限;细粒度漏洞定位受 GNN 难以捕获长程与整体依赖的瓶颈,且漏洞理解与诊断支持不足。本文提出 VulTeller,基于深度学习自动定位函数中的易受攻击语句并生成漏洞描述。方法通过建模控制流路径并采用污点分析提取控制与数据依赖,设计神经模型编码控制流与污点流,分别用节点分类和注意力解码器完成定位与描述。在真实漏洞上的定量实验与人工评估显示,该方法优于现有最优方法,并首次形式化漏洞描述生成问题。
Automatically discovering software vulnerabilities is a long-standing pursuit for software developers and security analysts. Since detection tools usually provide limited information for vulnerability inspection, recent work turns the attention to identify fine-grained vulnerabilities, i.e., vulnerable statements. However, existing work for vulnerability localization struggles to capture long-range and integral dependency information due to the bottleneck of Graph Neural Networks (GNNs). Moreover, little research has been done to help developers understand detected vulnerabilities, leaving vulnerability diagnosis a challenging task. In this paper, we propose VulTeller, a deep learning-based approach that can automatically locate vulnerable statements in a function and more importantly, can describe the vulnerability. Our approach focuses on extracting precise control and data dependencies in the code, achieved through modeling control flow paths and employing taint analysis. We design a novel neural model that encodes the control flows and taint flows which reside in the control flow paths, and decodes them via node classification and an attentional decoder for the two tasks respectively. We conduct extensive experiments with real-world vulnerabilities to evaluate the proposed approach. The evaluation results, including quantitative measurement and human evaluation, demonstrate that our approach is highly effective and outperforms state-of-the-art approaches. Our work for the first time formulates the problem of vulnerability description generation, and makes one step further towards automated vulnerability diagnosis.