格式化字符串攻击检测算法

时间:2024-03-27 点赞:50826 浏览:102467 作者原创标记本站原创

本文是一篇大学学报论文范文,大学学报有关毕业论文格式,关于格式化字符串攻击检测算法相关函授毕业论文范文。适合大学学报及字符串及漏洞方面的的大学硕士和本科毕业论文以及大学学报相关开题报告范文和职称论文写作参考文献资料下载。

摘 要:格式化字符串漏洞能对网络系统造成巨大的危害.该文探讨了格式化字符串漏洞的成因与危害性,并对格式化字符串攻击检测算法进行了详细的阐述与分析.

关 键 词:格式化字符串;攻击检测;算法

中图分类号:TP393文献标识码:A文章编号:1009-3044(2013)22-5012-03

网络攻击者利用格式化字符串漏洞可以远程侵入网络上的计算机系统,偷看系统信息,甚至完全控制整个系统.1999年,TymmTwillman发现了第一个格式化字符串漏洞.之后,众多的格式化字符串漏洞接连被发现.截至2009年4月,CommonVulnerabitiesandExposures网站记录了关于格式化字符串漏洞大约500多个.虽然已经过去好几年了,但是,新的格式化字符串漏洞仍不断被发现.针对格式串漏洞,目前主要有Format-Guard、Libsafe和White-Listing等防范技术,这些技术对于已知的格式化字符串攻击具有很好的防范效果.该文针对格式化字符串漏洞的出现,探讨该漏洞出现时如何检测并做好防范工作.

1格式化字符串漏洞的成因及危害

格式化字符串攻击可以使程序崩溃或者执行恶意代码.这一问题的出现是因为对用户输入的内容没有加以过滤并加以甑别.这些数据的输入都是一些C函数执行格式化操作时的参数,如printf().恶意用户可以使用%s和%x等格式符,从堆栈或其他可能的内存位置中来获取数据,也可以使用格式符%n向任意地址写入任意的数据.它配合printf()函数或其他具有类似功能的函数就可以向存储在桟上的地址写入被格式化的字节数.一个经典的exploit是混合这些技术,然后用恶意的shellcode地址来覆盖某一链接库函数地址或者桟上的返回地址.其中填写的一些格式化参数主要是用于控制输出的字节数.而%x主要是用于从桟中弹出字节,直至格式化字符串自身的起始位置.伪造的格式化字符串的起始部分应该用意欲执行的恶意代码来覆盖,这个可以借助%n来完成.


格式化字符串漏洞的危害性非常大,它可以使网络进程崩溃,可以读取内存数据并向内存中写入数据.由于C语言无法保障格式串函数中存在合法的指针变量与格式串中的格式符相对应.如果我们使用过多的格式符,就有可能遇到许多无效地址.那么,操作系统就会发出sigse信号,因此,整个系统进程就会中断,而攻击者就有机会获取内存转储映像发件中得到数据,某些网络服务也就会被中止.还有,由于C语言不能检查对应变量是否真的存在,它不去理会对应的变量地址是用户数据还是系统数据.攻击者一旦能构造格式串,就能任意读取内存数据及任意地址.而攻击者可以利用一些技术来获取整个堆栈的内容.因为堆栈中储存了程序流局部的函数变量等重要信息,攻击者利用该信息能获取争取正确的共计代码的偏移量.另外,在格式化字符串函数中,格式符%n会将格式化字符串函数在遇到该格式符前已经打印的字符的个数写到响应整数指针所指的地址里,通过构造合适的字符串,就可以构造合适的数值并将之写到任意的地址中.

总而言之,C语言格式化字符不检查参数的类型和个数是产生格式化字符串漏洞的根本原因.

2格式化字符串攻击检测算法

2.1默认参数个数表算法

算法实现过程中可以将前两种结合起来使用,以第三种作为补充.

2.2参数检查算法

在默认参数个数表算法中定义的库函数中的动态默认参数个数与文件读取算法得到的用户自定义参数个数进行对比,如有出入则认为存在格式化字符串漏洞;一旦检测到漏洞,便要对可能存在的攻击行为进行检测.

针对攻击行为的检测,借鉴StackGuard检测缓冲区溢出漏洞攻击的方法.StackGuard是一种编译时使用的技术.它将一个特征值插入到桟中的函数返回地址之前.这样在攻击者进行缓冲溢出攻击时,溢出的字符串如果要改写函数返回地址就会通过改写特征值.在函数返回时,首先检查特征值是否被改写了,StackGuard的特征值方法只是在攻击者猜测特征值情况下有效.如果特征值被改写了,就说明攻击者在利用缓冲区溢出漏洞,那么我们就可以停止程序的运用,避免被攻击.

以上是格式化字符串攻击检测算法的重要组成部分,具体实现时,由于之间存在很多的互相调用,信号传输,以及嵌套.所以,、它们会作为一个整体出现.

格式化字符串攻击检测算法的时间复杂度主要由默认参数个数表算法的复杂度决定.判定函数类型之前需要遍历整个文件,复杂度为O(n),找到并取出第一个参数复杂度为O(1).对于较为简单的参数不定函数,只需判断参数个数,复杂度也为O(t);对于需解析va_list的vprintf()等函数,在参数类型确定的情况下,读取所有可变参数复杂度为O(t),参数类型不确定就不仅要读取所有参数,还需要自定义可能出现的参数类型,由于都是单次对文件操作,此复杂度依然为O(t).所以一般情况下总的时间复杂度是O(n+t),在最坏情况下时间复杂度亦为O(n+t).(n与文件总长有关,t与参数个数有关).

3结束语

格式化字符串漏洞和攻击算法的分析和设计是防御和攻击格式化字符串漏洞的有效办法.格式化字符串漏洞较为易于辨认,攻击行为更是具有很多共通的相似性,只要了解了足够的背景知识,掌握到一些相关知识和方法,检测算法的设计和具体措施也就能够很好地完成.

相关论文

DDoS攻击的检测算法

本文是一篇网络安全论文范文,网络安全类毕业论文开题报告范文,关于DDoS攻击的检测算法相关专科毕业论文范文。适合网络安全及计算机工程及计。

图像边缘检测算法

本文是一篇计算机工程论文范文,计算机工程相关本科论文开题报告,关于图像边缘检测算法相关毕业论文题目范文。适合计算机工程及计算机及参考。

基于视频的车速检测算法

此文是一篇模板论文范文,模板方面论文范文资料,与基于视频的车速检测算法相关电大毕业论文。适合不知如何写模板及车辆及车道方面的论文模板。

几种典型的图像边缘检测算法的比较

本文是一篇算子论文范文,关于算子相关毕业论文开题报告范文,关于几种典型的图像边缘检测算法的比较相关毕业论文模板范文。适合算子及图像及。

基于基扩展模型的能量检测算法

本文是一篇认知论文范文,关于认知自考毕业论文开题报告,关于基于基扩展模型的能量检测算法相关毕业论文开题报告范文。适合认知及频谱及参考。

海量数据的相似重复记录检测算法

本文是一篇属性论文范文,属性方面有关在职毕业论文开题报告,关于海量数据的相似重复记录检测算法相关开题报告范文。适合属性及数理统计及计。

基于多特征融合的挖掘机检测算法

本文是一篇特征论文范文,特征方面有关毕业论文范文,关于基于多特征融合的挖掘机检测算法相关毕业论文参考文献格式范文。适合特征及自动化及。

小波边缘检测算法的

本文是一篇算子论文范文,算子类有关毕业论文提纲,关于小波边缘检测算法的相关专科毕业论文范文。适合算子及图像及计算机工程方面的的大学硕。