What you can read is what you can't execute

被引:0
|
作者
Li, YongGang [1 ]
Cai, JiaZhen [1 ]
Bao, Yu [1 ]
Chung, Yeh-Ching [2 ]
机构
[1] CUMT, Sch Comp Sci & Technol, Xuzhou 221116, Jiangsu, Peoples R China
[2] Chinese Univ Hong Kong, Shenzhen 518172, Guangdong, Peoples R China
关键词
Code reuse attacks; Operating systems; Software and system safety; Access control; Code probes; MEMORY;
D O I
10.1016/j.cose.2023.103377
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Due to the address space layout randomization (ASLR), code reuse attacks (CRAs) require memory probes to get available gadgets. Code reading is the basic way to obtain code information. In theory, setting the code to be unreadable can prevent code reading. However, the pages are loaded dynamically, and the existing methods cannot set all code as unreadable at one time. They can only control code permissions page-by-page via time-consuming page tracking. Moreover, since some special users need to read code, turning off the read permission will affect their execution. To solve these problems, this paper proposes a method AntiRead. It rebuilds the buddy system for memory allocation. The new buddy system places code pages in a specific memory pool to manage their read permissions. In the presence of AntiRead, what is obtained by adversaries through code reading is either randomized code or non-executable code. Experiments and analysis show that AntiRead can prevent the code that has been read from being used as gadgets without affecting the normal code reading. In addition, the CPU overhead introduced by AntiRead is 1.8%.& COPY; 2023 Elsevier Ltd. All rights reserved.
引用
收藏
页数:12
相关论文
共 50 条