文档介绍:西安电子科技大学
硕士学位论文
C/C++安全检查工具预处理器的设计与实现
姓名:蒋超
申请学位级别:硕士
专业:计算机软件与理论
指导教师:刘坚
20080101
摘要本文在分析疌程序安全检查工具框架的基础上,根据安全检查工具的特殊需求,给出了一种基于分析器自动生成工具乖霤/踩ḿ觳楣ぞ预处理器的方法,并将此方法应用于实际开发过程中。使用此方法构造的预处理器通过分析疌源代码为后端安全检查提供完成预处理后的中间文件及安全检查所需的特殊信息,并且完成预处理阶段的安全漏洞检查。本文使用纱史ǚ治銎鳌⒂锓ǚ治銎骺蚣埽氐闾致哿薈/处理标准及其安全、预处理器的设计与实现以及预处理安全检查模块的设计与实现。实践表明,该预处理器能够满足安全检查工具的需要。关键词:安全检查预处理器
琭疌疌,篠琣甌—’.,’甀
日期..血/·歹‘日期:麴山本人签名:垂望日期:兰翌笸:合本人签名:五至垒关于论文使用授权的说明创新性声明本人声明所呈交的论文是我个人在导师的指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得西安电子科技大学作所做的任何贡献均已在论文中作了明确的说明并表示了谢意。本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。部或部分内容,可以允许采用影印、缩印或其他复制手段保存论文。C艿穆畚或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究工申请学位论文若有不实之处,本人承担一切相关责任。生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全在解密后遵守此规定本学位论文属于保密在年解密后适用本授权书。导师签名:切
第一章绪论弟一早珀研究背景疌语言从产生至今已近三十年,在不同领域的软件开发中得到了广泛应用。但在提供灵活控制能力的同时也带来了一些潜在的安全性问题,例如缓冲区溢出、资源泄露和指针非法引用等【俊】,这些安全问题严重影响了软件的可靠性针对疌程序的安全问题,国内外对疌安全检查的研究已有相当长的历史,同时出现了多种程序安全检查方法,如代码验证徒馐等。目前广泛应用于项目开发中的主要有两种方法:静态检查和动态检查。静态检查通过扫描源程序,在词法分析、语法分析和语义分析过程中找出能够导致程序错误的结构异常、控制流异常及数据流异常:而在动态检查过程中,需要设计一组或多组测试数据,并实际运行被测程序,检查不按预定要求终结的循环、不该执行而实际执行的语句及该执行而未执行的语句等程序错误,由于动态检查需运行被测程序,因此检查精度较高,但由于设计的测试数据很难覆盖程序的所有运行情况,导致漏洞检测的覆盖率醇觳獬雎┒凑妓新┒吹谋壤相对较低。目前提出了一种静态检查和动态检查相结合的方法【坷唇谐绦虻陌踩ḿ觳椋朔椒ɑ菇龃τ谘芯拷目前用于疌程序安全检查的工具已经很多,且大多数已经被广泛使用,其中具有代表性有:考昂蠹滩稴亢蚉及其后继产品都采用程序员手工添加注释的方法进行静态安全检查。其中和为开源的项目,只关注于镅缘陌踩ḿ觳椤6鳳I桃挡品,增加了对陌踩ḿ觳椤癙】是一个自动化的静态安全检查工具,不需要程序员的手工干预。它采用前置条件和后置条件的概念定义安全条件,并使用该条件进行安全检查。狿暮蠹滩罚湓赑幕∩咸岣吡思觳樾剩捎眯愿是一个开源的程序检查工具,可以检查程序中的内存泄漏和无效内和安全性。⒛P检查段。好。和甲ㄗ⒂谔岣呒觳榫范取
●。⋯●馹⋯●⋯●!疌程序安全检查工具概述存访问等漏洞。该工具为一个动态检查工具,通过运行被测程序检测程序中的漏是一个针对镅缘木蔡觳楣ぞ撸畛趵醋栽1嘁牒湍P图觳榈领域的工作。该工具已经被应用于诤嗽创氚踩苑治觥采用扩展的镅岳嘈拖低常市碛没@嘈吞砑酉薅ㄐ畔ⅲ凑制订的一系列推导规则进行推导,检查内存泄漏、内存非法地址访问等错误,并以动态检查为辅助方法来提高检查的精度。本文来源于一个实际科研项目。此项目的目标是针对疌程序设计语言在软件开发过程中可能引起的安全问题,研制一个基于静态分析的疌软件系统安全检查工具【】。疌程序安全检查工具的目标是利用静态分析技术,检查疌程序中的安全漏洞。该工具支持以完整的软件源代码为单位的安全检查和可扩展的安全规则,通过基于控制流和契约机制【】的数据流分析提高检查精度。工具整体框架如图所示。洞。】ⅲ瑀“壬呈庳害全舱杏夷﹃娱涸疌安全检查工具预处理器的设计与实现源代码创肓斜圈,
本文工作及内容组织工具分为前端和后端两个部分。前端通过对软件源代码迸行分析,为后端提供分析需要的符号信息、抽象语法树和控制流信息。前端主要包括