Android中的防缓冲区溢出技术

  次阅读 作者:智能小宝 来源:互联网 2016-01-19 11:09 我要评论(0)

Android系统提供了非常严格的多层次的安全保护措施,包括代码。为了防止恶意用户采用恶意软件进行缓冲区溢出攻击或者进行 越狱 操作,自 Android 4.0版本之后,内核就引入了ASLR技术来对代码进行保护,

【51CTO专稿】本文将详细介绍Android中的防缓冲区溢出技术的来龙去脉。

1、什么是ASLR?

ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映 射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。通常情况下,黑客会利用某个特定 函数或库驻存在特定内存位置的这一事实,通过在操纵堆或其他内存错误时调用该函数来发动攻击。ASLR则能够避免这种情况,因为它能确保系统和应用程序的 代码每次被加载时不会出现在同一个存储位置。苹果的iOS系统自iOS 4.3以后就支持ASLR技术;虽然Comex在7月份发布的 iPhone越 狱 软件就已攻克这一防御措施。而Android已经在4.0中应用了ASLR技术。

据研究表明ASLR可以有效的降低缓冲区溢出攻击的成功率,如今Linux、FreeBSD、Windows等主流操作系统都已采用了该技术。

2、缓冲区溢出攻击原理

缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动 等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。

缓冲区溢出(图1)是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允 许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区 又被 称为"堆栈". 在各个操作进程之间,指令会被临时储存在"堆栈"当中,"堆栈"也会出现缓冲区溢出。

在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出 中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务, 另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。

历史上最著名的缓冲区溢出攻击可能要算是1988年11月2日的Morris Worm所携带的攻击代码了。这个因特网蠕虫利用了fingerd程 序的缓冲区溢出漏洞,给用户带来了很大危害。此后,越来越多的缓冲区溢出漏洞被发现。从bind、wu-ftpd、telnetd、apache等常用服 务程序,到Microsoft、Oracle等软件厂商提供的应用程序,都存在着似乎永远也弥补不完的缓冲区溢出漏洞。

图1缓冲区溢出攻击示意

3、应用ASLR后的一个简单对比例子

下面使用一个比较典型的例子来显示使用ASLR前后的效果:

C源代码:

#include <stdlib.h>

#include <unistd.h>

main()

{

char *i;

char buff[20];

i=malloc(20);

sleep(1000);

free(i);

}

#ps -aux|grep test

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html

aslr_test87310.00.01632332 pts/0S+18:490:00 ./test

aslr_test87660.00.02884748 pts/1R+18:490:00 grep test

aslr_test@aslr_test-laptop:~$ cat /proc/8731/maps

08048000-08049000 r-xp 00000000 08:01 2256782/home/aslr_test/Desktop/test

08049000-0804a000 rw-p 00000000 08:01 2256782/home/aslr_test/Desktop/test

0804a000-0806b000 rw-p 0804a000 00:00 0[heap]

b7e60000-b7e61000 rw-p b7e60000 00:00 0

b7e61000-b7f9c000 r-xp 00000000 08:01 12116/lib/tls/i686/cmov/libc-2.5.so

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...