0
微软声称已经开发出一种系统,能够在99%的时间里正确区分安全漏洞和非安全漏洞,并且能够在97%的时间里准确识别出关键的、高优先级的安全漏洞。
在接下来的几个月里,它计划在GitHub上开源这个技术,以及一些示例模型和其他资源。
这项工作表明,这样一个系统可以有效帮助人类的技术专家。该系统通过AzureDevOps和GitHub知识库,对微软47000名开发人员的1300万个工作项和bug数据集进行训练。
据估计,开发人员每1000行代码就会产生70个bug,而修复一个bug所需的时间是编写一行代码所需时间的30倍;在美国,每年有1130亿美元用于发现和修复这些bug。
在构建该模型的过程中,微软表示,安全专家批准了培训数据,并使用统计抽样为这些专家提供可管理的数据进行审查。
然后,这些数据被编码成“特征向量”的形式,微软的研究人员通过‘两步走“设计好系统。首先,该模型学会了对安全性和非安全性bug进行分类,然后它学会了对影响安全性bug的重要程度进行分级。
微软的模型利用了两种技术来进行错误预测。
第一种技术,是术语频率逆文档频率算法(TF-IDF),这是一种信息检索方法,它根据单词在文档中出现的次数来赋予其重要性,并检查该单词在整个标题集合中的相关性。(微软称,它的漏洞标题通常很短,只有10个字左右。)
第二种技术,是一种逻辑回归模型。它使用逻辑函数来建模预测某类或某件事件存在的概率。
微软表示,该模型已在内部部署到生产环境中,并将继续使用安全专家批准的数据进行再培训,这些专家负责监控软件开发过程中产生的bug数量。
每天,软件开发人员都盯着一长串需要解决的代码和bug。
“安全专家试图通过使用自动化工具优先解决安全漏洞,但工程师们往往把时间浪费在错误的地方,使得他们错过了发现重要的安全漏洞。”微软高级安全项目经理斯科特·克里斯琴森和微软数据和应用科学家佩雷拉在一篇博客文章中写道。“我们发现,通过将机器学习模型与安全专家配对,可以显著提高安全漏洞的识别和分类水平。”
微软并不是唯一一家使用人工智能清除软件漏洞的科技巨头。
亚马逊的CodeGuru服务在一定程度上是针对代码审查和亚马逊内部开发的应用开发的,它能发现资源泄漏和CPU周期浪费等问题。
至于Facebook,它开发了一个工具叫SapFix。在把生成的代码发送给人类工程师批准之前,它会修复好bug。(雷锋网,公众号:雷锋网)
雷锋网编译,来源:VentureBeat:https://venturebeat.com/2020/04/16/ai-spots-critical-microsoft-security-bugs-97-of-the-time/
雷峰网原创文章,未经授权禁止转载。详情见转载须知。