ASLR(Address space layout randomization)地址空间布局随机化
/*********************************************************************
* Author : Samson
* Date : 12/07/2014
* Test platform:
* 3.13.0-24-generic
* GNU bash, 4.3.11(1)-release
* *******************************************************************/
ASLR:
Address space layout randomization:地址空间布局随机化,是参与保护缓冲区溢出问题的一个计算机安全技术。是为了防止攻击者在内存中能够可靠地对跳转到特定利用函数。ASLR包括随机排列程序的关键数据区域的位置,包括可执行的部分、堆、栈及共享库的位置。
历史:
在1997年,Memco软件公司实现了一个有限的堆栈随机化作为SeOS访问控制产品的一部分。
Linux Pax项目第一次创建了ASLR这个术语。ASLR的第一次设计实现是在2001年7月。从2002年10月开始提供内核栈随机化的实现。ASLR相对于其他实现方式提供了更多的熵。
作用:
ASLR通过制造更多让攻击者预测目标地址的困难以阻碍一些类型的安装攻击。例如:攻击者试图执行返回到libc的攻击必须要找到要执行的代码,而其他攻击者试图执行shellcode注入栈上则必须首先到栈。在这两种情况下,系统将模糊攻击者相关的存储器地址。这些值被猜中,并且错误的猜测由于应用程序崩溃通常是不可恢复的。
有效性
地址空间布局随机化是基于攻击者猜测随机化空间位置的可能性降低。安全是通过增加搜索空间的方式来实现的。因此,ASLR提供更多的熵存在于随机偏移中时是更有效的。熵增加或许提高了其随机出现虚拟内存区域的空间量或减少了其随机发生的时期。该期间通常被实现尽可能小,因此,大多数系统必须增加VMA空间随机化。
要打败随机化,攻击者必须成功猜出所有他们想要攻击的区域的位置。为数据区,如堆和栈,定制代码或者有用的数据可以被加载,一个以上的状态可以通过使用NOP滑动代码或数据的重复拷贝被攻击。如果一个区域被分配到少数值中的一个将被允许攻击成功。与此相反,代码区域例如:基础库,主要的可执行的需要准确地发现。通常这些区域被混合,例如堆栈桢被注入到栈和动态库中。
英文原文地址:
http://en.wikipedia.org/wiki/Address_space_layout_randomization#Linux
ps:
GNU Linux中关闭ASLR的方法:
disable ASLR:
echo 0 > /proc/sys/kernel/randomize_va_space
cat /proc/sys/kernel/randomize_va_space
ASLR(Address space layout randomization)地址空间布局随机化的更多相关文章
- Address space layout randomization
Address space layout randomization (ASLR) is a computer security technique involved in preventing ex ...
- Method of address space layout randomization for windows operating systems
A system and method for address space layout randomization ("ASLR") for a Windows operatin ...
- Method for address space layout randomization in execute-in-place code
The present application relates generally to laying out address space for execute-in-place code and, ...
- System and method for critical address space protection in a hypervisor environment
A system and method in one embodiment includes modules for detecting an access attempt to a critical ...
- ARM64 Linux kernel virtual address space
墙外通道:http://thinkiii.blogspot.com/2014/02/arm64-linux-kernel-virtual-address-space.html Now let's ta ...
- ARM32 Linux kernel virtual address space
http://thinkiii.blogspot.jp/2014/02/arm32-linux-kernel-virtual-address-space.html The 32-bit ARM C ...
- Memory Layout (Virtual address space of a C process)
Memory Layout (Virtual address space of a C process) 分类: C语言基础2012-12-06 23:16 2174人阅读 评论(0) 收藏 举报 f ...
- 为什么地址空间分配粒度为64K?Why is address space allocation granularity 64K?
您可能想知道为什么VirtualAlloc在64K边界分配内存,即使页面粒度为4K. 你有Alpha AXP处理器,感谢你. 在Alpha AXP上,没有“加载32位整数”指令.要加载32位整数,实际 ...
- goroutine 分析 协程的调度和执行顺序 并发写 run in the same address space 内存地址 闭包 存在两种并发 确定性 非确定性的 Go 的协程和通道理所当然的支持确定性的并发方式(
package main import ( "fmt" "runtime" "sync" ) const N = 26 func main( ...
随机推荐
- 时间插件,js格式化,js某月天数,js某月最后一天日期
//时间格式化 Date.prototype.format = function(fmt) { var o = { "M+": this.getMonth() + 1, //月份 ...
- 大家好 这个事我的BLOG 站点 欢迎大家 訪问和公布文章技术的 和评论 交流技术使用
地址 http://microlmj.gotoip3.com/blog/article!showAllArticleForPageTest.action ssh+mysql+java+tomcat+b ...
- [Vue @Component] Define Props on a Vue Class with vue-property-decorator
While traditional Vue components require a data function which returns an object and a method object ...
- iOS中的成员变量,实例变量,属性变量
在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyV ...
- Project Euler:Problem 42 Coded triangle numbers
The nth term of the sequence of triangle numbers is given by, tn = ½n(n+1); so the first ten triangl ...
- leetcode 217 Contains Duplicate 数组中是否有反复的数字
Contains Duplicate Total Accepted: 26477 Total Submissions: 73478 My Submissions Given an array o ...
- Codeforces Round #319 (Div. 1)C. Points on Plane 分块思想
C. Points on Plane On a pl ...
- Selenium在Jenkins中的配置
// Goals and options -Dmode="" -DuseGrid="true" -Dhub=${Hub} -DbrowserType=${Br ...
- Nginx网站用Let’sEncrypt证书开HTTPS
- MAC地址 初识
MAC地址 即物理地址/硬件地址 地址长度为48位,6字节. 格式为:00-23-5A-15-99-42 一个网卡对应一个MAC地址(比如笔记本,有线网卡有一个MAC地址,无线网卡也有一个MAC地址) ...