如何破坏代码之缓冲区溢出

日期: 2009-08-16 作者:Greg Hoglund and Gary McGraw翻译:Sean 来源:TechTarget中国 英文

缓冲区溢出就像是个给软件安全捣蛋的男孩。围绕缓冲区溢出的讨论一直无所不在的主要原因是:缓冲区溢出是在利用软件时向目标远程注入恶意代码的主要方法。虽然缓冲区溢出的技术在很多地方公布了,这篇文章仍然是必要的。缓冲区溢出攻击已经进化了多年,和其他的攻击手段一样,新的更强大的缓冲区溢出攻击已经出现。

即使不为别的,本章也将作为你更细致地掌握缓冲区溢出攻击的基础。   缓冲区溢出 101   缓冲区溢出攻击仍然享有恶意攻击之王的桂冠,并很可能在接下去的几年中一直如此。那些广泛存在的导致缓冲区溢出的漏洞是部分原因。只要这些漏洞存在,他们就将被利用。

那些仍使用已经过时的内存管理功能的语言,如C和C++,助长了……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

缓冲区溢出就像是个给软件安全捣蛋的男孩。围绕缓冲区溢出的讨论一直无所不在的主要原因是:缓冲区溢出是在利用软件时向目标远程注入恶意代码的主要方法。虽然缓冲区溢出的技术在很多地方公布了,这篇文章仍然是必要的。缓冲区溢出攻击已经进化了多年,和其他的攻击手段一样,新的更强大的缓冲区溢出攻击已经出现。即使不为别的,本章也将作为你更细致地掌握缓冲区溢出攻击的基础。

  缓冲区溢出 101

  缓冲区溢出攻击仍然享有恶意攻击之王的桂冠,并很可能在接下去的几年中一直如此。那些广泛存在的导致缓冲区溢出的漏洞是部分原因。只要这些漏洞存在,他们就将被利用。那些仍使用已经过时的内存管理功能的语言,如C和C++,助长了缓冲区溢出攻击。只要开发商仍然意识不到使用一些常用的数据库功能和系统调用的安全隐患,缓冲区溢出攻击仍将普遍存在。

  控制流和内存漏洞可以有多种形式。在谷歌上搜索关键词“缓冲区溢出”会返回176000个结果。显然,曾经神秘难解的技术现在都普及了。然而,大多数攻击者(和维护者)无论对缓冲区溢出以及对他们能造成的破坏都只有最基本的了解。大多数人对安全有点兴趣的人(那些阅读信息安全文件并出席各种安全保障会议和商业活动的人)都知道,缓冲区溢出将允许远程代码注入到系统,然后运行。结果适当蠕虫和其它类型的恶意移动代码有了明确的攻击系统的路径,并留下rootkit等后门。在许多情况下,通过缓冲区溢出进行远程代码注入是可行的,后门也可以很容易地安装。

  缓冲区溢出是一种内存使用上的漏洞。这个漏洞是和计算机科学的发展史密切相关的。内存曾经是一种昂贵的资源,因此,内存管理是至关重要的。在一些较旧的系统,如Voyager spacecraft,内存非常珍贵,所以一旦某些部分机器代码已不再需要,它们会马上从内存中被移除,以腾出空间作其他用途。这有力地促成了创建那些自释放的,只运行一次的程序。相反的,现代系统都有大容量的内存,几乎从来不用释放。今天大多数的连接到网络的软件系统都有可恶的内存问题,特别是当直接连接到不可靠的环境,如互联网时。内存已经很便宜,但低效的内存管理的代价是非常昂贵的。对内存的不良使用可能会导致程序内部崩溃(尤其是对控制流的引用),以及拒绝服务问题,甚至缓冲区溢出等这些远程攻击问题。

  讽刺的是,虽然业界已经知道如何避免缓冲区溢出问题;但是,这些年来,能够解决这个问题的知识,对阻止网络环境下猖獗的缓冲区溢出问题几乎没有发挥任何作用。事实上,在现有的技术下能够解决这个问题,但从社会学上来说我们还有相当长的路要走。主要问题是,绝大多数的开发商仍然没有意识到这个问题。很可能在未来五到十年的时间,各种类型的缓冲区溢出问题将继续困扰着软件业。

  最常见的缓冲区溢出——堆栈溢出——可以很容易地被程序员杜绝。其实一些更高深的内存崩溃的形式,比如堆溢出,才是更难避免的。一句话,在现代内存管理方案的现代编程语言被广泛使用之前,内存利用漏洞还将一直是攻击软件的主要源头。

翻译

Sean
Sean

相关推荐

  • APT团伙是如何利用Windows热修复的?

    高级持续性威胁(APT)团伙Platinum一直滥用Windows的热修复功能来攻击南亚和东南亚的政府组织和机构。这个APT团伙利用这个功能(Windows Server 2003中推出)将恶意代码注入到正在运行的进程中。那么,这些热修复攻击的工作原理是什么,我们应该如何应对?

  • 提升网络自防御 让安全更简单

    如今,教育信息化已跨入移动互联、云计算、大数据相融的“智慧教育”时代,网络已经成为了教育改革创新的利器。然而,黑客与恶意代码的攻击不会因为教育行业的特殊性而心生怜悯……

  • 如何检测flash堆喷射攻击?

    近来利用“use-after-free”IE零日漏洞的攻击似乎凸显了flash堆喷射(heap spray)检测的重要性。为什么攻击者利用这种技术?研究人员又应该如何检测堆喷射(heap spray)?

  • 视频讲座:如何防止关键数据泄露

    任何事情的发生都可能导致数据的泄漏,例如有针对性的攻击,丢失的移动终端,或者是错误配置的网络安全设备。