摘要
抽象软件渗透到我们世界的方方面面,从我们的家到提供关键任务服务的基础设施。随着软件系统规模和复杂性的增加,软件安全缺陷的数量和复杂性也随之增加。对这些缺陷的分析最初是以手动方法进行的,但很快就发现,单靠手动方法是无法扩展的,而且必须使用工具来协助人类专家完成这项任务,从而产生了许多技术和方法,使脆弱性分析过程的某些方面实现自动化。最近,DARPA开展了Cyber Grand Challenge,这是一项自主脆弱性分析系统之间的竞争,旨在将工具辅助的以人为中心的范式推进到完全自动化领域,希望通过消除人为因素,分析能够达到新的高度。然而,当自主系统与人类专家进行对比时,很明显,某些任务尽管简单,但无法由自主系统执行,因为它们需要了解所分析应用程序的逻辑。基于这一观察,我们提出了脆弱性分析范式的转变,从工具辅助的以人为中心转向以人为辅助的以工具为中心。在此范例中,自动化系统协调漏洞分析过程,并利用人员(具有不同的专业水平)执行定义良好的子任务,其结果集成在分析中。因此,可以将分析扩展到更多的程序,同时优化昂贵人力资源的使用。在本文中,我们详细介绍了人工辅助的自动漏洞分析系统的设计,描述了其在参与Cyber Grand Challenge的开源自主漏洞分析系统上的实现,并评估和讨论非专家人工协助可为自动化分析方法提供的重大改进。
介绍
尽管这些系统取得了成功,但基本方法仍存在一些局限性。当一些CGC自治系统参与后续脆弱性分析竞赛(DEFCON CTF)时,这些限制变得明显,其中包括人类团队。自治系统无法轻松理解某些应用程序的基本逻辑,因此,它们无法轻松生