• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

UNIX下的缓冲区溢出深度防御体系

发布: 2009-6-09 14:05 | 作者: 不详 | 来源: 测试时代采编 | 查看: 32次 | 进入软件测试论坛讨论

领测软件测试网

 当然Exec-shield无法防御跳转到低16M地址空间和return-to-libc的攻击,不过还是能阻止绝大多数把shellcode安置在数据段的攻击。

    http://redhat.com/~mingo/exec-shield/

---------------------------------
五、增强的缓冲区溢出保护及内核MAC
---------------------------------
◆OpenBSD security feature
    OpenBSD和Hardened Gentoo、Adamantix、SELinux都是属于默认安全等级非常高的操作系统。OpenBSD经过代码审计,漏洞非常少。同样他具有很多安全特性:
    *使用strlcpy()和strlcat()函数替换原有的危险函数
    *内存保护:W^X、只读数据段、页保护、mmap()随机映射、malloc()随机映射、atexit()及stdio保护、
    *特权分离
    *特权回收
    *BSD chroot jail
    *其他的很多特性
其中W^X有不少内容:stack、mmap随机映射,只读GOT/PLT/.ctor/.dtor等。虽然理论上OpenBSD无法阻止所有类型的攻击,但已经阻断了不少攻击手法。

◆PaX
PaX是个非常BT的东西,好像天生就是缓冲区溢出的死对头,他严厉的审视每一种攻击方式,予以阻断。
    *基于x86段式内存管理的数据段不可执行
    *基于页式内存管理的数据段的页不可执行
    *内核页只读{
        -Const结构只读
        -系统调用表只读
        -局部段描述符表(IDT)只读
        -全局段描述符表(GDT)只读
        -数据页只读
        -该特性不能与正常的LKM功能共存    }
    *完全的地址空间随机映射{
        -每个系统调用的内核栈随机映射
        -用户栈随机映射
        -ELF可执行映像随机映射
        -Brk()分配的heap随机映射
        -Mmap()管理的heap随机映射
        -动态链接库随机映射    }
    *还有诸如把动态链接库映射到0x00开始的低地址的其他特性
这里顺便提一下Phrack58上Nergal写过的<<The advanced return-into-lib(c) exploits >>,这篇大作里提到用伪造栈桢(Fakeframe)和dl-resolve()技术突破PaX若干保护的方法,这极有可能*nix应用层 exploit技术中最高级的技术,Nergal解决了几个问题:Stack/Heap/BSS不可执行、mmap随机映射,显然这种高级的技术仍然无法无条件的突破PaX,所以在一个运行完全版PaX的Linux上,你想发动缓冲区溢出可能是没有机会的!!!
PaX Team
http://pax.grsecurity.net

◆Grsecurity
    Grsec内含PaX(这个更BT??汗~),和Lids一样grsec支持内核MAC(Madatory Access Control,强制访问控制),拥有非常多的特性,详见http://grsecurity.net/features.php
www.grsecurity.net

------------------
六、硬件级别的保护
------------------
    X86 CPU上采用4GB平坦模式,数据段和代码段的线性地址是重叠的,页面只要可读就可以执行,所以上面提到的诸多内核补丁才会费尽心机设计了各种方法来使数据段不可执行。现在Alpha、PPC、PA-RISC、SPARC、SPARC64、AMD64、IA64都提供了页执行bit位。Intel及AMD 新增加的页执行比特位称为NX安全技术,Windows XP SP2及Linux Kernel 2.6都支持NX,虽然这种硬件级的页保护不如PaX那样强,但硬件级别的支持无疑大大增加了软件和操作系统的兼容性,能够使缓冲区溢出的防护得到普及。

----------
Conclusion
----------
    安全和易用性总是站在对立面上,以上提及的保护技术都会引起少量的性能损耗,设计者们已经从性能的角度优化了他们的作品。然而人们更关心的问题是兼容性,也许你会发现在那些运营级的BOX上根本看不到这些东西,是的,人们希望的另一种安全是不发生错误,即稳定的运行,使用这些额外的保护会给人造成心理不安,我相信随着NX的流行以及保护技术本身的发展这些问题都会得到解决。也许你经常会看到这样或那样的文章讲述如何突破缓冲区溢出保护的高级 exploit技术,其实很多内容只适合作为教学、或者技术本身还处在研究阶段,在实际的攻击中,使用高级的bypass技术通常需要满足一些条件,并不是单纯多花点力气增长了exploit代码的长度就能达到目的,在使用缓冲区溢出保护的系统上,攻击将变得非常困难,有些时候其实就是不可能,尤其是在远程无法精确得到必须的ELF符号地址的时候,很多技术都将变成纸上谈兵。
    使用类似PaX的补丁,+iptables规则,再结合内核MAC,想入侵得到shell几乎是不可能的,可惜偶没钱,不然拿个Linux box放到Internet上公测,让牛人们尽兴的玩玩,哈~
    在缓冲区溢出尚未成为历史的今天,暂且缅怀一下吧,这当然也不是什么悲观的论调,旧技术的消亡必然伴随着新技术的诞生,如果没有了Evil Hacking我们还坐在电脑前干什么呢?如果那样的话,我就和傻Billy去开个小超市,顺便告诉Adam,Why他们也别干了。。让那些做安全啥也不懂就会吹牛的人去干吧~~

PST,
Ph4nt0m Security Team
http://www.ph4nt0m.org
一群无拘无束的年轻人,虽然大多从事网络安全工作,却因为崇尚Black Hat而聚到一起。

文章来源于领测软件测试网 https://www.ltesting.net/

33/3<123

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网