[论文解读] Rowhammer.Js: A Remote Software-Induced Fault Attack In Javascript
Rowhammer.js 是首个通过 JavaScript 实现的远程、软件诱导的硬件故障攻击,利用快速缓存驱逐技术在无需特权指令的情况下触发 Rowhammer 位翻转。该攻击可通过网站实现对易受攻击系统的远程权限提升,绕过传统攻击前提条件,并使现有防护措施失效。
A fundamental assumption in software security is that a memory location can only be modified by processes that may write to this memory location. However, a recent study has shown that parasitic effects in DRAM can change the content of a memory cell without accessing it, but by accessing other memory locations in a high frequency. This so-called Rowhammer bug occurs in most of today's memory modules and has fatal consequences for the security of all affected systems, e.g., privilege escalation attacks. All studies and attacks related to Rowhammer so far rely on the availability of a cache flush instruction in order to cause accesses to DRAM modules at a sufficiently high frequency. We overcome this limitation by defeating complex cache replacement policies. We show that caches can be forced into fast cache eviction to trigger the Rowhammer bug with only regular memory accesses. This allows to trigger the Rowhammer bug in highly restricted and even scripting environments. We demonstrate a fully automated attack that requires nothing but a website with JavaScript to trigger faults on remote hardware. Thereby we can gain unrestricted access to systems of website visitors. We show that the attack works on off-the-shelf systems. Existing countermeasures fail to protect against this new Rowhammer attack.
研究动机与目标
- 展示仅使用 JavaScript 即可在远程环境中触发 Rowhammer 故障,而无需本机代码或特权指令。
- 通过开发适用于现代 CPU 复杂替换策略的通用缓存驱逐策略,克服对缓存清除指令(如 clflush)的依赖。
- 实现在沙箱环境(如网页浏览器)中对 Rowhammer 的远程利用,其中直接内存访问受到限制。
- 评估该攻击在包括 DDR3 和 DDR4 内存模块在内的多种现代硬件平台上的可行性与有效性。
- 揭示现有软件与硬件防护措施在应对这种新型远程、浏览器端 Rowhammer 攻击时的局限性。
提出的方法
- 利用分配在大页上的大数组,通过操作系统的内存分配启发式方法推断物理内存布局并获取物理地址,实现在 JavaScript 中的物理地址获取。
- 开发了一种新颖的通用方法,用于探索缓存驱逐策略的参数空间,识别出在现代英特尔 CPU 上实现高驱逐率与低延迟的最优配置。
- 采用两阶段在线攻击策略,动态适应未知的硬件配置,确保在多种系统上保持一致的性能表现。
- 通过高频内存访问替代 clflush 指令,实现对缓存行的驱逐,从而在纯 JavaScript 环境中实现 Rowhammer 利用。
- 使用市售硬件在多个平台(从 Sandy Bridge 到 Skylake)上验证了攻击,确认在易受攻击的 DRAM 模块上可稳定诱导故障。
- 集成现有利用原 primitive(如页表操作)在检测到位翻转后实现远程代码执行,完成完整的攻击链。
实验结果
研究问题
- RQ1是否可以在不使用特权指令或直接内存访问的情况下,在 JavaScript 环境中可靠地触发 Rowhammer 位翻转?
- RQ2通用缓存驱逐策略在克服近期英特尔 CPU 上复杂且未公开的缓存替换策略方面效果如何?
- RQ3在 JavaScript 中,通过操作系统级内存分配模式,能在多大程度上推断出物理内存地址?
- RQ4通过网站实现完全自动化、远程的 Rowhammer 攻击在多种现代硬件平台上的可行性与可扩展性如何?
- RQ5为何现有软件与硬件防护措施无法抵御这种远程、基于 JavaScript 的 Rowhammer 攻击?
主要发现
- Rowhammer.js 在所有测试的现代浏览器(Firefox 和 Chrome)中成功触发了 JavaScript 环境下的位翻转,无需特权指令或直接内存访问。
- 该攻击在 85% 的测试 DDR3 模块上实现了高故障率,并在 DDR4 模块上验证了可利用性,证实了广泛存在的漏洞。
- 所提出的缓存驱逐策略在所有近期英特尔架构上均优于先前方法,实现了高驱逐率且延迟极低。
- 该攻击完全自动化且为远程攻击,可通过单个恶意网站同时 compromise 数百万台受害机器。
- 现有防护措施(如移除 clflush、启用 ECC 内存或使用性能计数器检测)因该攻击依赖标准内存操作而失效。
- 即使系统刷新率提高,该攻击仍保持有效,表明标准缓解措施不足以应对此攻击向量。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。