挑战与问题

挑战与问题
foresta.yang已经开发了各种方法来检测漏洞(Cui et al.,2022),包括静态、动态、一致性分析和模糊方法。正如我们将在相关工作部分进一步深入研究的那样,TrVD属于静态检测系列中基于学习的范式。在这种范式中,漏洞检测任务被公式化为一个分类问题。具体来说,在训练阶段,分类器 通过代码表示构建、特征提取和模型训练,从一组带有基本事实标签的训练样本中学习。在检测阶段,当出现一段可能看不见的源代码时, 执行代码表示构造和特征提取的相同过程。经过训练的分类器预测漏洞的存在,或者进一步精确定位特定的漏洞类型。
可用性
其他被广泛采用的代码表示包括CFG、PDG和各种基于图形的变体。这些表示更明确地描述了代码元素之间的控制或数据依赖关系,然而,当面对不可执行或不完整的代码片段时,很难精确推导出这些依赖关系。因此,它们可能并不总是适用于漏洞检测。按照约定,AST可以很容易地为任何代码片段构建,例如文件、函数或单个语句。
效率
与需要相对复杂和耗时的控制或依赖性分析的代码表示(例如CFG、PDG和代码小工具)相比,从代码构建AST要简单得多,重量轻,从而有助于提高整个检测方法的效率。
语义综合性
那些人工创建的代码表示(例如,PDG和XFG)倾向于强调代码的特定方面,例如控制流或数据依赖关系。然而,它们经常在转换过程中丢失一些重要信息,这会导致语义损失,尤其是在表示不完整的代码片段时。不同的是,AST使源代码具有高度结构化的性质,其中关于语句和表达式的底层语法是直接可用的;也就是说,AST提供了更全面、更丰富、更精确的代码语义,使TrVD不遗漏任何可疑的漏洞含义,提高了检测的准确性。
[1]Zhenzhou T ,Binhui T ,Jiajun L , et al.Enhancing vulnerability detection via AST decomposition and neural sub-tree encoding[J].Expert Systems With Applications,2024,238(PB):