发布者认证信息(营业执照和身份证)未完善,请登录后完善信息登录
 终于知晓栈溢出攻击基本原理及防御方法培训教程 - 三农网
Hi,你好,欢迎来到三农网
  • 产品
  • 求购
  • 公司
  • 展会
  • 招商
  • 资讯
当前位置: 首页 » 资讯 » 新农村政策 找商家、找信息优选VIP,安全更可靠!
终于知晓栈溢出攻击基本原理及防御方法培训教程
发布日期:2021-12-11 11:36:15  浏览次数:16

在很多编程语言中,内存结构都被用来存储变量状态参数,通常情况下,它被称为“堆栈”。在以堆栈为重要功能的编程语言中,最著名的可能就是C和C++了。Forth也是一种因重视堆栈功能而出名的计算机编程语言。程序控制流也是由堆栈进行管理的。

对堆栈中的内存进行管理的时间需要非常小心,以保证存储在其中的数据将不会超过堆栈空间已分配变量的数量。如果数量超过了已分配的数量,更多的数据可以覆盖堆栈空间中的已有数据,从而导致其它变量和程序控制流出现错误。

如果一名恶意黑客能够故意分配给堆栈空间一个超过实际大小的变量,他或她就可以利用恶意数据对程序控制流产生实际上的影响。这种攻击行为就是我们经常说的“栈溢出攻击”,取决于软件被攻击漏洞的情况以及实际的运行环境,它甚至有可能造成操作系统崩溃的后果。

对于栈内存管理中的漏洞来说,栈溢出攻击是非常危险的。栈溢出攻击实际上属于缓冲区溢出攻击的一种,有些时间它还会被叫作堆栈缓冲区溢出攻击。软件中的很多漏洞实际上只能影响特定的部分,但内存管理漏洞常常可以“超过”对软件的限制,影响到系统的其他部分,将软件中一个小小的缺陷转变为对整个系统环境的巨大威胁。

很多软件解决方案都可以防止或检测出可能被利用的栈溢出漏洞。为了避免系统遭受栈溢出攻击,我们必须了解有两种类型的保护方式:不可执行堆栈和堆栈关键字(canaries)。每大类下面都包括若干子类。

Ø 不可执行堆栈:采用不可执行堆栈保护模式的解决方案有基于软件和硬件两钟。它们可以通过分类为可执行堆栈和不可执行堆栈的方法,来保证将不应该被运行的数据保存在不可执行堆栈中。这样的话,如果一名恶意黑客(或者程序中的一个缺陷)重写变量尾部的话,操作系统至少不会尝试执行恶意的数据。很多操作系统的变量管理都采用了不可执行堆栈模式,它们包括了FreeBSD的PG_NX、微软Windows数据执行保护(和“软件数据执行保护”不是一回事)、OpenBSD的W^X以及红帽Linux的Exec盾牌。

Ø 堆栈关键字(canaries):堆栈关键字包含了随机关键字、随机异或(XOR)关键字和终止关键字等子类。实际上,关键字的用途是对存储的数据进行验证。这样的话,当出现恶意数据时,它和正确数据之间的差别将会被识别出来,对漏洞的攻击就会被阻止。理论上来看,尽管在实现方式上可能会有不同的途径,但这都需要一名潜在攻击者直接访问堆栈以避免重写“关键字”。

关于这个话题,详细介绍的话可以写一本书。如果你愿意的话,也可以对它进行深入的研究。

VIP企业最新发布
全站最新发布
最新VIP企业
背景开启

三农网是一个开放的平台,信息全部为用户自行注册发布!并不代表本网赞同其观点或证实其内容的真实性,需用户自行承担信息的真实性,图片及其他资源的版权责任! 本站不承担此类作品侵权行为的直接责任及连带责任。

如若本网有任何内容侵犯您的权益,请联系 QQ: 1130861724

网站首页 | 实时热点 | 侵权删除 | 付款方式 | 联系方式 | 法律责任 | 网站地图 ©2022 zxb2b.com 三农网,中国大型农产品交易电商平台 鄂公网安备42018502006996 SITEMAPS | 鄂ICP备14015623号-20

返回顶部