首页> 中文学位 >基于编译器的内核控制流程细粒度保护系统
【6h】

基于编译器的内核控制流程细粒度保护系统

代理获取

目录

封面

声明

中文摘要

英文摘要

插图索引

表格索引

缩略语对照表

目录

第一章 绪论

1.1研究背景

1.2论文主要工作

1.3论文的组织结构

第二章 相关研究工作与背景技术

2.1相关研究工作

2.2相关背景技术

2.3 LLVM编译器IR基本语法

2.4 LLVM编译器IR部分基本操作

2.5 LLVM编译器PASS设计

2.6本章小结

第三章 系统保护方案设计与关键技术

3.1保护方案工作原理与功能说明

3.2系统总体设计方案及关键技术

3.3本章小结

第四章 原型系统实现

4.1原型系统实现环境

4.2 GCC部分

4.3 LLVM模块构建实现获取内核控制流程图

4.4返回地址表和函数地址表的构建

4.5本章小结

第五章 原型系统测试

5.1性能损耗测试

5.2系统攻击测试

5.3原型系统讨论

5.4本章小结

第六章 研究总结与展望

6.1论文工作总结

6.2下一步工作展望

6.3本章小结

参考文献

致谢

作者简介

展开▼

摘要

现代操作系统面临着各种攻击威胁,其中一种重要的攻击方式就是 ROP(Return-Oriented Programming)攻击。通过篡改操作系统内核中的某个控制数据(比如函数指针或返回地址),ROP攻击者能够将系统正常的执行流程(或控制流程)重定向到它自己所“精心”选择的合法指令片段,通过特定的连接指令(如ret指令)将这些指令片段串接起来进行执行,达到恶意攻击的目的。如果能够对操作系统内核控制流程提供保护,阻止系统正常的执行流被恶意更改,就可以消除(或缓解)这一类攻击的威胁。
  获取一个完整的内核控制流程图是进行内核控制流程保护的前提,为此,论文首先设计并实现了一种基于编译器中间代码的细粒度内核控制流程图获取方法。该方法通过扩展编译器,在其中间代码表示阶段,增加一个专用的数据结构分析模块,对于中间指令间接call的目标进行提取,获得内核控制流程图的关键路径。该模块将函数指针的传递过程分解成保存函数地址过程和读取使用函数地址过程;在函数具体调用分析之前,通过静态分析将内核中结构体、数组及单独的函数指针中的间接调用函数信息统一存储在基于类型设计的临时结构中,之后遍历分析每个函数中动态存储的函数指针信息。在完成存储步骤后,分析每一次进行函数间接调用时,通过读取之前的分析结果,获取其具体的跳转目标。最后再结合基于反汇编代码的静态分析,提取出整个操作系统的细粒度内核控制流程图。
  在获得细粒度内核控制流程图后,系统通过“控制数据索引”技术来实现对操作系统内核中控制流程的保护。该技术通过修改编译器,将系统内核中的控制数据(包括函数指针和返回地址)收集到集中存放的跳转表格中并转换成索引;之后对内核中相关指令进行替换,使编译生成的新内核支持利用索引在函数表和返回地址表中进行寻址和取项。函数跳转和返回时将首先获得关于目标地址的索引,通过索引查询对应的表格获取真实的跳转地址,完成一次控制流程的转换。
  论文基于GCC/LLVM编译器开发了原型系统,实现了对 Linux-3.11.1内核控制流程的细粒度保护,并对原型系统进行了攻击和性能测试。测试结果证明了论文方法的有效性和高效性。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号