论文代码 https://github.com/petablox/arbitrar
摘要
软件api表现出丰富的多样性和复杂性,这不仅使它们成为编程错误的常见来源,而且阻碍了程序分析工具对它们进行检查。这类工具要么要求精确的API规范,这需要程序分析专家,要么假定正确的API用法遵循简单的习惯用法,可以从代码中自动挖掘,但准确性较差。我们提出了一种新的方法,允许普通程序员发现API的误用。我们的方法与用户交互,对每个目标API方法的有效和无效用法进行分类。它通过使用一种主动学习算法,根据API的无效可能性对其使用进行排序,从而最小化用户负担。我们在一个名为ARBITRAR的C/ c++程序工具中实现了我们的方法,并将其应用于21个大型实际程序(包括OpenSSL和Linux Kernel)中检查18种API方法的使用情况。在每一种API方法的平均3轮用户交互中,ARBITRAR发现了40个新的漏洞,其中18个被接受了补丁。此外,ARBITRAR可以在一个包含92个bug的基准套件中找到由先进工具APISAN报告的所有已知bug,其假阳性率仅为51.5%,而APISAN的假阳性率为87.9%。
问题
用于检查API误用的工具要么要求精确的API规范,这需要程序分析专家,要么假定正确的API用法遵循简单的习惯用法,可以从代码中自动挖掘,但准确性较差。
本文工作
在本文中,我们提出了一个基于**最大偏差核密度估计(MD-KDE)**的交互式工具ARBITRAR,该工具用于发现API误用错误,这是一种新的主动学习方法。与现有方法不同?