堆漏洞深入解析:House of Spirit与House of Lore

需积分: 0 1 下载量 166 浏览量 更新于2024-08-05 收藏 682KB PDF 举报
"这篇文档是关于堆漏洞分析的‘house系列’第一部分,主要讨论了House of Spirit和House of Lore两种技术。文章基于CentOS 6.10 32位系统,内核版本2.6.32,gcc 4.4.7,gdb 7.2和libc 2.12。作者提到了先前关于glibc 2.30内存管理的文章,详细阐述了smallbin分配和回收的机制,并解释了如何利用这些知识来理解House of Lore漏洞的原理。" 在堆漏洞研究中,House of Spirit和House of Lore是两个重要的概念。House of Spirit通常是指fastbin攻击,已经在之前的讲解中提到,因此这里不再赘述。主要关注的是House of Lore,这是一种利用smallbin分配策略的漏洞利用技术。 在glibc的内存管理中,smallbin用于处理大小介于fastbin和largebin之间的内存块。当申请一个smallbin大小的内存时,遵循先进先出(FIFO)原则,从对应链表的尾部取出chunk。但是,如果链表只有一个chunk,分配器不会分配,因为这可能导致空指针崩溃。chunk的bk指针用于smallbin的迭代,通过这个指针可以遍历链表。 内存回收时,如果chunk大小适合fastbin,它会被直接放入fastbin;否则,它会被放入unsortedbin。如果chunk与topchunk相邻,它们会合并。下次分配时,如果unsortedbin中的chunk满足需求,会直接分配,否则将chunk放入合适的bin,如smallbin。 House of Lore的漏洞利用策略涉及到篡改smallbin中chunk的bk指针,让它指向一个伪造的对象,以此影响内存分配过程。攻击者可以通过操纵这个指针,使分配器错误地认为smallbin中有可用的chunk,从而导致任意内存的读写,甚至代码执行。 了解这些机制对于安全研究人员来说至关重要,因为它们能帮助识别和修复潜在的堆溢出漏洞。同时,对于逆向工程师和软件开发者,熟悉这些内部工作原理有助于编写更安全的代码,防止这类攻击的发生。通过深入理解glibc的内存分配和回收机制,我们可以更好地预防和应对这类漏洞,提高系统的安全性。