微软声称开发了一个系统,能够正确区分99%的安全和非安全软件错误,并且能够准确地识别平均97%的关键、高优先级安全错误。 在未来几个月中,它计划在GitHub上以及示例模型和其他资源上开源该方法。

这项工作表明,这样一个系统可以用来支持人类专家,该系统是在Micros of t存储在Azure DevOps和GitHub存储库的47000名开发人员的1300万个工作项目和bug的数据集上进行的培训。 Coralogix估计,开发人员每1,000行代码创建70个bug,修复一个bug的时间比编写一行代码的时间长30倍;在美国,每年$1,130亿美元用于识别和修复产品缺陷。

在构建模型的过程中,微软表示,安全专家批准了培训数据,并使用统计抽样为这些专家提供了可管理的数据供审查。 然后,数据被编码成一种称为特征向量的表示,微软的研究人员开始使用两步的过程来设计系统。 首先,该模型学会了对安全和非安全bug进行分类,然后学会了将严重性标签-关键、重要或低影响-应用于安全bug。

微软的模型利用了两种技术来进行bug预测。 第一种是术语频率逆文档频率算法(T F-ID F),这是一种信息检索方法,它根据一个单词在文档中出现的次数来分配它的重要性,并检查该单词在整个标题集合中的相关性。 (微软说,它的bug标题通常很短,包含大约10个单词。) 第二种技术-Logistic回归模型-使用Logistic函数对存在的某一类或事件的概率进行建模。

微软表示,该模型是在内部生产中部署的,并不断地通过安全专家批准的数据进行培训,这些专家监测软件开发中产生的错误数量。