Automatically locating vulnerable statements in source code is crucial to assure software security and alleviate developers' debugging efforts. This becomes even more important in today's software ecosystem, where vulnerable code can flow easily and unwittingly within and across software repositories like GitHub. Across such millions of lines of code, traditional static and dynamic approaches struggle to scale. Although existing machine-learning-based approaches look promising in such a setting, most work detects vulnerable code at a higher granularity -- at the method or file level. Thus, developers still need to inspect a significant amount of code to locate the vulnerable statement(s) that need to be fixed. This paper presents VELVET, a novel ensemble learning approach to locate vulnerable statements. Our model combines graph-based and sequence-based neural networks to successfully capture the local and global context of a program graph and effectively understand code semantics and vulnerable patterns. To study VELVET's effectiveness, we use an off-the-shelf synthetic dataset and a recently published real-world dataset. In the static analysis setting, where vulnerable functions are not detected in advance, VELVET achieves 4.5x better performance than the baseline static analyzers on the real-world data. For the isolated vulnerability localization task, where we assume the vulnerability of a function is known while the specific vulnerable statement is unknown, we compare VELVET with several neural networks that also attend to local and global context of code. VELVET achieves 99.6% and 43.6% top-1 accuracy over synthetic data and real-world data, respectively, outperforming the baseline deep-learning models by 5.3-29.0%.


翻译:在源代码中自动定位脆弱的语句对于确保软件安全并减轻开发者的调试努力至关重要。 在当今的软件生态系统中,这一点变得更加重要,因为脆弱的代码可以在GitHub等软件库内部和相互之间容易和不知情地流动。在成百万条代码中,传统的静态和动态方法挣扎着规模。尽管基于机器学习的现有方法在这种环境中看起来很有希望,但大多数工作在方法或文件层面在更高的颗粒度上检测到脆弱的代码。因此,开发者仍然需要检查大量代码,以确定需要固定的脆弱语句。在今天的软件生态系统中,脆弱的代码可以很容易和不知情地在诸如GitHub等软件库中流动。我们模型将基于图表和基于序列的神经网络结合起来,以便成功地捕捉到一个程序图的当地和全球背景,并有效地理解代码的语系和脆弱模式。我们使用一个现成的合成合成数据集,以及最近出版的一个真实世界数据集。在静态分析中,脆弱语系的功能不是在预先检测的 VELET,VLeveET最高数据运行状态,而我们使用一个已知的精确性数据功能则是在特定的基值上。

0
下载
关闭预览

相关内容

集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。
【2020新书】图机器学习,Graph-Powered Machine Learning
专知会员服务
339+阅读 · 2020年1月27日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
已删除
AI掘金志
7+阅读 · 2019年7月8日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
27+阅读 · 2019年5月18日
Call for Participation: Shared Tasks in NLPCC 2019
中国计算机学会
5+阅读 · 2019年3月22日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
Arxiv
0+阅读 · 2022年2月23日
Arxiv
10+阅读 · 2020年4月5日
Deflecting Adversarial Attacks
Arxiv
8+阅读 · 2020年2月18日
Nocaps: novel object captioning at scale
Arxiv
6+阅读 · 2018年12月20日
Arxiv
4+阅读 · 2015年3月20日
VIP会员
相关VIP内容
【2020新书】图机器学习,Graph-Powered Machine Learning
专知会员服务
339+阅读 · 2020年1月27日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
相关资讯
已删除
AI掘金志
7+阅读 · 2019年7月8日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
27+阅读 · 2019年5月18日
Call for Participation: Shared Tasks in NLPCC 2019
中国计算机学会
5+阅读 · 2019年3月22日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
相关论文
Top
微信扫码咨询专知VIP会员