(计算机科学与技术专业论文)基于模拟器的缓冲区溢出漏洞动态检测技术研究.pdf_第1页
(计算机科学与技术专业论文)基于模拟器的缓冲区溢出漏洞动态检测技术研究.pdf_第2页
(计算机科学与技术专业论文)基于模拟器的缓冲区溢出漏洞动态检测技术研究.pdf_第3页
(计算机科学与技术专业论文)基于模拟器的缓冲区溢出漏洞动态检测技术研究.pdf_第4页
(计算机科学与技术专业论文)基于模拟器的缓冲区溢出漏洞动态检测技术研究.pdf_第5页
已阅读5页,还剩82页未读, 继续免费阅读

(计算机科学与技术专业论文)基于模拟器的缓冲区溢出漏洞动态检测技术研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国防科学技术大学研究生院硕士学位论文 摘要 缓冲区溢出漏洞是常见的软件安全漏洞,恶意用户可利用程序中的溢出漏洞 攻击目标主机系统,窃取或破坏重要数据,甚至控制该系统攻击其它主机。在每 年近十万次网络漏洞攻击中,近5 0 与缓冲区溢出相关,造成的经济损失超过百 亿美元。缓冲区溢出漏洞已成为一种最危险、最常见的软件安全漏洞。 现有缓冲区溢出漏洞检测方法分静态和动态两类。静态检测方法对源代码检 测,速度快检出率高,但结果中存在较多误报;动态检测方法运行时监控程序行 为,误报率较低且检测精度较高。但现有动态方法也存在明显的不足:1 未完全摆 脱源代码;2 只能针对应用程序检测,对操作系统无能为力;3 发现溢出现象却难 以确定漏洞位置;4 对测试输入依赖较高,代码覆盖率难以保证。 本文以现有缓冲区溢出漏洞检测方法中存在的问题和不足为切入点,在充分 研究、分析和比较现有动态方法的基础上,提出了一种面向可执行代码,利用全 系统模拟器作为执行环境,通过动态路径追踪方法检测溢出漏洞的有效方法。主 要工作和创新包括: 1 ) 针对当前动态方法执行环境控制力较弱,信息获取不充分的问题,提出了 基于全系统模拟器的动态检测环境构建方法,并重点研究了模拟器的控制技术。 该技术使目标程序完全受控地运行在环境内,可随时获取包括硬件状态在内的各 层次系统信息,为漏洞检测提供了良好的基础平台。 2 ) 针对可执行代码抽象难读的问题以及动态追踪对指令分析的需求,提出了 指令的动态解释方法。该方法将可执行代码动态转换成形式统一、便于分析追踪 的元指令表示形式。该方法不仅改善了后端路径追踪逻辑的目标指令系统,同时 也便于前端执行环境向多平台扩展。 3 ) 针对当前动态方法在漏洞定位与代码覆盖率问题上存在的不足,提出了基 于动态污点传播思想的动态路径追踪方法。该方法分析并构造了溢出漏洞的判定 规则,回溯确定漏洞位置,归纳溢出形成条件,并结合系统状态回退完成多路径 漏洞搜索,提高代码检测覆盖率。 4 ) 在上述研究成果基础上,基于s i m i c s 全系统模拟器设计并实现了缓冲区溢 出漏洞动态检测系统原型系统s i m d d b o 。 5 ) 对s i m d d b o 系统进行基准测试和实例测试,验证了系统的有效性,初步 尝试了新漏洞挖掘,发现b a i d uh i 中两个新漏洞并获得b u g t r a q 确认。 主题词: 缓冲区溢出,动态检测方法,系统模拟器,可执行代码,污点传播,多 路径测试 第i 页 国防科学技术大学研究生院硕+ 学位论文 a b s t r a c t b u f f e ro v e r f l o wi sc o m m o ns o f t w a r es e c u r i t yv u l n e r a b i l i t y m a l i c i o u su s e r sc a n u s et h eo v e r f l o wv u l n e r a b i l i t yo ft h ep r o c e d u r et oa t t a c kt h et a r g e tc o m p u t e rs y s t e m s ,t o a c c e s so rc o r r u p ts e n s i t i v ei n f o r m a t i o n ,o re v e nw o r s e ,t oc o n t r o lt h eh o s ts y s t e mt o a t t a c ko t h e r s a m o n gt h eh u n d r e d so ft h o u s a n d so fn e t w o r ka t t a c k se a c hy e a r ,a b o u t h a l fo ft h e ma r er e l a t e dt ob u f f e ro v e r f l o wv u l n e r a b i l i t i e s ,w h i c hc a u s em o r et h a n10 b i l l i o nd o l l a r s e c o n o m i cl o s s b u f f e ro v e r f l o wv u l n e r a b i l i t yh a sa l r e a d yb e c o m eo n eo f t h em o s td a n g e r o u sa n dc o m m o ns o f t w a r es e c u r i t yv u l n e r a b i l i t i e s n o w a d a y s ,t h em e t h o d so fb u f f e ro v e r f l o wv u l n e r a b i l i t i e sd e t e c t i o na r ec l a s s i f i e d i n t ot w oc a t e g o r i e s :s t a t i cd e t e c t i o nf o rb u f f e ro v e r f l o w ( s d b o 、a n dd y n a m i cd e t e c t i o n f o rb u f l f e ro v e r f l o w ( d d b o ) s d b om e t h o d sf o rd i r e c td e t e c t i o no fs o u r c ec o d e g e n e r a l l ys u f f e rf r o mh i g h e rr a t eo ff a l s ep o s i t i v e s d d b om e t h o dw h i c hm o n i t o r s p r o g r a ma c t i o ni nr u n t i m e ,r e l a t i v e l ys p e a k i n g ,h a sal o w e rf a l s ea l a r mr a t ea n dh i g h e r d e t e c t i o na c c u r a c y h o w e v e r , t h e r ea r eo b v i o u sp r o b l e m sa n ds h o r t c o m i n g sf o rd d b o : ( 1 ) i tc a n te n t i r e l yg e tr i do ft h ed e m a n do fs o u r c ec o d e ( 2 ) b e c a u s eo ft h el i m i t a t i o n o ft h eo p e r a t i n ge n v i r o n m e n t ,i tc a no n l yt e s tt h ea p p l i c a t i o np r o g r a m ,b u tc a n td o a n y t h i n ga b o u tt h eo p e r a t i n gs y s t e m s ( 3 ) d i f f i c u l t i e si no v e r f l o wl o c m i o n ( 4 ) h i g h d e p e n d e n to nt h es o u r c ec o d e ,i ti sd i f f i c u l tt oe n s u r et h ec o v e r a g eo ft h ec o d e f o c u s i n go nt h ep r o b l e m sa n ds h o r t c o m i n g s o ft h ee x i s t i n gb u f f e ro v e r f l o w v u l n e r a b i l i t yd e t e c t i o n ,t h i sp a p e rp r e s e n t sa ne f f e c t i v em a n n e rw h i c hi ss p e c i a lf o r e x e c u t a b l ec o d e ,a n dr u n st a r g e tp r o g r a m si nt h es y s t e m w i d es i m u l a t o ru n d e rt h e d y n a m i c - p a t h t r a c k i n gm o n i t o r i n gb a s e do nt h es y s t e m a t i cs t u d y ,c o m p r e h e n s i v e a n a l y s i sa n dc o m p a r i s o no ft h ed d b oa p p r o a c h t h em a i nw o r ka n di n n o v a t i o n i n c l u d e sf i v ea s p e c t s 11t op r e s e n ts y s t e m w i d ee n v i r o n m e n t a ls i m u l a t o ra n dt os t u d yt h ec o n s t r u c t i o n o ft h es i m u l a t o rc o n t r o lt e c h n i q u ef o c u s i n go nt h ep r o b l e mo ft h ew e a k n e s si n c o n t r o l l i n go ft h ec u r r e n td y n a m i ce n v i r o n m e n ta n da c c e s s i n gt oi n f o r m a t i o n ,n l i s t e c h n i q u ee n a b l e st h eg o a lp r o g r a mt or u ni nt h ee n v i r o n m e n tc o m p l e t e l yc o n t r o l l e d , a n dc a no b t a i na l lk i n d so fs t a t e - l e v e li n f o r m a t i o na ta n yt i m e ,i n c l u d i n gh a r d w a r es t a t e i tp r o v i d e sag o o df o u n d a t i o np l a t f o r m 2 ) t op u tf o r w a r dad y n a m i ci n s t r u c t i o ni n t e r p r e t e rf o c u s i n go nt h ep r o b l e mt h a t e x e c u t a b l ec o d ei sd i f f i c u l tt or e a da n dt r a c k t h ei n t e r p r e t e rw i l lt r a n s f o r i ne x e c u t a b l e c o d ei n t om e t a i n s t r u c t i o nw h i c hi sf o r m u n i f i e d s t r u c t u r e d a n de a s y t o t r a c k i tn o t o n l yi m p r o v e st h et a r g e ti n s t r u c t i o n s e to ft h eb a c k e n dp a t h t r a c k i n g b u ta l s o f a c i l i t a t e st h ef r o n t e n de x t e n d i n gt om u l t i p l a t f o l n le n v i r o n m e n t 3 ) a i m i n gt oi m p r o v ec o d ec o v e r a g ea n ds o l v et h ep r o b l e mo nv u l n e r a b i l i t i e s l o c a t i o n ,t op r e s e n td y n a m i cp a t h t r a c k i n g ( d p t ) t e c h n i q u eb a s e do nt a i n t - p r o p a g a t i o n 第i i 页 国防科学技术大学研究生院硕士学位论文 d p tp u t sf o r w a r dt h er u l e so fj u d g i n gb u f f e ro v e r f l o w ,t h ew a y st ol o c a t et h e v u l n e r a b i l i t i e s ,t h ec o n d i t i o no fo v e r r u n n i n gt h eb u f f e r ,a n dt h ea l g o r i t h mf o rm u l t i - p a t h s e a r c hw h i c ha i m st oi m p r o v ec o d ec o v e r a g e 4 ) t od e s i g na n di m p l e m e n tap r o t o t y p es y s t e mc a l l e ds i m d d b o ,f o rt h eu s eo f s i m i c sw h i c hi saf u l l s y s t e ms i m u l a t o r ,w h i c hi sb a s e do nt h ea b o v e - m e n t i o n e d r e s e a r c hr e s u l t s 5 ) t ot e s ts i m d d b os y s t e mw i t ht h eb e n c h m a r ka n dt h r e ew i n 3 2a p p l i c a t i o n st o v e r i f yt h ev a l i d i t yo fs i m d d b 0 ,a sar e s u l to ff i n d i n gt w on e wv u l n e r a b i l i t i e s t e n t a t i v e l yi nb a i d u h iw h i c hi sg i v e nv e r i f i c a t i o nb yb u g t r a q t os u mu p ,t h i sp a p e ri so fi m p o r t a n tt h e o r e t i c a la n da p p l i c a t i o nv a l u ei n i m p r o v i n gt h ed e g r e e o fa u t o m a t i o na n dt h ea c c u r a c yo fd e t e c t i n go v e r f l o w v u l n e r a b i l i t i e s k e yw o r d s : b u f f e ro v e r f l o w sv u l n e r a b i l i t i e s ,d y n a m i cd e t e c t i o n ,f u l l s y s t e m s i m u l a t o r ,e x e c u t a b l ec o d e ,t a i n tp r o p a g a t i o n ,m u l t i p a t h t r a c k i n g t e s t i n g 第i i i 页 国防科学技术大学研究生院硕士学位论文 表目录 表1 1动态与静态检测方法比较4 表2 1 l e a v y 经典栈溢出代码实例9 表2 2 堆攻击代码实例1l 表2 3 数据段攻击代码实例1 3 表3 1 元指令语法模型2 6 表3 2 元指令语法标识符说明2 7 表3 3 双操作数汇编指令通用表示形式:2 8 表3 4 静态化简表示例2 9 表3 5 元指令污点传播定义3 5 表4 1 s s l 脚本实例5 3 表4 2 词法解析引用部分5 6 表4 3 词法解析声明部分5 6 表4 4y a c c 语法规则5 6 表4 5 语法解析定义5 7 表4 6 语法解析操作5 7 表5 1 溢出测试攻击项目6 5 表5 2 基准测试结果对比6 6 表5 3w i n s 检测漏洞列表6 7 表5 4 s u r g e m a i l 检测漏洞列表6 7 第1 i i 页 国防科学技术大学研究生院硕+ 学位论文 图1 1 图2 1 图2 2 图2 3 图2 4 图 图 图 图 5 1 2 3 图3 4 图3 5 图3 6 图4 1 图4 2 图4 3 图4 4 图4 5 图4 6 图4 7 图4 8 图4 9 图4 1 0 图4 “ 图4 1 2 图4 1 3 图4 1 4 图4 1 5 图4 1 6 图4 1 7 图4 1 8 图4 1 9 图5 1 图目录 c v e 漏洞数量统计2 w i n 3 2 内存布局8 栈攻击原理示意图10 反编译工具截图1 2 堆溢出攻击原理示意图l2 数据段溢出攻击原理示意图1 3 全系统模拟器构建过程2 1 回溯性能测试2 5 元指令映射过程2 8 动态化简流程图3 0 w i n s 漏洞污点生成图部分3 6 s u r g e m a i l 报文约束条件3 7 s i m d d b o 系统框架图4 3 模拟器控制子系统结构图4 5 异步调用处理逻辑4 6 时间戳格式4 7 s t e p l n 和s t e p o u t 逻辑图4 8 信息获取模块4 9 信息验证模块5 0 元指令类图5 0 表达式类图5 1 元指令对象实例51 动态指令解释流程5 2 反汇编解码器生成过程5 3 指令映射表生成过程5 4 污点传播框图5 8 污点拆分操作6 1 污点合并操作6 1 可控分支遍历模块结构图6 1 可控跳转点回退条件示意图6 2 多路径测试逻辑6 3 w i n s 握手协议测试6 8 第1 v 页 国防科学技术大学研究生院硕七学位论文 图5 2c i f s 文件传输测试6 8 图5 3s i m d d b o 性能对比测试6 9 第v 页 独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示谢意。 学位论文题目: 基王搓拯墨煎绫进匡鲎出遏涸边奎捡测垫盔珏窥 学位论文作者签名:31 量!日期:矽扩孑年f 二月二日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留、使用学位论文的规定。本人授权 国防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子 文档,允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密学位论文在解密后适用本授权书。) 学位论文题目: 基王搓赵墨鲍缓壁匿渣出遗泅邈查捡迦遮盔盟窒 一 学位论文作者签名:刁冀 作者指导教师鲐尊至 日期:渺扩年似月少2 ,日 日期:p 彦年,z 月2z 日 国防科学技术大学研究生院硕士学位论文 第一章绪论弟一早 三百了匕 随着网络攻击的次数、范围和危害的不断增长,信息系统的安全性已经成为 社会各界面临的重大挑战之一。缓冲区溢出漏洞是一种十分危险且常见的软件安 全漏洞,许多网络攻击都与缓冲区溢出漏洞有关。所以检测缓冲区溢出漏洞,并 及时修正对于信息系统安全非常有益。令待检测的程序运行在模拟器中,追踪数 据处理流程,动态检测与判定缓冲区溢出漏洞,可以有效减小缓冲区溢出漏洞威 胁的影响。这种基于模拟器的溢出检测方法能够检测可执行代码的漏洞,通过追 踪路径的反向求解发现漏洞位置和成因,利用状态回退进行多路径测试。该方法 可以保证报告的漏洞都是真实存在的,没有误报的现象。 本章第一节介绍课题背景,第二节分析缓冲区溢出检测的研究现状,第三节 论述本文的主要工作,最后说明文章结构。 1 1 课题背景 缓冲区溢出漏洞造成的危害非常严重。对于类型不安全语言( 如c 或c + + ) 编写的程序,溢出漏洞可以被恶意用户利用进而控制系统的控制权,达到窃取信 息、破坏数据甚至利用其传播病毒的目的。对于类型安全语言( 如j a v a ) 编写的 软件,溢出问题会被边界检查程序发现并触发一个异常;当该异常没有被程序员 处理的时候,系统会终止软件造成拒绝服务的危害。 如今在军事、金融、工业、交通等关键领域,一旦发生了系统瘫痪或是机密 情报被人窃取,损失无法估计;即便是在日常工作中,如果因缓冲区溢出漏洞造 成了机器工作异常、用户数据被破坏也会严重降低工作效率,带来经济损失。 不同于其他类病毒与木马,缓冲区溢出漏洞的攻击很难利用杀毒软件等工具 有效预防。解决问题的方法通常依赖于软件生产厂商的漏洞补丁程序,但通常厂 商对于漏洞的响应时间较长。许多漏洞在厂商公布并解决之前早己在黑客社区中 广泛流传。这种尚未得到官方确认却真实存在的漏洞被称为“o d a y 漏洞 ,系统 对0 d a y 漏洞的攻击几乎没有抵抗力。 不仅如此,利用缓冲区溢出漏洞编写的病毒攻击能力和自传播性( s e l f p r o p a g a t i o n ) 极强【l 】。第一次利用缓冲区溢出漏洞进行网络攻击的病毒是1 9 8 8 年 爆发的m o r r i s 蠕虫【z ,引,它利用b s d 操作系统的后台程序f i n g e r d 的缓冲区溢出 漏洞进行攻击和传播,短短数天内控制了6 0 0 0 台i n t e m e t 主机,几乎导致i n t e m e t 网络完全瘫痪,造成了1 千万美元的经济损失。2 0 0 1 年7 月爆发的c o d er c d 蠕虫 至少攻击了5 0 万台服务器,造成了2 6 亿美元的损失,随后的s o b i g 蠕虫至少攻击 第1 页 国防科学技术大学研究生院硕士学位论文 了1 0 0 力台计算机,造成了5 0 亿美元以上的损失1 4 j 。有统计表明从1 9 9 9 年到2 0 0 5 年的六年间,每年由于蠕虫、病毒攻击造成的经济损失都超过了1 0 0 亿美元【5 1 。 r n c o u r l t o f v u l s i i i ic o u n to fb u 瞧ro v e 闱。wv u l s1 n -一 一 广l ll 1 9 9 81 9 9 92 0 0 0 2 0 0 12 0 0 22 0 0 32 0 0 42 0 0 52 0 0 62 0 0 1 y e a r 图1 1c v e t 6 ,7 1 漏洞数量统计 纵观利用缓冲区溢出漏洞进行攻击的行为趋势,可以发现攻击行为逐年递增, 漏洞数量也是加速度上升。如若不及时采取有效的措施,小小的缓冲区溢出漏洞 很有可能酿成难以估量的大灾难。在网络安全问题日趋严重的当下,研究缓冲区 溢出漏洞检测技术可以提高信息系统的安全性和可靠性,更可在信息战、网络战 中发挥重要作用。 1 2 研究现状 现今,研究人员已研制开发出多种检测方法和工具。根据检测时是否需要运 行被测程序,缓冲区溢出漏洞的检测方法可分为静态检测方法和动态检测方法两 类。 1 2 1 溢出检测研究现状 1 2 1 1 静态检测方法 1 9 7 4 年,d i c ks i t e s 首先提出了用静态分析发现程序性质的方法【8 】,开创了静 态分析程序漏洞的先河。j o h n s o n 在1 9 7 8 年实现了一个简单的静态分析器【9 j ,用 以检测c 代码的多种错误。1 9 9 4 年,d a v i de v a n s 等人开发了一种程序编写规范检 查器l c l i n t 9 0 l 。该工具自动检查源文件和规范文件之间的不一致性,借此可以 发现缓冲区溢出漏洞。这种方法没有深入程序语义,所以难以发现逻辑性错误。 1 9 9 9 年,d a v i dl a r o c h e l l e 等提出了利用语义约束分析技术来解决漏洞检测问题的 方案【l l 】。其在l c l i n t 的基础上有所改进,但需要程序员填写注释,引导语义约 束的构造。2 0 0 0 年,d a v i dw a g n e r 在其博士论文中将缓冲区溢出的检测转化为整 数区间分析的形式来处理1 1 2 。1 4 1 。他基于图论构造了整数区间运算规则和溢出判定 第2 页 o o o o o o o 0 吲 的 的 鲫 鳓 鲫 7 6 5 4 3 2 l 盟,芎_c360 国防科学技术大学研究生院硕士学何论文 算法,并开发了b o o n 原型系统。该系统在字符串处理方面的成果显著,但也仅 限于此。同年,j 0 1 1 i lv i e g a 开发了i t s 4 一种具有威胁模型结构的数据库【1 5 】, 利用词法分析技术对源代码模式匹配。这种方法虽然效率很高,仍然没有考虑语 法、语义层次的信息,很容易出现漏报和误报。2 0 0 3 年,y i c h e nx i e 等人从程序 语法入手开发了a r c h e r t l 6 1 ,生成抽象语法树a s t 和程序流程控制图,进而分 析路径敏感性。这种方法需要在效率和精度上折中,检出率高的同时效率较低; 效率高时误报率也较高。同年,n u r i td o r 开发了一种名为c s s v 的缓冲区溢出检 测器【l7 。,致力于发现源代码中的全部缓冲区溢出漏洞。其核心思想是将源代码和 安全规范( 称为“契约”) 转换成逻辑公式进行形式化证明。这种工具虽然检出 率很高,但程序员编写契约是个沉重的负担。2 0 0 6 年m e n 西u 1 1l i 等人提出抽象解 释理论验证程序安全性【l 引,能够检测出较隐蔽的溢出漏洞。但该方法面临的主要 问题是无限状态的组合爆炸。2 0 0 7 年,y i m i nx i a 等人提出了结合数据流分析和约 束分析的综合检测方法【l9 1 ,在某些程序类型下保证高效率和低误报。 静态方法无须执行程序,可以在没有输入的情况下进行检测。所以静态检测 在程序编写的阶段就可以进行,将溢出漏洞消灭在开发早期。静态方法可以检测 代码中多过程界面中的溢出路径,在漏洞定位和成因分析方面结果明确。由于程 序访问地址和目标缓冲区边界在源代码中是未确定的,所以变量状态和约束条件 都允许是无穷的,变量状态空间包含了程序真实数据的解空间。因此,静态方法 的检出率很高。总结缓冲区溢出漏洞的静态检测方法有以下三个特点【2 0 】:( 1 ) 过程 间分析:( 2 ) 无穷域状态模型;( 3 ) 检测算法具有较高的检出率。 1 2 1 2 动态检测方法 1 9 8 8 年b a r t o np m i l l e r 等人开发了一种f u z z i n gt e s t ( 随机测试) 工具1 2 , 对目标代码进行“黑箱测试。这是一种盲目性策略的检测方法,虽然可以检出 漏洞,但是效率低,结果也不完备。1 9 9 8 年c a l v i nc o w a l l 等人为保护程序不受溢 出的攻击,提出了编译工具s t a c k g u a r d 2 2 - 2 4 ,其利用在程序堆栈上加入保护标志 检查栈溢出的攻击,但攻击者可以预测保护标志使检测失效。2 0 0 0 年,c o w a i l 又 针对s m c k g u a r d 的问题提出了s t a c k s l l i e l d l 2 5 】,将函数返回地址等关键数据做备份, 待返回的时候再拷贝回来,以此防止溢出造成的危害。该方法对栈保护较好,对 堆溢出很难发现【2 6 ,2 7 】。2 0 0 2 年,g e o r g ec n e c u l a 等人根据类型安全语言的保护 机制,开发了c c u r e d t 2 8 ,2 9 1 。其将类型不安全的c 代码转换成一种可以检查内存 边界的类型安全代码。但这种方法需要程序员修改源代码以辅助工具运行。2 0 0 4 年r u w a s e 和l a m 更进一步开发了无需代码转换操作的c 语言边界错误检测器 c r e d 【3 。其局限性在于对库函数的调用和指针别名没有检查能力。同年n i c h o l a s n e t h e r c o t e 在l i n u x 平台上设计开发了v a l 研n d 【3 1 3 3 1 ,这是一种利用模拟x 8 6 处 第3 页 国防科学技术大学研究生院硕士学位论文 理器的程序调试器。利用内存检查插件通过监控内存操作的系统调h j 和指针操作 判断内存错误,例如内存泄漏、未初始化等。该工具只能针对l i n u x 下的应用程序 进行检测,对其他操作系统下的程序无效。2 0 0 5 年末,s t a n f o r d 大学的s o r a vb a n s a l 在他的一篇技术报告中提出利用b o c h s 模拟器检测操作系统内存泄漏【3 4 ,3 5 】的方 法,利用内存类型信息来捕获危险的指针操作。这种方法能够检测的溢出种类有 限,近年来也没有新进展。2 0 0 6 年基于v a l g r i n d 框架,g o o g l e 的w i l ld r e w r y 和 t a v i so r m a n d y 提出了选择性测试工具f l a y e r 3 6 】,利用修改指定跳转条件集中的随 机测试关键代码段的溢出问题。2 0 0 7 年,s t a n f o r d 的d a w s o ne n g l e r 所领导的小组 提出了符号化执行的测试方法d r l ,其利用源代码符号化执行归纳出所有路径的执 行条件,选取可能存在问题的代码段求解条件,利用产生的全部解集集中测试溢 出问题。这种检测技术使溢出检测向全自动检测的方向迈出了重要一步,但这种 方法未能摆脱对源代码的依赖。 动态方法需要被测目标编译成可执行程序或对软件的发布版本直接检测,同 时程序运行时的输入也须一并提供。动态分析方法由于程序执行,静态时无法确 定的量在动态方法中都可以得到确认。而且有真实输入作为信息源,判断更加精 确,因此不会发生误报。总结起来动态方法的特点主要有三个:( 1 ) 信息确定、种 类丰富;( 2 ) 以输入数据为导向;( 3 ) 低误报。 1 2 1 3 动态与静态检测方法对比 表1 1 动态与静态检测方法比较 特点动态方法静态方法 能否确定溢出漏洞的位置不能能 能否在开发早期进行不可可以 是否需要输入 是否 是否需要源代码部分需要需要 是否与编程语言相关 否 是 检测精度 两一般 误报数量低向 静态方法检查程序源代码,可以在程序开发的任何时候进行;动态方法需要 程序编译成可执行的版本才能测试。静态方法发现溢出可以报告具体的代码段, 但现有动态方法检测出溢出后无法发现漏洞位置和原因。静态方法在检测器的支 持下就可以对程序检测,无须输入但检测器与代码相关;而动态方法必须执行环 境( 操作系统和硬件) 和输入,对运行在其中的程序没有任何要求。静态方法模 拟程序执行时的抽象状态,因此检测精度较低,误报率较高;而动态方法能够获 第4 页 国防科学技术大学研究生院硕士学位论文 得程序执行时的具体状态信息,所以精度高,同时误报率低。表1 1 比较了各种方 法的区别。 1 2 2 动态检测方法存在的主要问题 从早期研究者朴素的“黑箱测试 思想开始,动态方法就被寄予极大的关注, 已研制了出多种随机测试方法和工具。随着程序代码量越来越大,在程序编译后 再进行测试代价过高,静态方法应运而生。静态方法以其无须输入数据,检测速 度快,边编写代码边检测漏洞的优势受到研究者们的热烈追捧。但是程序本身逻 辑的复杂性同样困扰着静态方法,抽象模型信息的不确定性导致误报和漏报的现 象比较明显,人工确认此类错误变得越来越困难。随着硬件性能不断发展,人们 又开始关注动态方法。其检测的精确性和结果的可信性令动态方法又开始逐渐被 人追捧。不仅如此,动态检测方法除了适用于缓冲区溢出问题,也可以推广到其 他安全问题的检测,获得很多研究副产品。近年来,s t a n f o r d 、m i t 、g o o g l e 、m i c r o s o f t 等著名学府以及公司巨头都展开了动态检测方法的研究,如s t a n f o r d 的e x e , g o o g l e 的f l a y e r 等。同样,近年来o s d i 、s o s p 、p l d i 、n d s s 和i e e es e c u r i t ya n d p r i v a c y 等国际高水平学术会议和期刊都有研究动态方法的文章发表。 虽然研究者已在缓冲区溢出漏洞动态检测中取得了丰硕的成果,但仍然面临 一些亟待解决的问题。主要有, 1 ) 对源码依赖性仍较高现有动态方法没有完全摆脱源代码需求,某些号称 可执行代码的检测也需要编译时附加调试信息。 2 ) 自动化程度不高对输入的依赖是动态方法的特点,因此需要依靠人工的 方式指导输入数据构造。另外数据的注入、漏洞成因、定位都需要人工参与。 3 ) 漏洞位置和成因不明动态方法依靠捕捉程序异常或检测关键数据是否被 修改进行溢出判断,所以判断之时溢出已经发生,无法定位漏洞以及给出原因。 4 ) 代码覆盖率难以保证动态方法的代码覆盖情况取决于输入数据,输入数 据往往是随机生成的,没有指导性。所以测试的全面性难以得到保证。 1 3 论文研究目标及内容 本文以现有缓冲区溢出漏洞检测方法中存在的问题和不足为切入点,以动态 检测方法为基本途径,研究在没有程序源代码的情况下如何直接针对可执行代码 进行溢出漏洞检查,并使检测方法不仅适用于一般应用程序,还可以深入系统底 层,同时探索动态方法自动化检测的技术路径。 基于以上研究目标,本文提出利用全系统模拟器作为动态执行环境,通过追 踪输入数据处理路径检测溢出漏洞的有效技术方法。该检测方法的实体系统被称 第5 页 国防科学技术大学研究生院硕十学位论文 为s i m d d b o ( s i m u l a t o ro fd y n a m i cd e t e c t i o nf o rb u f t e ro v e r f l o w ) 。 该方法的主要特点是: 1 ) 摆脱源代码:直接面向可执行程序代码( 二进制代码) ,检测对象是软件 的发布版本或源代码的编译版本。 2 ) 适用性更强:引入模拟器使其能以硬件视角检查系统运行情况,不仅可以 面向应用程序,更可以检测操作系统的溢出漏洞。 3 ) 覆盖性更好:通过污点传播导向的多路径遍历进一步提高漏洞检出率,使 得单一输入下可以自动进行一定范围的多路径代码测试,减小输入依赖。 4 ) 解决定位问题:通过路径追踪反向定位漏洞,并归纳条件表达构造约束, 解决动态方法漏洞定位和溢出条件不明的问题。 5 1 保持动态优势:采用动态的思想继承动态的优点,保证低误报和较高的检 测精度。 针对基于模拟器的缓冲区溢出漏洞动态检测技术的研究,本文的工作包括以 下五部分: 1 ) 针对当前动态方法执行环境控制力较弱,信息获取不充分的问题,提出了 基于全系统模拟器的动态检测环境构建方法并重点研究了模拟器的控制技术。 执行环境是动态方法与静态方法的最大区别,对执行环境的控制能力直接影 响到检测的效果。现有方法多基于本地或虚拟机系统限制多,控制力弱。为此引 入了模拟器作为动态执行环境,并研究模拟器控制技术。该技术改善了被测对象 的运行环境,扩大了对执行环境的控制力,为漏洞检测提供了良好的基础平台。 2 1 针对可执行代码抽象难读的问题以及动态追踪对指令分析的需求,提出指 令的动态解释方法。 直接面对可执行代码进行追踪检测非常困难,必须进行代码转换。代码转换 是连接执行环境和漏洞检测逻辑的桥梁。为此研究指令解释技术,将可执行代码 动态转换成形式统一的、结构化的、便于追踪的指令表示形式。该技术不仅改善 了后端路径追踪逻辑的目标指令系统,同时也便于前端执行环境的多平台扩展。 3 1 针对当前动态方法在漏洞定位与代码覆盖率问题上存在的不足,提出基于 动态污点传播思想的动态路径追踪方法。 漏洞定位与代码覆盖率是漏洞检测的关键,定位决定能否发现溢出漏洞的根 源,代码覆盖率则直接关系检测是否全面。现有动态方法在这两个方面存在问题 和不足。为此针对现有动态方法不跟踪输入只保护关键系统数据的缺点,利用动 态污点传播思想研究执行路径追踪技术,解决了溢出的判定、定位和多路径搜索 漏洞的问题。 4 1 详细讨论缓冲区溢出漏洞动态检测方法原型系统s i m d d b o 的设计与实现 第6 页 国防科学技术大学研究生院硕十学位论文 技术;完成了原型系统的实现。 5 ) 对检测系统进行基准测试和实例测试,测试结果符合预期设计需求,实现 正确。初步尝试未知漏洞的检测,发现b a i d uh i 中存在的新漏洞,并获得b u g t r a q 确认。 本文的研究工作受到国家8 6 3 高技术研究发展计划项目( n o 2 0 0 7 a a 0 1 2 4 6 1 ) 的支持。 1 4 本文结构 全文共分为六章。 第一章介绍研究背景,对现有检测方法进行探讨和总结,针对当前技术方法 的不足提出了基于模拟器的动态检测方法,并概要介绍了本文的研究内容。 第二章详细讨论缓冲区溢出攻击的原理和相关技术,并对已有的典型缓冲区 溢出漏洞动态检测方法进行分析和研究。 第三章详细分析了基于模拟器的缓冲区溢出漏洞动态检测的关键技术。其中 包括模拟器控制技术,指令动态解释技术以及动态路径追踪技术。 第四章论述了s i m d d b o 原型系统各部分关键功能的设计和实现技术,简要 介绍了系统的实现情况与基本特性。 第五章简述系统实验环境和测试用例,对系统的有效性和性能进行了测试, 初步尝试了应用程序中新漏洞的挖掘。 第六章对全文工作进行总结,并对未来工作进行展望。 第7 页 国防科学技术大学研究生院硕十学位论文 第二章缓冲区溢出漏洞及动态检测技术研究 当今,针对缓冲区溢出漏洞的攻击行为屡见不鲜,针对缓冲区溢出漏洞的动 态检测技术发展也十分迅猛。研究工作者已提出或研制了多种缓冲区溢出漏洞的 检测方法和工具。本章对缓冲区溢出攻击的原理进行分析,并针对动态方法进行 了分类整理、分析及比较。 本章第一节介绍溢出攻击的基本原理,第二节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论