S2malloc:用于释放后使用保护及更多功能的统计安全内存分配器
密码学与安全
2024-05-31 v2
摘要
针对堆内存的攻击(包括内存溢出、双重与无效释放、释放后使用(UAF)以及各种堆喷射技术)日益增多。现有的基于熵的安全内存分配器针对几乎所有这些攻击向量提供了统计防御。尽管它们声称能防御 UAF 攻击,但其设计并非为检测(失败的)攻击尝试而定制。因此,为了击败这种基于熵的保护,攻击者只需反复发起相同的攻击,并可能利用堆喷射来进一步提高其成功机会。我们引入了 S2malloc,旨在增强 UAF 尝试检测,同时不损害其他安全保证或引入显著的性能开销。为了实现这一点,我们在安全分配器设计中使用了三种创新结构:用于检测 UAF 尝试的空闲块金丝雀(FBC),用于阻止攻击者准确覆盖受害者对象的块内随机偏移(RIO),以及用于妨碍攻击者根据地址估计块大小的随机袋布局(RBL)。我们表明: 针对目标为 64 字节对象的 UAF 利用尝试,通过为 RIO 偏移保留 25% 的对象大小,8 字节金丝雀在攻击者重用相同指针时提供 69% 的保护率,在攻击者不重用时提供 96% 的保护率,且对所有其他攻击提供同等或更高的安全保证; S2malloc 是实用的,在 PARSEC 上仅有 2.8% 的运行时开销,在 SPEC 上有 11.5% 的开销。与最先进的基于熵的分配器相比,S2malloc 在不产生额外性能开销的情况下改进了 UAF 保护。与缓解 UAF 的分配器相比,S2malloc 以极微小的保护失败概率换取了显著降低的开销。
引用
@article{arxiv.2402.01894,
title = {S2malloc: Statistically Secure Allocator for Use-After-Free Protection And More},
author = {Ruizhe Wang and Meng Xu and N. Asokan},
journal= {arXiv preprint arXiv:2402.01894},
year = {2024}
}
备注
Accepted at DIMVA 2024, this is the extended version