增强Linux系统对缓冲区溢出攻击抵御能力的方法
2015-06-08吕洪艳
系统仿真技术 2015年2期
吕洪艳,李 荟
(东北石油大学计算机与信息技术学院,黑龙江大庆163318)
1 引 言
2 PaX功能简介
PaX是Linux系统核心的安全补丁包,它给系统带来了安全方面的新希望。PaX是Hardened Gentoo Linux系统的组成部分,它的部分特性也被OpenBSD操作系统采用。
由于操作系统并不知道一个应用程序的具体功能是什么,所以操作系统仅能从控制程序的执行环境出发来增强安全性。为了阻止有人利用现有操作系统和应用程序的弱点获取非正常的访问权利,操作系统必须阻止程序在执行的时候有以下情况发生:①引入和执行没有安全保证的代码;② 不按正常的顺序执行现有的代码;③按正常的顺序执行现有的代码但参数被修改。
PaX应用了两种方法来帮助Linux系统抵御大多数的缓冲区溢出攻击。一是为Linux提供了“缓冲区不可执行”特性,这会阻止攻击者执行插入到缓冲区中的攻击代码;二是“地址空间的随机布局”,如果一个应用程序满足PIE(Position Independent Executable)格式,则PaX会在各个段装入内存时,采用不规则的布局方案,以增加攻击者入侵的难度。
3 缓冲区不可执行
设置攻击代码所在的内存空间为“不可执行”,这样即使程序中的缓冲区被溢出也不能执行攻击代码,这种技术被称为不可执行缓冲区技术[3]。
在早期的Unix系统中,只允许程序在代码段中执行[4],但近来的Unix和Windows系统由于要实现更好的性能和功能,往往在数据段中动态地放入可执行代码,这也是缓冲区溢出问题的根源。由于绝大多数程序不会在栈段里放置可执行代码,所以通过禁止执行栈段内的代码可以提高系统的安全性。……
登录APP查看全文
