[论文解读] Code2Image: Intelligent Code Analysis by Computer Vision Techniques and Application to Vulnerability Prediction
本文提出 Code2Image,一种将源代码抽象语法树(AST)转换为视觉表示的新方法,可直接输入深度学习模型。通过在这些代码图像上应用计算机视觉技术,该方法实现了自动特征提取,并在漏洞预测任务中优于当前最先进方法,尤其在数据不平衡的数据集上表现更优。
Intelligent code analysis has received increasing attention in parallel with the remarkable advances in the field of machine learning (ML) in recent years. A major challenge in leveraging ML for this purpose is to represent source code in a useful form that ML algorithms can accept as input. In this study, we present a novel method to represent source code as image while preserving semantic and syntactic properties, which paves the way for leveraging computer vision techniques to use for code analysis. Indeed the method makes it possible to directly enter the resulting image representation of source codes into deep learning (DL) algorithms as input without requiring any further data pre-processing or feature extraction step. We demonstrate feasibility and effectiveness of our method by realizing a vulnerability prediction use case over a public dataset containing a large number of real-world source code samples with performance evaluation in comparison to the state-of-art solutions. Our implementation is publicly available.
研究动机与目标
- 为解决将源代码表示为适合深度学习模型的形式,同时避免大量特征工程的问题。
- 通过利用 AST 保留源代码的语法和语义信息。
- 通过基于图像的表示方式,使基于计算机视觉的深度学习模型可直接应用于源代码分析。
- 在真实世界的漏洞预测用例中评估所提方法的有效性。
- 在公开的真实代码样本数据集上,将 Code2Image 的性能与当前最先进方法进行比较。
提出的方法
- 该方法将源代码的抽象语法树(AST)转换为保留结构和语义关系的视觉图像表示。
- AST 以树状图形式渲染,边不交叉,以保持可读性和结构保真度,确保父子节点关系清晰可视化。
- 生成的图像在保持 AST 拓扑特性的前提下进行尺寸和紧凑性优化,以支持高效的深度学习推理。
- 图像表示可直接输入卷积神经网络(CNN),无需额外的特征提取或预处理步骤。
- 为每种漏洞类型单独训练一个深度学习模型,以最小化验证损失,实现按类别针对性优化。
- 该方法利用计算机视觉模型在图像分类任务中的成功经验,用于代码分析,特别是漏洞检测。
实验结果
研究问题
- RQ1能否将基于 AST 的代码表示有效转换为视觉格式,以在深度学习中保留语义和语法信息?
- RQ2在基于图像的代码表示下,计算机视觉技术在源代码分析中的适用程度如何?
- RQ3所提出的 Code2Image 方法在漏洞预测中的性能与当前最先进方法相比如何?
- RQ4使用完整 AST 的图像形式是否在漏洞检测任务中优于部分 AST 表示?
- RQ5该方法在高度不平衡的漏洞类别(如 CWE-469 在测试集中仅有 32 个正样本)中的表现如何?
主要发现
- 对于 CWE-119,Code2Image 的 F1 得分为 0.528,优于 Ast2vec 在同一漏洞类别中的最高 F1 得分 0.424。
- 在最不平衡的类别 CWE-469(正样本占比 0.56%)中,Code2Image 的 F1 得分为 0.140,高于 Ast2vec 的 0.082,表明在罕见漏洞上表现更优。
- 在 CWE-476 上,Code2Image 的 F1 得分为 0.617,略高于 Ast2vec 的 0.599,表明在中等平衡类别中也表现出色。
- 在 CWE-others 上,Code2Image 的 F1 得分为 0.335,显著优于 Ast2vec 的 0.283,表明在多种漏洞类型中均保持一致的性能提升。
- 每段代码样本的平均推理时间为 20.8 毫秒,表明其在真实世界静态分析流水线中具备高效的部署潜力。
- 该方法的优越性归因于使用完整 AST 和按漏洞类型定制的模型专精,减少了信息损失并提升了优化效果。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。