paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Adelie: continuous address space layout re-randomization for Linux drivers

Adelie:面向 Linux 驱动程序的持续地址空间布局重随机化
ASPLOS Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems2022匹配度 1/10 · 该论文属于系统安全与内核 KASLR/ROP 防御方向,核心是 Linux 驱动模块的地址空间随机化与地址加密,虽涉及编译与代码生成,但完全不涉及用户关注的静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析。引用 21 inbox
Ruslan Nikolaev, Hassan Nadeem, Cathlyn Stone, Binoy Ravindran
crossref: 2026-09-12dblp: 2026-09-12arxiv: 2026-09-12

AI 速览

一句话:提出 Adelie,通过 PIC、栈重随机化与地址加密实现 Linux 驱动模块的持续 KASLR,抵御 JIT ROP 攻击。

针对内核 KASLR 支持有限、熵低且指针静态,Linux 内核易受 JIT ROP 攻击的问题,本文提出 Adelie 内核防御机制。Adelie 首先启用位置无关代码(PIC)模型,使内核与模块可放置于 64 位虚拟地址空间任意位置且彼此间距任意;其次对模块实施栈重随机化和地址加密;最后利用 PIC 对模块进行高效持续 KASLR,使攻击者难以注入 ROP gadget。由于设备驱动常以模块形式由第三方开发且防护较弱,Adelie 重点重随机化驱动。作者开发 GCC 插件自动改写多种内核模块,解决内核代码特有挑战。评估表明 PIC 模型开销可忽略,重随机化成本在典型场景下合理。

问题
内核 KASLR 仅支持 32 位低熵范围,内核中多数指针静态,导致 Linux 内核易遭暴力或 JIT ROP 攻击,设备驱动模块尤为脆弱。
方法
Adelie 通过 GCC 插件将内核模块编译为 PIC,支持 64 位地址空间任意布局、模块栈重随机化与地址加密,并对模块进行持续 KASLR。
评估
作者在 Linux 内核模块上实现并评估,结果显示 PIC 开销可忽略,重随机化成本在典型使用场景下合理。
原文摘要(Abstract)

While address space layout randomization (ASLR) has been extensively studied for user-space programs, the corresponding OS kernel's KASLR support remains very limited, making the kernel vulnerable to just-in-time (JIT) return-oriented programming (ROP) attacks. Furthermore, commodity OSs such as Linux restrict their KASLR range to 32 bits due to architectural constraints (e.g., x86-64 only supports 32-bit immediate operands for most instructions), which makes them vulnerable to even unsophisticated brute-force ROP attacks due to low entropy. Most in-kernel pointers remain static, exacerbating the problem when pointers are leaked. Adelie, our kernel defense mechanism, overcomes KASLR limitations, increases KASLR entropy, and makes successful ROP attacks on the Linux kernel much harder to achieve. First, Adelie enables the position-independent code (PIC) model so that the kernel and its modules can be placed anywhere in the 64-bit virtual address space, at any distance apart from each other. Second, Adelie implements stack re-randomization and address encryption on modules. Finally, Adelie enables efficient continuous KASLR for modules by using the PIC model to make it (almost) impossible to inject ROP gadgets through these modules regardless of gadget's origin. Since device drivers (typically compiled as modules) are often developed by third parties and are typically less tested than core OS parts, they are also often more vulnerable. By fully re-randomizing device drivers, the last two contributions together prevent most JIT ROP attacks since vulnerable modules are very likely to be a starting point of an attack. Furthermore, some OS instances in virtualized environments are specifically designated to run device drivers, where drivers are the primary target of JIT ROP attacks. Using a GCC plugin that we developed, we automatically modify different kinds of kernel modules. Since the prior art tackles only user-space programs, we solve many challenges unique to the kernel code. Our evaluation shows high efficiency of Adelie's approach: the overhead of the PIC model is completely negligible and re-randomization cost remains reasonable for typical use cases.

链接与引用

DOI 原文 · arXiv · PDF(开放获取) · DBLP

BibTeX
@inproceedings{0001NSR22,
  title = {Adelie: continuous address space layout re-randomization for Linux drivers},
  author = {Ruslan Nikolaev and Hassan Nadeem and Cathlyn Stone and Binoy Ravindran},
  booktitle = {ASPLOS},
  year = {2022},
  doi = {10.1145/3503222.3507779}
}