Skip to main content
QUICK REVIEW

[论文解读] On using distributed representations of source code for the detection of C security vulnerabilities

David Coimbra, Sofia Reis|arXiv (Cornell University)|Jun 1, 2021
Advanced Malware Detection Techniques参考文献 25被引用 15
一句话总结

本文评估了 Code2vec 模型,该模型利用从抽象语法树中提取的路径-上下文信息,学习 C 源代码的分布式表示,以检测安全漏洞。在 CodeXGLUE 基准上进行训练后,该模型取得了 61.43% 的准确率,与 RoBERTa 相当,但计算成本显著更低,因此适用于资源受限的 CI 管道。

ABSTRACT

This paper presents an evaluation of the code representation model Code2vec when trained on the task of detecting security vulnerabilities in C source code. We leverage the open-source library astminer to extract path-contexts from the abstract syntax trees of a corpus of labeled C functions. Code2vec is trained on the resulting path-contexts with the task of classifying a function as vulnerable or non-vulnerable. Using the CodeXGLUE benchmark, we show that the accuracy of Code2vec for this task is comparable to simple transformer-based methods such as pre-trained RoBERTa, and outperforms more naive NLP-based methods. We achieved an accuracy of 61.43% while maintaining low computational requirements relative to larger models.

研究动机与目标

  • 评估 Code2vec 在检测 C 源代码安全漏洞方面的有效性。
  • 将 Code2vec 的性能与计算效率与基于 Transformer 的模型(如 RoBERTa 和 CodeBERT)进行比较。
  • 评估基于路径-上下文的代码表示是否能在计算开销极低的情况下实现具有竞争力的准确率。
  • 提供一个可复现的实现和训练流程,用于使用 Code2vec 进行漏洞检测。
  • 证明较小的模型(如 Code2vec)在大型模型不可行的 CI 环境中可作为实用的替代方案。

提出的方法

  • 使用 astminer 库从 C 函数的抽象语法树(AST)中提取路径-上下文。
  • 通过 Code2vec 的基于注意力的前馈网络,从 AST 路径-上下文学习分布式嵌入,构建代码表示。
  • 在 CodeXGLUE 缺陷检测基准的 C 函数标注语料上微调 Code2vec。
  • 使用二元交叉熵损失进行模型训练,以将函数分类为有漏洞或无漏洞。
  • 配置超参数,包括批量大小(1024)、初始学习率,以及最大路径-上下文长度和宽度,以实现最佳性能。
  • 使用标准指标(如准确率)评估模型性能,并与 RoBERTa 和其他 NLP 基线模型进行比较。

实验结果

研究问题

  • RQ1基于 AST 路径-上下文的非 Transformer 模型 Code2vec 是否能在检测 C 语言安全漏洞方面实现具有竞争力的准确率?
  • RQ2Code2vec 在漏洞检测中的表现与 RoBERTa 和 CodeBERT 等预训练 Transformer 模型相比如何?
  • RQ3与更大模型相比,训练 Code2vec 的计算成本如何?其是否适合集成到 CI 管道中?
  • RQ4基于 AST 的路径-上下文是否能捕获足够多的语义和语法信息以支持漏洞检测?
  • RQ5Code2vec 是否能有效微调一个 C 函数的标注数据集,以在极低资源下实现最先进性能?

主要发现

  • 在 CodeXGLUE C 语言缺陷检测基准上,Code2vec 取得了 61.43% 的准确率,优于朴素的 NLP 方法。
  • 尽管未在源代码上进行预训练,Code2vec 的性能与 RoBERTa(一种简单的微调 Transformer 模型)相当。
  • Code2vec 在消费级 GPU 上仅需约 5 分钟训练时间,且在 1024 个样本的批量下未耗尽内存。
  • 该模型表现出极低的计算资源消耗,因此适用于资源受限环境(如 CI 管道)的部署。
  • Code2vec 被更强大的模型(如 CodeBERT 和 Devign)超越,这些模型利用了更深层次的语法和语义特征。
  • 结果表明,Code2vec 在性能与效率之间提供了出色的权衡,尤其在模型大小和推理成本至关重要的场景中。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。