您的位置: 首页 >互联网 >

使用机器学习来检测软件漏洞

2019-06-13 16:21:36 编辑: 来源:
导读 研发公司Draper和波士顿大学的一组研究人员利用机器学习算法开发了一个新的大规模漏洞检测系统,可以帮助您更快,更有效地发现软件漏洞。黑

研发公司Draper和波士顿大学的一组研究人员利用机器学习算法开发了一个新的大规模漏洞检测系统,可以帮助您更快,更有效地发现软件漏洞。

黑客和恶意用户不断提出破坏IT系统和应用程序的新方法,通常是利用软件安全漏洞。软件漏洞是由程序员制作的一个小错误,他们开发了一个可以快速传播的系统,特别是通过开源软件或通过代码重用和调整。

每年都有数千个这些漏洞被公开报告给常见漏洞和披露数据库(CVE),而其他许多漏洞则由开发人员在内部发现和修补。如果没有充分解决这些漏洞,这些漏洞可能被攻击者利用,通常具有破坏性影响,正如许多最近引人注目的漏洞中所证明的那样,例如Heartbleed漏洞和WannaCry ramsomware cryptoworm。

通常,用于分析程序的现有工具只能检测基于预定义规则的有限数量的潜在错误。但是,开源存储库的广泛使用为开发可能揭示代码漏洞模式的技术开辟了新的可能性。

来自Draper和Boston的研究人员开发了一种新的漏洞检测工具,该工具使用机器学习来自动检测C / C ++ 源代码中的漏洞,这已经显示出有希望的结果。

该团队编译了一个包含数百万个开源函数的大型数据集,并使用三个静态(运行前)分析工具(即Clang,Cppcheck和Flawfinder)对其进行标记,这些工具旨在识别潜在的漏洞利用。他们的数据集包括从SATEIV Juliet Test Suite,Debian Linux发行版和GitHub上的公共Git存储库中提取的数百万个C和C ++代码的功能级示例。

“使用这些数据集,我们开发了一种基于深度特征表示学习的快速且可扩展的漏洞检测工具,可以直接解释词汇源代码,”研究人员在他们的论文中写道。

由于编程语言在某些方面类似于人类语言,研究人员设计了一种漏洞检测技术,该技术使用自然语言处理(NLP),这是一种允许计算机理解和解释人类语言的AI策略。

“我们利用类似于用于句子情感分类的特征提取方法,使用卷积神经网络(CNN)和递归神经网络(RNN)进行功能级源漏洞分类,”研究人员在他们的论文中解释道。

他们将NLP与随机森林(RM)结合起来; 一种强大的算法,可以从训练数据集的随机选择的子集创建决策树集合,然后将它们合并在一起,通常可以实现更准确的预测。

研究人员在真实软件包和NIST STATE IV基准数据集上测试了他们的工具。

“我们的研究结果表明,对源代码进行深入的特征表示学习是一种有前途的自动化软件漏洞检测方法,”他们写道。“我们应用了各种受自然语言领域分类问题启发的ML技术,根据我们的应用对其进行了微调,并使用通过卷积神经网络学习的特征并使用集合树算法进行分类,获得了最佳的整体结果。”

到目前为止,他们的工作主要集中在C / C ++代码上,但他们的方法也可以应用于任何其他编程语言。他们特别选择创建一个自定义的C / C ++词法分析器,因为这将产生一个简单而通用的函数源代码表示,这是机器学习培训的理想选择。


免责声明:本文由用户上传,如有侵权请联系删除!

精彩推荐

图文推荐

点击排行

2016-2022 All Rights Reserved.平安财经网.复制必究 联系QQ280 715 8082   备案号:闽ICP备19027007号-6

本站除标明“本站原创”外所有信息均转载自互联网 版权归原作者所有。