VELVET:一种自动定位脆弱语句的新型集成学习方法
软件工程
2022-01-14 v2 机器学习
摘要
在源代码中自动定位脆弱语句对于保障软件安全并减轻开发人员调试负担至关重要。在当今软件生态系统中这一点更为重要,因为脆弱代码可以在 GitHub 等软件仓库内部及之间轻易且无意地流动。在数百万行代码之中,传统静态与动态方法难以扩展。尽管现有的基于机器学习的方法在此场景下看似前景良好,多数工作以较粗粒度——方法或文件级——检测脆弱代码。因此,开发人员仍需检查大量代码以定位需修复的脆弱语句。本文提出 VELVET,一种用于定位脆弱语句的新型集成学习方法。我们的模型结合基于图与基于序列的神经网络,成功捕获程序图的局部与全局上下文,并有效理解代码语义与脆弱模式。为研究 VELVET 的有效性,我们使用了一个现成的合成数据集与一个近期发布的真实世界数据集。在静态分析设定中(脆弱函数未预先检测),VELVET 在真实世界数据上比基线静态分析器性能好 4.5 倍。对于孤立的脆弱定位任务(假设函数脆弱性已知而具体脆弱语句未知),我们将 VELVET 与若干同样关注代码局部与全局上下文的神经网络比较。VELVET 在合成数据与真实世界数据上分别取得 99.6% 与 43.6% 的 top-1 准确率,优于基线深度学习模型 5.3-29.0%。
引用
@article{arxiv.2112.10893,
title = {VELVET: a noVel Ensemble Learning approach to automatically locate VulnErable sTatements},
author = {Yangruibo Ding and Sahil Suneja and Yunhui Zheng and Jim Laredo and Alessandro Morari and Gail Kaiser and Baishakhi Ray},
journal= {arXiv preprint arXiv:2112.10893},
year = {2022}
}
备注
Camera Ready for Research Track of 29th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER 2022)