Microsoft声称已开发出一种系统,该系统可以在99%的时间内正确地区分安全性和非安全性软件错误,并且可以平均97%的时间准确地识别关键的高优先级安全性错误。在接下来的几个月中,它计划在GitHub上开源该方法,以及示例模型和其他资源。
这项工作表明,这样的系统可以用来支持人类专家,该系统接受了来自Microsoft的47,000个开发人员的1300万个工作项目和错误的数据集的培训,这些错误来自Microsoft的AzureDevOps和GitHub存储库。Coralogix估计,开发人员每千行代码创建70个错误,并且修复错误的时间比编写一行代码的时间长30倍;在美国,每年用于识别和修复产品缺陷的费用为1,130亿美元。
微软表示,在设计模型的过程中,安全专家批准了培训数据,并使用统计抽样为这些专家提供了可管理的大量数据以供审核。然后,将数据编码为称为特征向量的表示形式,Microsoft研究人员着手使用两步过程设计系统。首先,该模型学会了对安全和非安全性漏洞进行分类,然后学习了将严重性标签(关键,重要或影响较小)应用于安全性漏洞。
微软的模型利用两种技术进行错误预测。第一个是术语频率逆文档频率算法(TF-IDF),这是一种信息检索方法,它根据单词在文档中出现的次数为单词赋予重要性,并检查单词在整个标题集中的相关性。(微软表示,其错误标题通常很短,大约包含10个单词。)第二种技术(逻辑回归模型)使用逻辑函数对特定类或事件存在的概率进行建模。
微软表示,该模型是内部部署在生产中的,并且会不断接受安全专家批准的数据进行再培训,这些专家监视软件开发中产生的错误数量。