缓存溢出(Buffer overflow)

缓存溢出(Buffer overflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据)从而破坏程序运行并取得程序乃至系统的控制权。

缓存溢出原指当某个数据超过了处理程序限制的范围时,程序出现的异常操作。造成此现象的原因有:

  • 存在缺陷的程序设计。
  • 尤其是C语言,不像其他一些高级语言会自动进行数组或者指针的边界检查,增加溢出风险。
  • C语言中的C标准库还具有相当一些非常危险的操作函数,使用不当也为溢出创造条件。

后因黑客在Unix的内核发现:通过缓存溢出可以获得系统的最高等级权限,而成为黑客的攻击手段之一,同时有人发现相同的问题也会出现在Windows操作系统上,以致其成为黑客最为常用的攻击手段,蠕虫病毒利用操作系统高危漏洞进行的破坏与大规模传播均是利用此技术。比较知名的蠕虫病毒冲击波蠕虫就基于Windows操作系统的缓存溢出漏洞。

黑客最新的应用是在对SONY的掌上游戏机PSP 3000的破解,通过特殊的溢出图片,PSP可以运行非官方的程序与游戏。同样在诺基亚智能手机操作系统Symbian OS中发现漏洞用户可以突破限制运行需要DRM权限或File system权限等系统权限的应用程序。

缓存溢出攻击从理论上来讲可以用于攻击任何有缺陷不完美的程序,包括对杀毒软件防火墙等安全产品的攻击以及对银行程序的攻击。即便是嵌入式系统也可能被攻击,例如PSP智能手机等。

在部分情况下,当一般程序(除了驱动和操作系统内核)发生此类问题时,现代的C++运行时库通常会终止程序的执行。

操作系统层级的保护

目前OpenBSDLinuxWindowsMac OS等操作系统具有 buffer overflow protection(缓存溢出保护/存储器位置重新定向) 的功能,在某种程度上可以保护操作系统,但仍还是有办法让溢出的代码到正确的位置上。

其是作原理是:存储器跟进程在memory中受到保护。内对外的access memory对象位置会被核心(调度程序)随机定向,使其无法正确溢出。

参看


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值