收藏本站
收藏 | 手机打开
二维码
手机客户端打开本文

多重循环程序内存访问越界增量检测方法

王嘉捷  
【摘要】: 在严重威胁软件系统可靠性和安全性的多类软件缺陷中,内存访问越界属于危害性很强且广泛存在的一类缺陷,可被黑客利用并转变成多种拒绝服务漏洞和著名的缓冲区溢出等高危险性的安全漏洞。 现有的内存访问越界缺陷检测方法,对现实程序中内含复杂条件分支的多重循环,无法有效分析其内部频繁的指针运算和内存操作,因此检测效果不佳。特别是,循环执行次数无法预知而由外部输入动态确定、内存操作受循环内条件分支影响而动态变化等常见情况,对当前热门的符号执行类精确检测方法构成巨大挑战,导致该类方法在遍历程序路径实施检测时,会遇到严重的路径组合爆炸问题,即使消耗非常多时间,也常常无法正常终止。另外,现有方法被设计成对完整的程序代码实施全面检测,但现实软件系统常常会由于各种原因被更新和升级,若每次软件更新后都进行全面检测,代价过高。而且,现有方法也没有针对软件更新时容易引入新缺陷的代码区域进行专门检测,因此大部分检测时间被花费在无意义的重复检测之中。经分析,其问题根源是:现有符号执行类方法单纯追求代码覆盖率而缺陷针对性不强。 因此,提出了一种面向多重循环程序的内存访问越界缺陷增量检测方法。针对内存访问越界缺陷与循环归纳变量运算紧密关联的特点,首次将递推链扩展代数与符号执行类缺陷检测方法相结合,设计了面向多重循环的缺陷检测指导信息,同时利用软件更新影响的局部性特点,实现了基于路径指导的定向检测和基于更新影响的增量检测。其主要算法如下: 1)根据软件更新对源代码的文本修改,结合控制与数据依赖分析,识别受软件更新实际影响的语义变化区域。有针对性地在该区域中分析多重循环中指针运算和内存读写模式,初步识别出内存访问越界疑似缺陷,再根据控制与数据依赖关系标记出疑似缺陷所依赖的语句和变量,作为缺陷依赖区域,构造能充分检测软件更新引入缺陷的相关执行要素最小集合——精简检测流图,及早排除与缺陷检测无关的语句。 2)基于精简检测流图进行多重循环分析,跟踪和分析多重循环中缺陷依赖变量的递推关系,将其统一表示为递推链扩展代数的形式,再根据该代数规则进行符号操作,从而推导出缺陷依赖变量的值或上下界的闭形式函数,构建循环摘要和函数摘要。接着,根据内存范围等安全性限制条件,利用循环摘要和函数摘要,构造缺陷触发条件并求解,从而判断缺陷触发的可能性,及时排除疑似缺陷集合中的误报,还可推断出用于预测和选取缺陷关联路径的缺陷检测指导信息。 3)根据路径选取方向性、条件分支检测优先级、各个循环的有效迭代次数范围等缺陷检测指导信息,有指导地以按需符号执行方式实施路径敏感和位运算级精度的缺陷定向检测。每次经过疑似缺陷点时,主动检测缺陷触发条件,并结合在检测路径上收集的路径分支条件进行约束求解,通过判断触发路径的条件可满足性来进一步避免缺陷误报。而每次在路径分叉点,按需克隆执行环境以避免相同路径前缀的重复执行,并立即求解所选取分支的路径条件集,以及时剪除不可行的路径分支。最后,生成无误报的缺陷集合、能真实触发这些缺陷的程序输入集合以及相应的触发路径集合,作为缺陷并非误报的验证信息。 基于上述算法,设计和实现了能面向多重循环程序实施内存访问越界缺陷增量检测的原型系统,并在国内首次将微软主流编译器的下一代工业级编译平台Phoenix用于软件缺陷检测,作为该系统的基础支撑环境。该系统已检测Filezilla Server、SpamAssassin、WGet和OpenSSL等多个知名开源软件,找到了真实的代码缺陷。 实验结果表明,利用递推链扩展代数进行多重循环分析,有指导地以符号执行方式实施定向检测,能够克服多重循环程序对现有符号执行类方法造成的困难,包括循环次数由输入确定、内存操作受循环内条件分支影响等难题,既避免了盲目路径遍历,又保持了路径敏感和位运算级的检测精度,提高了检测效率和准确性。同时,利用软件更新影响的局部性特点,实现缺陷增量检测,提高了检测时效性和针对性。另外,该方法能够在检测和定位内存访问越界缺陷同时,生成相应的程序输入和触发路径等验证信息,这在软件安全性测试和信息对抗等领域有很大的应用价值。


