当前位置:
X-MOL 学术
›
IEEE Trans. Inform. Forensics Secur.
›
论文详情
Our official English website, www.x-mol.net, welcomes your
feedback! (Note: you will need to create a separate account there.)
HeVulD: A Static Vulnerability Detection Method Using Heterogeneous Graph Code Representation
IEEE Transactions on Information Forensics and Security ( IF 6.3 ) Pub Date : 2024-09-16 , DOI: 10.1109/tifs.2024.3457162 Yuanming Huang, Mingshu He, Xiaojuan Wang, Jie Zhang
IEEE Transactions on Information Forensics and Security ( IF 6.3 ) Pub Date : 2024-09-16 , DOI: 10.1109/tifs.2024.3457162 Yuanming Huang, Mingshu He, Xiaojuan Wang, Jie Zhang
Vulnerability detection in source code has been a focal point of research in recent years. Traditional rule-based methods fail to identify complex and unknown vulnerabilities, leading to poor performance. While deep learning (DL)-based methods have improved these shortcomings, there is still room for enhancement. For C/C++ source code, effective vulnerability detection requires considering both the information in code statements and the structural information of the code. Graph-based code representation methods can address this need, but existing approaches often use homogeneous graphs that do not differentiate between various types of code statements or dependencies. Few methods use heterogeneous graphs for C/C++ code representation. This study explores this potential and proposes a new C/C++ vulnerability detection method named HeVulD. HeVulD introduces two node definition approaches and a key-node-based program slicing method, generating heterogeneous graph representations for source code. These representations consist of both heterogeneous nodes and edges, providing a more precise representation of source code. HeVulD achieves an F1-score of 96.4% on the SARD dataset, outperforming nine baseline C/C++ vulnerability detection methods. HeVulD has been tested under adversarial attack scenarios to assess its robustness. Additionally, HeVulD has been tested on ten open-source software projects and the latest CVEs, demonstrating its detection and generalization capabilities in real-world scenarios and its ability to identify unknown vulnerabilities.
中文翻译:
HeVulD:一种使用异构图代码表示的静态漏洞检测方法
源代码中的漏洞检测一直是近年来研究的重点。传统的基于规则的方法无法识别复杂和未知的漏洞,导致性能不佳。虽然基于深度学习 (DL) 的方法改善了这些缺点,但仍有改进的空间。对于 C/C++ 源代码,有效的漏洞检测需要同时考虑代码语句中的信息和代码的结构信息。基于图形的代码表示方法可以满足这一需求,但现有方法通常使用同构图形,这些图形不区分各种类型的代码语句或依赖项。很少有方法使用异构图来表示 C/C++ 代码。本研究探讨了这种潜力,并提出了一种新的 C/C++ 漏洞检测方法,名为 HeVulD。HeVulD 引入了两种节点定义方法和一种基于键节点的程序切片方法,为源代码生成异构图表示。这些表示由异构节点和边缘组成,从而提供更精确的源代码表示。HeVulD 在 SARD 数据集上取得了 96.4% 的 F1 分数,优于 9 种基线 C/C++ 漏洞检测方法。HeVulD 已在对抗性攻击场景中进行了测试,以评估其稳健性。此外,HeVulD 已在 10 个开源软件项目和最新的 CVE 上进行了测试,展示了其在实际场景中的检测和泛化能力,以及识别未知漏洞的能力。
更新日期:2024-09-16
中文翻译:
HeVulD:一种使用异构图代码表示的静态漏洞检测方法
源代码中的漏洞检测一直是近年来研究的重点。传统的基于规则的方法无法识别复杂和未知的漏洞,导致性能不佳。虽然基于深度学习 (DL) 的方法改善了这些缺点,但仍有改进的空间。对于 C/C++ 源代码,有效的漏洞检测需要同时考虑代码语句中的信息和代码的结构信息。基于图形的代码表示方法可以满足这一需求,但现有方法通常使用同构图形,这些图形不区分各种类型的代码语句或依赖项。很少有方法使用异构图来表示 C/C++ 代码。本研究探讨了这种潜力,并提出了一种新的 C/C++ 漏洞检测方法,名为 HeVulD。HeVulD 引入了两种节点定义方法和一种基于键节点的程序切片方法,为源代码生成异构图表示。这些表示由异构节点和边缘组成,从而提供更精确的源代码表示。HeVulD 在 SARD 数据集上取得了 96.4% 的 F1 分数,优于 9 种基线 C/C++ 漏洞检测方法。HeVulD 已在对抗性攻击场景中进行了测试,以评估其稳健性。此外,HeVulD 已在 10 个开源软件项目和最新的 CVE 上进行了测试,展示了其在实际场景中的检测和泛化能力,以及识别未知漏洞的能力。