With the continuous extension of the Industrial Internet, cyber incidents caused by software vulnerabilities have been increasing in recent years. However, software vulnerabilities detection is still heavily relying on code review done by experts, and how to automatedly detect software vulnerabilities is an open problem so far. In this paper, we propose a novel solution named GraphEye to identify whether a function of C/C++ code has vulnerabilities, which can greatly alleviate the burden of code auditors. GraphEye is originated from the observation that the code property graph of a non-vulnerable function naturally differs from the code property graph of a vulnerable function with the same functionality. Hence, detecting vulnerable functions is attributed to the graph classification problem.GraphEye is comprised of VecCPG and GcGAT. VecCPG is a vectorization for the code property graph, which is proposed to characterize the key syntax and semantic features of the corresponding source code. GcGAT is a deep learning model based on the graph attention graph, which is proposed to solve the graph classification problem according to VecCPG. Finally, GraphEye is verified by the SARD Stack-based Buffer Overflow, Divide-Zero, Null Pointer Deference, Buffer Error, and Resource Error datasets, the corresponding F1 scores are 95.6%, 95.6%,96.1%,92.6%, and 96.1% respectively, which validate the effectiveness of the proposed solution.
翻译:随着工业互联网的不断扩展,近年来软件脆弱性造成的网络事件不断增加。然而,软件脆弱性检测仍然严重依赖专家对代码进行的代码审查,而如何自动检测软件脆弱性是一个尚未解决的问题。在本文件中,我们提出了一个名为GapEye的新解决方案,以确定C/C++代码的功能是否有弱点,这可以大大减轻代码审计员的负担。GapEye源于以下观察,即一个非可忽略功能的代码属性图自然不同于具有相同功能的脆弱函数的代码属性图。因此,检测脆弱功能归因于图表分类问题。GraphEye由VecCPG和GcGAT组成。VecCPG是代码属性图的一种矢量化工具,旨在描述相应源代码代码的关键语法和语义特征,可以大大减轻代码审计员的负担。GcGcGAT是一个深层学习模型,该模型旨在根据VecCPG解决一个脆弱函数的图形分类问题。最后,GreagoEye由SARD-92 6 Buffer1 和GGGGAT。 Veffer1 95 Rest% Orence Orence Fard-Bard-Card1 95 Fruffard-Card-Zer 和Nustard-Zard_DRislationrlationrlations-95 Fard_DRisal_BardZard-ZZZZZ