HEAPHOPPER: Bringing Bounded Model Checking to Heap Implementation Security
Abstract
堆元数据攻击已成为攻击者利用内存损坏漏洞的主要方式之一。虽然堆实现开发人员已经引入了缓解来防止和检测损坏,但攻击者仍然可以解决这些问题。在某种程度上,这是因为这些缓解是在没有原则基础的情况下创建和评估的,因此在许多情况下会导致堆元数据防御的复杂,低效和无效尝试。在本文中,我们提出了HEAPHOPPER,一种基于模型检查和符号执行的自动化方法,用于分析存在内存损坏时堆实现的可利用性。使用HEAPHOPPER,我们能够对不同的,广泛使用的堆实现进行系统分析,找到它们中令人惊讶的弱点。例如,我们的结果显示了ptmalloc中新引入的缓存机制(大多数Linux发行版使用的堆分配器实现)如何显著削弱其安全性。此外,HEAPHOPPER指导我们实施和评估对ptmalloc安全性的改进,用有效防御替代最近无效的缓解特定形式的堆元数据损坏的尝试。