哪些主要的安全措施可以抵消缓冲区溢出?
答案 0 :(得分:0)
绝对。检查操作系统中修复的错误,您将看到修补程序缓冲区溢出。有关示例,请参阅http://support.apple.com/kb/HT5130。
答案 1 :(得分:0)
操作系统和编译器在尝试防止缓冲区溢出方面做了很多工作,但它们肯定仍然存在问题。
避免缓冲区溢出的最简单方法是避免使用像C这样的语言来强制您首先管理缓冲区(及其大小)。如果您很可能无法避免使用类C语言,那么有很多方法可以帮助缓解潜在的问题:
这是一个开始:http://en.wikipedia.org/wiki/Buffer_overflow_protection
答案 2 :(得分:0)
缓冲区溢出仍然是打入本机应用程序的常用方法,尽管我怀疑由于ASLR和DEP以及编译器保护机制等操作系统保护机制,实际上在实际攻击中实际利用它们的人数仍然很低例如GS cookies(堆栈金丝雀)。
现在,堆栈溢出通常无法被利用,因为现代编译器的进步意味着在函数执行期间检测到大多数(但不是全部)堆栈溢出,导致进程崩溃而不是让攻击者执行。
即使在现代操作系统上,堆溢出也是非常容易被利用的,并且必须始终被视为关键。
不幸的是,对于任何给定的特定堆栈或堆溢出是否实际上是可利用的,没有硬性规定,但从防御的角度来看,所有编译器和操作系统缓解都只是 - 缓解。它们会降低攻击者的速度而不是阻止它们,如果你是安全研究员,你需要报告堆栈溢出和堆溢出是关键问题,作为开发人员,你需要立即修复它们。