已经开发了各种方法来检测漏洞(Cui et al.,2022),包括静态、动态、一致性分析和模糊方法。正如我们将在相关工作部分进一步深入研究的那样,TrVD属于静态检测系列中基于学习的范式。在这种范式中,漏洞检测任务被公式化为一个分类问题。具体来说,在训练阶段,分类器 通过代码表示构建、特征提取和模型训练,从一组带有基本事实标签的训练样本中学习。在检测阶段,当出现一段可能看不见的源代码时, 执行代码表示构造和特征提取的相同过程。经过训练的分类器预测漏洞的存在,或者进一步精确定位特定的漏洞类型。
可用性
其他被广泛采用的代码表示包括CFG、PDG和各种基于图形的变体。这些表示更明确地描述了代码元素之间的控制或数据依赖关系,然而,当面对不可执行或不完整的代码片段时,很难精确推导出这些依赖关系。因此,它们可能并不总是适用于漏洞检测。按照约定,AST可以很容易地为任何代码片段构建,例如文件、函数或单个语句。
效率
与需要相对复杂和耗时的控制或依赖性分析的代码表示(例如CFG、PDG和代码小工具)相比,从代码构建AST要简单得多,重量轻,从而有助于提高整个检测方法的效率。
语义综合性
那些人工 ...