微软运用AI精准标记出软件重大安全性bug

微软发布了一个人工智能系统,可用少量的信息精准分类bug,该系统能够以99%精确度区分安全性和非安全性软件bug,并以97%精确度识别出高优先度安全性错误,且还能够容忍资料存在噪声。这个系统已经发布成论文,微软提到,接下来他们会在GitHub上开源该系统,并提供范例模型以及相关资源。

应用程序总是存在不少bug,因此开发人员需要筛选这些待处理的功能以及错误修正,优先处理紧急的项目,虽然这些过程有一些自动化工具帮助,但是微软提到,工程师还是经常浪耗时间在处理误报的bug回应上,反而遗漏真正重要的安全漏洞。

微软总共有4.7万名开发人员,当在正进行的项目有100多个,每个月会产生将近3万多个错误,为了更精准地解决重要的bug,省下浪费的时间,微软要用机器学习技术,提升识别与分类安全漏洞的能力。从2001年来,微软已经收集了1,300万个工作项目以及bug,这些资料可被用来训练机器学习模型,识别与分类bug。

过去也有类似的研究,利用机器学习来识别安全漏洞,但都是基于所有bug报告信息,即使能用于机器学习模型训练和评分工作的假设上,但是这样的假设无疑与现实情况不符,在部分情况下,并不会有完整的bug报告可以使用,像是错误报告可能包含密码、个人身份信息或是其他敏感资料,微软提到,他们研究的其中一个重点,是希望可以使用较少的信息,就能良好地识别安全性bug。

另外,bug存储库中的条目,通常存在标签错误的情况,安全性问题被归类在非安全性问题中,而非安全性问题也可能被标记为安全性问题,原因很多,可能是开发团队缺乏信息安全专业知识,或是问题有其模糊的地方,可能该非安全性错误没有直接的安全性问题,但在间接操作下,可能存在安全隐忧。

标签错误还衍生出了一个严重的问题,安全专家必需要耗耗时间手动检查错误资料,这个过程花费的成本很大,因此微软提到,在实例自动分类功能上,他们必需要解决用在机器学习模型的资料集,存在噪声的这个问题,除了要了解噪声影响分类器的情况,也要让模型即便在资料集被噪声污染下,仍可以强健地运行。

微软利用了许多安全性与非安全性错误的资料集来训练模型,让模型可对未预先分类的bug回应进行分类,这些资料由安全专家审查,确保训练资料的品质。这个机器学习模型具有两个步骤,第一个步骤,模型会分类出安全性与非安全性错误,第二步则是对安全性漏洞进行关键、重要和低影响排名。

微软在这个研究中,证明了即便只利用bug报告的标题信息,也能够精确地识别安全性错误报告,微软提到,还没有类似的研究存在,过去的研究都需要使用完整的bug报告,这对于具隐私信息的bug回应特别有用。微软这个bug分类模型能以99%的精确度,正确分类安全性漏洞与非安全性漏洞,并且能以97%的精确度,将安全性bug识别为重大与非重大安全性问题。