知网文化
【相似文献】
中国期刊全文数据库 前20条
1 汤志忠,于涛,张赤红,罗军;支持多重循环软件流水的循环控制机制[J];计算机研究与发展;1998年06期
2 李柏松;循环结构的直观图析[J];现代计算机;1997年03期
3 张德伟;沈培锋;陈士芹;;长时间延时程序探讨[J];中国科技信息;2005年21期
4 沈智慧;程序设计语言中多维数组部分的教学法探讨[J];现代计算机;2001年11期
5 李文龙;汤志忠;;多重循环的软件流水:比较和提高[J];计算机科学;2004年03期
6 石利平;浅谈C语言循环语句的教学[J];福建电脑;2005年06期
7 汤志忠,王雷,钱江;多重循环的软件流水技术[J];软件学报;1996年07期
8 刘政群;在ABSIC中实现层次可变的多重循环[J];安徽理工大学学报(自然科学版);1984年03期
9 屈长青,文海英;循环语句教学中的几个问题[J];零陵师范高等专科学校学报;1999年03期
10 许晨;基于开放接口的网络计费管理系统的实现[J];金陵科技学院学报;2005年01期
11 范植华;多重循环的向量化与数组化[J];计算机学报;1988年04期
12 容红波,汤志忠;顺序扫描实现程序并行化[J];软件学报;2000年12期
13 罗军,汤志忠,张赤红;软件流水中的一种数据调度算法[J];软件学报;1998年06期
14 曾棕根;打印规则图案程序设计的新方法[J];金华职业技术学院学报;2003年04期
15 王嘉捷;蒋凡;张涛;;一种多重循环程序内存访问越界检测方法[J];中国科学院研究生院学报;2010年01期
16 李端勇 ,邹慰亲;适应外部中断的可调延时程序[J];湖北师范学院学报(自然科学版);1991年02期
17 曾国荪;陆鑫达;;基于数组元素视图的并行化和特征[J];计算机科学;2001年05期
18 陈慕羿;李挥;;ASIC设计中多重循环的自动处理方法与实现[J];计算机辅助工程;2006年01期
19 吴海勇;;三维图像矩计算[J];计算机工程与应用;2009年33期
20 邓筱红;浅谈循环程序的教学[J];九江师专学报;1998年06期
中国重要会议论文全文数据库 前2条
1 苏迅;;矿产资源循环利用的制度障碍和政策体系设计[A];资源·环境·循环经济——中国地质矿产经济学会2005年学术年会论文集[C];2005年
2 邢俊英;曹迎槐;;ILP之0-1问题RA算法分析[A];第六届中国青年运筹与管理学者大会论文集[C];2004年
中国博士学位论文全文数据库 前4条
1 郭江龙;基于能效分布矩阵方程的火电厂热力系统分析方法[D];华北电力大学(河北);2004年
2 王嘉捷;多重循环程序内存访问越界增量检测方法[D];中国科学技术大学;2009年
3 黄钢;农业企业科技价值链创新管理研究[D];四川大学;2006年
4 魏帅;面向SIMD的向量化算法及重组技术研究[D];解放军信息工程大学;2012年
中国硕士学位论文全文数据库 前8条
1 许静;供热机组辅助系统多重循环分析方法与负荷优化[D];华北电力大学(河北);2003年
2 郭江龙;供热机组热经济性在线监测的理论研究及系统实现[D];华北电力大学;2001年
3 张文宝;供热机组热力系统热经济性分析的EEDM方程[D];华北电力大学(河北);2009年
4 周海亮;基于X流处理器的循环实现及优化[D];国防科学技术大学;2006年
5 冯仁超;Reed-Solomon码的多重循环编码算法的研究[D];电子科技大学;2010年
6 黎昱;构建供应链成本控制体系的研究[D];中南大学;2003年
7 印民;基于局域网络的并行仿真算法研究[D];重庆大学;2004年
8 张晨彧;基于语义度量的本体映射及语义查询的研究[D];合肥工业大学;2005年
中国重要报纸全文数据库 前8条
1 本报记者  鲍东明;理解歌催生素质教育花[N];中国教育报;2006年
2 ;德国怎样进行水事管理[N];中国水利报;2004年
3 许金芳 李志云;长兴开发区做“减法”[N];农民日报;2005年
4 王娇萍;老工业基地改造期待瓶颈突破[N];工人日报;2004年
5 重庆 Hardsky;深入探秘Pentium4(续)[N];电脑报;2001年
6 四川 肖松;PIC单片机常用子程序[N];电子报;2004年
7 特约记者 刘玉录;房地产呼唤明确的产业政策[N];中国房地产报;2005年
8 本报记者 吴红梅;好多“金点子”直接惠及百姓[N];新华日报;2009年
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62982499
  • 010-62783978