摘要
我们提出了 BayeSmith,一个用于自动学习静态分析警报概率模型的通用框架。最近提出了几种概率推理技术,它们结合了对语义事实的外部反馈,从而减少了用户的警报检查负担。然而,这些方法基本上仅限于具有预定义结构的模型,因此无法学习或将有关分析的知识从一个程序转移到另一个程序。此外,这些概率模型通常会积极地从外部反馈中泛化并错误地抑制真正的错误。为了解决这些问题,我们提出了学习概率模型的结构和权重的 BayeSmith。BayeSmith 从一个初始模型和一组带有错误标签的训练程序开始,改进了模型,以根据反馈有效地优先考虑真正的错误。我们通过对一组 C 程序的两个静态分析来评估该方法。我们证明了学习模型显着提高了三个最先进的概率推理系统的性能。
引言
为了应对准确性和警报相关性的挑战,已经为静态程序分析器提出了各种概率程序推理机制。此类系统最初使用基础分析报告目标程序中的一组警报,并根据概率模型计算每个警报的概率。然后,他们通过结合来自各种来源(如用户 [23、39、50]、程序的旧版本 [15] 或动态分析结果 [5])对语义事实的外部反馈,对静态分析警报进行优先级排序。收到响应后,他们会根据反馈进行概括,并根据剩余警报与用户检查的警报的相关性确定其优先级。通过迅速将注意力集中在目标程序中的真正错误上,这些系统实现了静态分析器可用性的显着改进。
尽管他们在实验上取得了成功,但之前的大部分研究都集中在推理问题上,而不是学习上。现有的基于概率推理的方法(例如警报排名 [5,15,39])仅使用标准方法(例如期望最大化算法 [20])学习有限形式的可转移知识(例如将权重分配给基础概率模型)。然而,在我们的观察中,学习能力从根本上受限于概率模型的底层结构。