缓冲区溢出静态分析中的指针分析技术研究

缓冲区溢出论文 静态分析论文 指针分析论文 子集约束论文
论文详情
指针分析是指通过对程序的静态分析来近似地求取程序中指针变量确定或可能指向的目标,它在程序静态分析领域中非常重要,并且很有挑战性,其结果被广泛应用于程序的优化、安全分析和验证等方面。 由于C语言允许通过指针进行间接内存访问,但并不进行边界检查,因此可能存在缓冲区溢出。缓冲区溢出漏洞是最严重的软件安全弱点之一,发现和消除软件中的缓冲区溢出漏洞已成为信息安全领域的一个研究热点。静态分析能够在软件发布前发现软件中的缓冲区溢出漏洞,并且不会降低软件运行的效率。为了进行静态缓冲区溢出分析,必须首先进行高效而精确的指针分析,以确定指针可能指向的目标缓冲区。 对于缓冲区溢出静态分析,已有的指针分析算法存在复杂度太高或者分析精度太低的不足。本文针对缓冲区溢出静态分析的需求,提出了一个基于过程间指向副作用嵌入调度的流不敏感、上下文敏感指针分析算法,它分为两个阶段:自底向上阶段嵌入调度指向副作用,删除导致指向副作用的指针赋值语句,将整个程序转化成一个没有过程间指向副作用的程序;自顶向下阶段对转化后的程序进行CGBCI(Constraint-Graph-Based Context-Insensitive)指针分析,获得上下文敏感的指向结果。这个算法的优点是能够取得与完全过程嵌入等价的上下文敏感性质,对每个函数至多分析两次,所以不会导致复杂度呈指数增长。 基于LLVM编译器平台,我们实现了此算法,并应用此指针分析算法实现了一个缓冲区溢出静态分析工具。实验结果表明我们上下文敏感的指针分析算法能够提高缓冲区溢出静态分析的精度,具有较高的分析效率。
摘要第8-9页
ABSTRACT第9页
第一章 绪论第10-18页
    §1.1 指针分析的意义第10-11页
        1.1.1 构建静态程序分析工具与调试工具第10页
        1.1.2 数据流分析与程序优化第10-11页
        1.1.3 开发程序的并行性第11页
    §1.2 缓冲区溢出静态分析对指针分析的需求第11-12页
    §1.3 指针分析研究的关键问题第12-16页
        1.3.1 指针指向信息的表示第12-13页
        1.3.2 堆和聚集建模第13-14页
        1.3.3 是否采用流敏感的分析方法第14页
        1.3.4 是否采用上下文敏感的过程间分析方法第14-16页
    §1.4 课题主要工作第16-17页
    §1.5 论文结构第17-18页
第二章 指针分析的相关工作第18-27页
    §2.1 指针分析的术语第18-19页
    §2.2 相关理论知识第19-23页
        2.2.1 控制流图第19-20页
        2.2.2 数据流分析第20页
        2.2.3 过程间分析第20-22页
        2.2.4 约束分析第22-23页
    §2.3 已有指针分析算法比较第23-26页
        2.3.1 流和上下文不敏感分析第23-24页
        2.3.2 流敏感、上下文不敏感的指针分析第24-25页
        2.3.3 流和上下文敏感分析算法第25-26页
    §2.4 小结第26-27页
第三章 CGBCI指针分析算法研究与实现第27-36页
    §3.1 算法思想概述第27页
    §3.2 约束和约束图第27-29页
    §3.3 CGBCI指针分析算法实现第29-35页
        3.3.1 约束图初始化第30-31页
        3.3.2 约束图的构造第31-32页
        3.3.3 约束图动态求解第32-34页
        3.3.4 函数指针处理第34-35页
    §3.4 小结第35-36页
第四章 上下文敏感的指针分析算法的研究与实现第36-56页
    §4.1 CGBCI指针分析算法的不足第36-37页
    §4.2 获取上下文敏感分析的方法第37-40页
        4.2.1 完全过程嵌入第37-38页
        4.2.2 过程间指向副作用语句嵌入第38-40页
    §4.3 基于指向副作用嵌入调度的上下文敏感指针分析算法第40-45页
        4.3.1 算法概述第41-42页
        4.3.2 算法的正确性证明第42-44页
        4.3.3 调用图的构造第44-45页
        4.3.4 自底向上阶段和自顶向下阶段第45页
    §4.4 过程间指向副作用提取算法第45-53页
        4.4.1 副作用的特殊化第45-47页
        4.4.2 处理别名第47-49页
        4.4.3 构造指向概要第49-53页
        4.4.4 指向概要的调度和关键赋值的删除第53页
        4.4.5 全局赋值的处理第53页
    §4.5 实验结果第53-55页
    §4.6 小结第55-56页
第五章 指针分析在缓冲区溢出静态分析中的应用第56-65页
    §5.1 概述第56页
    §5.2 指针分析在缓冲区溢出分析工具中作用第56-59页
        5.2.1 变量的抽象属性的初始化第57-58页
        5.2.2 变量操作的语义解释第58-59页
    §5.3 约束的产生和分析第59-63页
        5.3.1 程序的遍历第59-60页
        5.3.2 过程内的约束产生和分析第60-61页
        5.3.3 过程间的约束分析第61-63页
    §5.4 实验结果第63-64页
    §5.5 小结第64-65页
第六章 结束语第65-67页
    §6.1 本文的工作总结第65页
    §6.2 展望第65-67页
致谢第67-68页
附录: 攻读硕士期间发表的论文第68-69页
参考文献第69-70页
论文购买
论文编号ABS1520495,这篇论文共70页
会员购买按0.30元/页下载,共需支付21
不是会员,注册会员
会员更优惠充值送钱
直接购买按0.5元/页下载,共需要支付35
只需这篇论文,无需注册!
直接网上支付,方便快捷!
相关论文

点击收藏 | 在线购卡 | 站内搜索 | 网站地图
版权所有 艾博士论文 Copyright(C) All Rights Reserved
版权申明:本文摘要目录由会员***投稿,艾博士论文编辑,如作者需要删除论文目录请通过QQ告知我们,承诺24小时内删除。
联系方式: QQ:277865656