[论文解读] CAn't Touch This: Practical and Generic Software-only Defenses Against Rowhammer Attacks
本文提出 B-CATT 和 G-CATT 两种实用的纯软件防护机制,用于抵御行翻转(rowhammer)攻击。B-CATT 通过黑名单标记故障内存页来防止脆弱 DRAM 中的位翻转;G-CATT 通过隔离内存域实现相同目标。两种防护机制均以极低的性能开销完全阻止所有已知的行翻转攻击,且无误报,可立即保护遗留的 x86 和 ARM 系统。
Rowhammer is a hardware bug that can be exploited to implement privilege escalation and remote code execution attacks. Previous proposals on rowhammer mitigation either require hardware changes or follow heuristic-based approaches (based on CPU performance counters). To date, there exists no instant protection against rowhammer attacks on legacy systems. In this paper, we present the design and implementation of two practical and efficient software-only defenses against rowhammer attacks. Our defenses prevent the attacker from leveraging rowhammer to corrupt physically co-located data in memory that is owned by a different system entity. Our first defense, B-CATT, extends the system bootloader to disable vulnerable physical memory. B-CATT is highly practical, does not require changes to the operating system, and can be deployed on virtually all x86-based systems. While B-CATT is able to stop all known rowhammer attacks, it does not yet tackle the fundamental problem of missing memory isolation in physical memory. To address this problem, we introduce our second defense G-CATT, a generic solution that extends the physical memory allocator of the OS to physically isolate the memory of different system entities (e.g., kernel and user space). As proof of concept, we implemented B-CATT on x86, and our generic defense, G-CATT, on x86 and ARM to mitigate rowhammer-based kernel exploits. Our extensive evaluation shows that both mitigation schemes (i) can stop available real- world rowhammer attacks, (ii) impose virtually no run-time overhead for common user and kernel benchmarks as well as commonly used applications, and (iii) do not affect the stability of the overall system.
研究动机与目标
- 解决遗留系统中缺乏实用、纯软件行翻转防护机制的问题。
- 消除先前基于启发式方法中存在的误报和高运行时开销问题。
- 提供一种确定性、可部署的解决方案,完全阻止所有已知的行翻转攻击,且无需操作系统的硬件修改。
- 通过操作系统的内存分配扩展,实现系统实体(如内核与用户空间)之间的内存隔离。
- 证明仅通过软件即可实现行翻转防护,即使在无性能计数器或 ECC 内存的系统上亦可实现。
提出的方法
- B-CATT 扩展系统引导加载程序,在启动时扫描物理内存,将脆弱内存页列入黑名单,防止其被使用。
- G-CATT 修改操作系统的物理内存分配器,将内存页分配给隔离的安全域,使行翻转引起的位翻转被限制在攻击者控制的内存区域内。
- 两种防护机制均在 x86 和 ARM 平台上实现,其中 B-CATT 针对遗留系统,G-CATT 提供一种通用且可扩展的解决方案。
- B-CATT 采用内存扫描与页面黑名单机制,无需特殊 CPU 功能,确保广泛的兼容性。
- G-CATT 确保位翻转仅影响同一安全域内的内存,使跨信任边界的攻击无法实现。
- 两种防护机制均通过标准基准测试和真实世界行翻转攻击进行评估,性能在常规工作负载下进行测量。
实验结果
研究问题
- RQ1是否能够仅通过纯软件机制阻止所有已知的行翻转攻击,且无需硬件修改?
- RQ2是否可能在保证防护行翻转位翻转的同时,实现近乎零的运行时开销?
- RQ3是否能够在操作系统层面强制实施内存隔离,以将行翻转引起的位翻转限制在攻击者控制的内存区域?
- RQ4基于引导加载程序的内存黑名单机制是否为遗留系统提供了一种实用且可扩展的解决方案?
- RQ5是否能够通过通用的操作系统内存分配器扩展,有效缓解行翻转攻击,而无需依赖性能计数器或启发式方法?
主要发现
- B-CATT 通过在启动时黑名单标记脆弱的物理内存页,成功阻止了所有已知的行翻转攻击,且对系统稳定性无任何影响。
- B-CATT 的最坏情况运行时开销仅为 0.29%,显著低于先前基于启发式的防护机制(如 ANVIL)的 8% 开销。
- G-CATT 有效将行翻转引起的位翻转限制在攻击者控制的内存域内,防止攻击者利用共置的可信内存页。
- 两种防护机制在 x86 和 ARM 平台上均可正常运行,证明了其跨架构兼容性。
- 评估结果确认,两种防护机制均未引入误报,而基于启发式的方案(如 ANVIL)则存在此问题。
- 所提出的防护机制可部署于几乎所有 x86 系统,无需操作系统的硬件修改,可立即为遗留系统提供保护。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。