b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

原理分析与缓冲区溢出攻击的预防(2)

电脑杂谈  发布时间:2020-05-08 15:18:44  来源:网络整理

为了保持程序兼容性,不可能使所有程序数据段都无法执行. 但是可以设置为堆栈数据段不可执行,从而可以保证程序的兼容性. Linux和Solaris在这方面都发布了内核补丁. 因为几乎没有合法程序将代码存储在堆栈上,所以这种方法不会引起任何兼容性问题. 除了Linux中的两种特殊情况外,此时必须将可执行代码放置在堆栈上: Linux至. 进程堆栈释放代码然后引发一个中断,以在堆栈上执行该代码以将Unix信号发送给该进程. 非执行缓冲区修补程序允许缓冲区在发送信号时可执行. 研究发现,gcc将可执行代码放在堆栈区域中以供重用. 但是,关闭此功能不会引起任何问题,并且似乎只有某些功能不可用. 非执行堆栈保护可以有效地处理将代码嵌入自动变量中的缓冲区溢出攻击,但对其他形式的攻击没有影响. 通过引用驻留程序的指针,可以跳过此保护. 其他攻击可以使用将代码插入到堆或静态数据段中来跳过保护. 这种方法有效地防止了许多缓冲区溢出攻击,但是攻击者不必植入攻击代码来实现缓冲区溢出攻击,因此该方法仍然存在许多缺陷. 使用编译器的数组边界检查来实现缓冲区保护数组边界检查可以防止所有缓冲区溢出和攻击.

这是因为只要阵列不能溢出,就不会讨论溢出攻击. 为了实现阵列边界检查,应检查阵列上的所有读取和写入操作,以确保阵列上的操作在正确的范围内. 最直接的方法是检查所有数组操作,但是通常可以使用一些优化技术来减少检查次数. 当前有几种检查方法: Kelly: C数组边界检查RichardJones和Paul Kelly开发了一个gcc修补程序,以实现C程序的完整数组边界检查. 由于指针的含义没有改变,因此编译后的程序与其他gcc模块具有良好的兼容性. 此内. 当然,性能代价是巨大的: 对于频繁使用指针(例如矢量乘法)的程序,由于频繁使用指针,它的速度将降低30倍. 这个编译器还很不成熟. 一些复杂的程序无法编译和执行. 由Compaq为AlphaCPU开发的C编译器支持有限的边界检查(使用check_bounds参数). 仅检查显式数组引用,例如将检查“ a [3]”,但不检查“ *(a + 3)”. 由于所有C数组在传递时都是通过指针传递的,因此不会检查传递给函数的数组.

溢出攻击_缓冲区溢出攻击_堆溢出攻击怎么办

危险的库函数,例如strcpy,即使指定了边界检查,也不会在编译时执行边界检查. 因为在C中频繁使用指针进行数组操作和传输,所以这种限制非常严重. 通常,此边界检查用于检查程序,并且不能保证不会发生缓冲区溢出. Purify是用于在调试C程序时查看内存使用情况的工具. Purify使用“目标代码插入”技术来检查所有内存访问. 通过使用Purify连接工具进行连接,可以在执行可执行代码时确保数组的所有合法性. 由此造成的性能损失将下降3-5倍. 所有缓冲区溢出漏洞都源于C语言缺乏类型安全性. 如果只允许执行类型安全的操作,则不可能对变量强制执行操作. 如果您是新手,则可以建议使用类型安全的语言,例如Java. 但是作为Java执行平台的Java虚拟机是C程序,因此攻击JVM的一种方法是使JVM的缓冲区溢出. 这种方法使缓冲区溢出成为不可能,从而完全消除了缓冲区溢出的威胁,但是相对昂贵. 程序指针失败之前的完整性检查. 程序指针完整性检查与边界检查略有不同. 程序指针完整性检查会在引用程序指针之前检测到其更改. 因此,即使攻击者成功更改了程序的指针,该指针也不会被使用,因为系统会提前检测到指针的更改.

与数组边界检查相比,此方法不能解决所有缓冲区溢出问题;使用其他缓冲区溢出攻击方法可以避免这种检测. 但是此方法在性能上具有很大的优势,并且非常兼容,到目前为止,只有一小部分使用非指针变量的攻击可以逃脱对指针保护的检测. 缓冲区溢出的最常见形式是记录攻击活动,然后将代码植入堆栈中. 1996年有许多此类攻击的记录. 代替执行堆栈和堆栈保护方法,可以有效地防御此类攻击. 非执行堆栈可以防御将代码放在堆栈上的所有攻击方法,而堆栈保护可以防御更改活动记录的所有方法. 这两种方法相互兼容,并且可以同时防御多种可能的攻击. 尽管这些工具可以帮助程序员开发更安全的程序,但是由于C语言的特性,这些工具无法找到所有缓冲区溢出漏洞. 因此,错误检测技术只能用于减少缓冲区溢出的可能性,而不能完全消除其存在. 除非程序员不能保证自己的程序是万无一失的,否则应使用以下各部分的内容来确保程序的可靠性. 其余的攻击基本上可以使用指针保护方法来防御,但是在某些特殊情况下,必须手动实现指针保护. 全自动指针保护要求向每个变量添加额外的字节,这使指针边界检查在某些情况下具有优势. 最有趣的是,缓冲区溢出漏洞-Morris蠕虫使用的方法目前无法用所有方法有效地防御,但由于其复杂性而很少使用.

摘要和Outlook缓冲区溢出攻击和防御涉及网络和信息安全的多个领域. 网络和操作系统平台的复杂性,应用服务软件的多样性和安全管理的复杂织在一起,不可避免地导致了缓冲区溢出问题的复杂性. 不同的缓冲区溢出漏洞具有不同的历史记录在此阶段,将攻击不同的系统平台和应用程序软件. 先前的研究基本上是对某种类型的漏洞的分析. 缺乏全面的研究. 本文介绍了缓冲区和堆栈的基本概念,研究并总结了缓冲区溢出的原理和过程,并介绍了一些常用的攻击方法. 它还总结了一些防御缓冲区溢出攻击的常用方法. 缓冲区溢出攻击和防御技术日新月异,各种网络渗透技术不断涌现. 随着人们安全意识的增强,利用漏洞变得越来越困难,所需的技术也越来越先进. 已经完成了一些工作,但是还有许多其他相关技术需要研究. 既然已经发现Windows内核溢出,我希望在以后的工作中,将在这些领域进行进一步的研究. 缓冲区的防御现在是一个大问题,我希望在未来的工作中取得一些突破. 参考CERT.CERT / CCstatistics. ,2005年2月. 赵有恩,周守军,缓冲区溢出攻击的分析和预防,NADLQ @ O2: --IRLLSSS2 [3] flashSky.Windows2003堆溢出及其利用技术的深入研究. [4] San. 入侵Windows CE Phrack Magazine,Phrack Magazine,06(63),2005.,2006-12-29.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-203074-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...