学位论文 > 优秀研究生学位论文题录展示

C语言缓冲溢出自动检测方法研究

作 者: 张大志
导 师: 刘磊
学 校: 吉林大学
专 业: 计算机软件与理论
关键词: 缓冲溢出 自动检测 操作语义 C语言 静态检测 方法研究 缓冲区溢出 抽象机模型 语法制导 复杂数据
分类号: TP311.1
类 型: 硕士论文
年 份: 2004年
下 载: 270次
引 用: 2次
阅 读: 论文下载
 

内容摘要


随着计算机技术的发展,软件在国民生产和人民生活中的应用日益普及和深入。大到政府机关,航天军事,小到个人家庭,文字处理,各种各样复杂程度各异的软件无时无刻不在运行着。同时,随着实际问题规模和复杂程度的增加,软件的规模也不断的扩大,几十万上百万行的代码已经随处可见。这种规模的扩大,使得软件的复杂性相应的越来越高。这些都直接导致了软件中的缺陷和错误越来越多。根据CERT的统计数字,在当前网络中的入侵事件当中,至少有50%是利用了代码中的缓冲溢出漏洞。无疑,在这个网络化的信息时代,这种攻击很容易传播和蔓延,极大威胁系统的安全性。毫无疑问,如果能采用有效的手段和方法对这种攻击进行防范,使得这种攻击根本无法进行或者对系统不造成严重的危害,对提高软件本身的健壮性和安全性具有十分重要的意义。因此,这方面的研究引起了人们的普遍重视。当前对于缓冲区溢出的检测和防范方法总体上分为两类:动态防范的方法和静态检测的方法。动态防范是通过改变程序的运行时环境使得有缓冲溢出缺陷的程序受到攻击时能够发现并终止程序的执行。这种防范是运行时的,也就是说在程序的源代码一级,程序的漏洞仍然摆在那里。只有在这个执行环境下,程序可以安全的运行。目前已经报告了几个动态检测工具。比如Stack Guard, Stack Shield, Return Address Defender(RAD),propolice等。但是动态检测方法有两方面的突出缺点:首先是效率问题,动态分析增大了软件运行时的系统开销,对于一些系统程序并不实用;其次,动态分析方法在检测到可能的缓冲溢出攻击后,简单的终止程序的运行,这就很容易转化成拒绝服务攻击。相反,静态检测方法可以剔除程序中的缓冲溢出漏洞,当软件交付以后,缓冲溢出威胁将不复存在,这是从本质上消除缓冲溢出攻击的方法,因此,得到了人们的普遍重视。目前的静态检测方法还很不成熟,有些只是做了词法分析,然后进行模式的匹配,有些作了语法分析,但是需要手工加入注释,还没有一个完全自动化的实用静态检测工具。本文分析了缓冲溢出攻击的各种手段,然后介绍了目前已有的一些<WP=47>动态和静态分析方法和工具,分析了它们的优缺点。在此基础上,提出了一个缓冲溢出检测的抽象机模型。主要是想从操作语义的角度形式化的描述缓冲溢出的分析问题。也有文献给出了字符串缓冲溢出的形式化描述,但是并没有采用操作语义的方法,因此其实用性不强。抽象机描述的思想是:设立缓冲区栈,指针栈,采用语法制导的方法对要检测的程序进行分析,把数组看成缓冲区,由一个整数对(alloc,len)约束,把数组名看成指针,指向同名的缓冲区。把指针也看作是指向某个缓冲区的,当有指针操作,对缓冲区进行写操作等可能改变整数对(aloloc,len)的操作时,按其语义修改缓冲区的整数范围约束,当出现len>alloc时,就发生了缓冲区溢出。考虑控制流,当出现选择,条件,循环语句时,当前的分析语句也可能随之改变。这样,当语法制导完毕时,整个源程序分析完毕,相应的缓冲溢出也分析出来。由于这种描述是形式化的,采用操作语义方法,因此其正确性能够得到保证。利用给出的抽象机描述,用Flex,Accent实现了一个针对C语言子集的试验性原型系统。该原型系统能够检测出简单的缓冲溢出情况,但是由于完全的实现工作量太大,作为一个试验系统,忽略了复杂数据结构,控制流,函数声明等情况。以操作语义方法,用抽象机描述缓冲溢出检测问题的解决是本文的一个创新点。一方面,借助操作语义,这种方法的正确性能够得到保证,另一方面,这种方法易于实现,而且通过实践也证明,这种方法是可行的。如何进一步完善这种描述方法,使它能分析多重指针等复杂数据结构和复杂的指针运算,然后加以实现,是本文今后要做的主要工作。

全文目录


第一章 绪论  5-10
  1.1 研究背景  5-6
  1.2 研究现状  6-9
    1.2.1 动态防范  6-8
    1.2.2 静态检测  8-9
  1.3 本文的主要工作  9-10
第二章 基本概念及攻击手段  10-15
  2.1 基本概念  10
  2.2 常用攻击手段  10-15
第三章 静态方法描述  15-22
  3.1 Mini C语言的定义  15-17
  3.2 抽象机及转换规则  17-22
第四章 系统设计与实现  22-39
  4.1 系统总体结构  22
  4.2 开发工具介绍  22-26
  4.3 实现中的关键思想和技术  26-28
  4.4 实现方法  28-35
  4.5 主要数据结构及主程序  35-39
第五章 系统特点与实例  39-41
  5.1 系统特点  39
  5.2 检测实例一  39
  5.3 检测实例二  39-41
第六章 总结  41-42
结束语  42-43
参考文献  43-45
致谢  45-46
摘要  46-48
Abstract  48-50

相似论文

  1. 基因调控网络模型描述语言研究,Q78
  2. 文学语言的模糊修辞研究,H05
  3. 布依语—英语语音对比研究,H319
  4. 统计机器翻译中结构转换技术的研究,TP391.2
  5. 统计与语言学相结合的词对齐及相关融合策略研究,TP391.2
  6. 词义消歧语料库自动获取方法研究,TP391.1
  7. 飞行模拟中飞行管理计算机系统CDU组件设计与仿真,TP391.9
  8. 东莞镇区初中学生作文语言现状调查及对策研究,G633.3
  9. 大学生综合素质测评研究,G645.5
  10. 基于表面增强拉曼光谱技术的鼻咽癌与胃癌检测方法研究,R739.63
  11. 维特根斯坦“语言游戏说”新探,B521
  12. 军队后勤物资管理系统设计与实现,TP311.52
  13. 网络语言影响职校学生语用情况的调查及研究,G715
  14. 支架式教学策略在小学语文教学中的运用研究,G623.2
  15. 对初中数学课堂学习即时性评价的认识与探索,G633.6
  16. 穗港中文报纸新闻标题语言比较研究,G213
  17. 黑尔的普遍规定主义思想研究,B82-09
  18. 幼儿园教育环境质量和幼儿语言发展水平关系研究,G612
  19. 科学语境论浅析,N02
  20. C++代码缺陷检测系统的研究与设计,TP311.53
  21. 顺应论视角下时尚网络媒体中的中英语码转换研究,G206

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 程序设计、软件工程 > 程序设计
© 2012 www.xueweilunwen.com