全国电力技术协作网首页
CopyRight 2012-2014 DS文库版权所有
基于栈帧布局随机化的内存防护方案研究与实现
(0 次评价)270 人阅读0 次下载
安全管理 -15- 基于栈帧布局随机化的 内存防护方案研究与实现 国网电动汽车服务有限公司,李帅华 摘 要: 目前基于 C/C++开发的很多软件都面临着内存安全问题, 这也是计算机系统安全研究的一个重要问题。 自从 缓冲区溢出漏洞被发现和利用以来,内存漏洞利用方式呈现出变化多端、层出不穷的态势。在实际中,利用缓冲区溢出 实施攻击的事例也屡见不鲜。从围绕内存安全问题长期的攻防对抗发展过程来看,栈内存的安全问题尤为严重。主要是 因为栈内存呈线性有序的分布,布局固定单一、容易预测,从而给攻击者带来了攻击的机会。本文提出一种基于栈帧布 局随机化的内存防护方案,从打破栈内存线性可预测的布局开始,给栈帧内存的布局引入随机化特性,让攻击者难以预 测栈帧布局,难以利用程序漏洞来攻击或泄漏栈上的数据。该方案对代码重用攻击、栈上的数据攻击等攻击方式,都能 起到很好的缓解作用,提高了栈内存的安全性。 关键词:栈帧结构;随机化;内存漏洞防护;安全防护 随着社会的发展,计算机被广泛使用,计算机 系统的安全问题越来越引起人们的关注。一些漏洞 的发现和利用对计算机系统进行攻击和破坏,给计 算机安全带来了极大的威胁,同时对遭受到攻击的 个人、企业、国家等都带来了极其严重的损失和危害。 计算机系统安全又细分为多个领域,其中,传 统计算机的内存安全问题,长期以来,以及在以后 的很长一段时间内,都会是计算机系统安全问题当 中发生频繁、涉及面广、危害极大的一类安全问题。 传统计算机的内存安全问题由来已久,自缓冲区溢 出(Buffer Overflow)漏洞被发现和利用以来,各 类内存安全漏洞层出不穷。例如栈溢出(Stack Smashing) 漏洞、 格式化字符串漏洞 (Format String) 等。攻击方式也千变万化,如代码注入攻击(Code Injection Attack) 、代码重用攻击(Code-reuse Attacks)等攻击手段不可胜数。由于 C/C++等编程 语言的历史局限性,其底层实现缺乏内存安全检查, 给计算机系统引入了许多安全隐患。 在传统计算机的内存安全问题当中,栈帧内存 的安全问题一直以来都是重灾区。 经典的代码注入攻击,向栈帧内存缓冲区中注 入恶意代码,并覆盖当前函数调用栈中的函数返回 地址,使其指向恶意代码段,从而劫持程序的控制 流,使其执行注入的恶意代码,实现攻击的目的; 而代码重用攻击则通过覆盖栈内存中的函数返回地 址等,劫持程序的控制流,使其跳转到目标程序原 有的代码段上,通过组合不同的代码片段,来实现 想要的功能,达到攻击效果。实现这些攻击的关键 之一,在于如何在栈帧内存中正确定位到组织攻击 向量所需的关键数据的内存地址。因此,栈帧内存 线性布局的特性,在攻击者实现攻击的过程中起到 了很大的帮助作用。 栈帧内存的安全问题给计算机系统安全带来了 严重的威胁和损害,相应的安全防护方案也应运而 生。攻击者在利用栈帧缓冲区溢出漏洞时,会线性 覆盖函数调用栈的内存,对栈上的数据造成破坏。栈 溢出保护机制(SSP,Stack Smashing Protection) ,

打分:

0 星

用户评论:

关于我们 | 联系我们 | 版权声明 | 企业服务 | 媒体合作
备案号:京ICP备13025456号-2 | 客服电话:010-88892009 | 反馈建议:1565227076@qq.com