成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【專家專欄】Android中的防緩沖區(qū)溢出技術(shù)

原創(chuàng)
移動開發(fā) Android
Android系統(tǒng)提供了非常嚴(yán)格的多層次的安全保護(hù)措施,包括代碼。為了防止惡意用戶采用惡意軟件進(jìn)行緩沖區(qū)溢出攻擊或者進(jìn)行“越獄”操作,自Android 4.0版本之后,內(nèi)核就引入了ASLR技術(shù)來對代碼進(jìn)行保護(hù),

【51CTO專稿】本文將詳細(xì)介紹Android中的防緩沖區(qū)溢出技術(shù)的來龍去脈。

1、什么是ASLR?

ASLR(Address space layout randomization)是一種針對緩沖區(qū)溢出的安全保護(hù)技術(shù),通過對堆、棧、共享庫映射等線性區(qū)布局的隨機(jī)化,通過增加攻擊者預(yù)測目的地址的難度,防止攻擊者直接定位攻擊代碼位置,達(dá)到阻止溢出攻擊的目的。通常情況下,黑客會利用某個(gè)特定函數(shù)或庫駐存在特定內(nèi)存位置的這一事實(shí),通過在操縱堆或其他內(nèi)存錯(cuò)誤時(shí)調(diào)用該函數(shù)來發(fā)動攻擊。ASLR則能夠避免這種情況,因?yàn)樗艽_保系統(tǒng)和應(yīng)用程序的代碼每次被加載時(shí)不會出現(xiàn)在同一個(gè)存儲位置。蘋果的iOS系統(tǒng)自iOS 4.3以后就支持ASLR技術(shù);雖然Comex在7月份發(fā)布的“iPhone越獄”軟件就已攻克這一防御措施。而Android已經(jīng)在4.0中應(yīng)用了ASLR技術(shù)。

據(jù)研究表明ASLR可以有效的降低緩沖區(qū)溢出攻擊的成功率,如今Linux、FreeBSD、Windows等主流操作系統(tǒng)都已采用了該技術(shù)。

2、緩沖區(qū)溢出攻擊原理

緩沖區(qū)溢出是一種非常普遍、非常危險(xiǎn)的漏洞,在各種操作系統(tǒng)、應(yīng)用軟件中廣泛存在。利用緩沖區(qū)溢出攻擊,可以導(dǎo)致程序運(yùn)行失敗、系統(tǒng)宕機(jī)、重新啟動等后果。更為嚴(yán)重的是,可以利用它執(zhí)行非授權(quán)指令,甚至可以取得系統(tǒng)特權(quán),進(jìn)而進(jìn)行各種非法操作。

緩沖區(qū)溢出(圖1)是指當(dāng)計(jì)算機(jī)向緩沖區(qū)內(nèi)填充數(shù)據(jù)位數(shù)時(shí)超過了緩沖區(qū)本身的容量溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上,理想的情況是程序檢查數(shù)據(jù)長度并不允許輸入超過緩沖區(qū)長度的字符,但是絕大多數(shù)程序都會假設(shè)數(shù)據(jù)長度總是與所分配的儲存空間相匹配,這就為緩沖區(qū)溢出埋下隱患.操作系統(tǒng)所使用的緩沖區(qū) 又被稱為"堆棧". 在各個(gè)操作進(jìn)程之間,指令會被臨時(shí)儲存在"堆棧"當(dāng)中,"堆棧"也會出現(xiàn)緩沖區(qū)溢出。

在當(dāng)前網(wǎng)絡(luò)與分布式系統(tǒng)安全中,被廣泛利用的50%以上都是緩沖區(qū)溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而緩沖區(qū)溢出中,最為危險(xiǎn)的是堆棧溢出,因?yàn)槿肭终呖梢岳枚褩R绯?,在函?shù)返回時(shí)改變返回程序的地址,讓其跳轉(zhuǎn)到任意地址,帶來的危害一種是程序崩潰導(dǎo)致拒絕服務(wù),另外一種就是跳轉(zhuǎn)并且執(zhí)行一段惡意代碼,比如得到shell,然后為所欲為。

歷史上最著名的緩沖區(qū)溢出攻擊可能要算是1988年11月2日的Morris Worm所攜帶的攻擊代碼了。這個(gè)因特網(wǎng)蠕蟲利用了fingerd程序的緩沖區(qū)溢出漏洞,給用戶帶來了很大危害。此后,越來越多的緩沖區(qū)溢出漏洞被發(fā)現(xiàn)。從bind、wu-ftpd、telnetd、apache等常用服務(wù)程序,到Microsoft、Oracle等軟件廠商提供的應(yīng)用程序,都存在著似乎永遠(yuǎn)也彌補(bǔ)不完的緩沖區(qū)溢出漏洞。

緩沖區(qū)溢出攻擊示意

圖1  緩沖區(qū)溢出攻擊示意

3、應(yīng)用ASLR后的一個(gè)簡單對比例子

下面使用一個(gè)比較典型的例子來顯示使用ASLR前后的效果:

C源代碼:

  1. #include <stdlib.h>  
  2. #include <unistd.h>  
  3. main()  
  4.  {  
  5.      char *i;  
  6.      char buff[20];  
  7.     i=malloc(20);  
  8.      sleep(1000);  
  9.      free(i);  
  10.  }  
  11. #ps -aux|grep test  
  12.  Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html  
  13.  aslr_test        8731  0.0  0.0   1632   332 pts/0    S+   18:49   0:00 ./test  
  14.  aslr_test        8766  0.0  0.0   2884   748 pts/1    R+   18:49   0:00 grep test  
  15.  aslr_test@aslr_test-laptop:~$ cat /proc/8731/maps  
  16.  08048000-08049000 r-xp 00000000 08:01 2256782    /home/aslr_test/Desktop/test  
  17.  08049000-0804a000 rw-p 00000000 08:01 2256782    /home/aslr_test/Desktop/test  
  18.  0804a000-0806b000 rw-p 0804a000 00:00 0          [heap]  
  19.  b7e60000-b7e61000 rw-p b7e60000 00:00 0  
  20.  b7e61000-b7f9c000 r-xp 00000000 08:01 12116      /lib/tls/i686/cmov/libc-2.5.so  
  21.  b7f9c000-b7f9d000 r--p 0013b000 08:01 12116      /lib/tls/i686/cmov/libc-2.5.so  
  22.  b7f9d000-b7f9f000 rw-p 0013c000 08:01 12116      /lib/tls/i686/cmov/libc-2.5.so  
  23.  b7f9f000-b7fa2000 rw-p b7f9f000 00:00 0  
  24.  b7fae000-b7fb0000 rw-p b7fae000 00:00 0  
  25.  b7fb0000-b7fc9000 r-xp 00000000 08:01 12195      /lib/ld-2.5.so  
  26.  b7fc9000-b7fcb000 rw-p 00019000 08:01 12195      /lib/ld-2.5.so  
  27.  bfe86000-bfe9c000 rw-p bfe86000 00:00 0          [stack]  
  28.  ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]  
  29. #ps -aux|grep test  
  30.  Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html  
  31.  aslr_test        8781  0.0  0.0   1632   332 pts/0    S+   18:49   0:00 ./test  
  32.  aslr_test        8785  0.0  0.0   2884   748 pts/1    R+   18:49   0:00 grep test  
  33.  aslr_test@aslr_test-laptop:~$ cat /proc/8781/maps  
  34.  08048000-08049000 r-xp 00000000 08:01 2256782    /home/aslr_test/Desktop/test  
  35.  08049000-0804a000 rw-p 00000000 08:01 2256782    /home/aslr_test/Desktop/test  
  36.  0804a000-0806b000 rw-p 0804a000 00:00 0          [heap]  
  37.  b7e1e000-b7e1f000 rw-p b7e1e000 00:00 0  
  38.  b7e1f000-b7f5a000 r-xp 00000000 08:01 12116      /lib/tls/i686/cmov/libc-2.5.so  
  39.  b7f5a000-b7f5b000 r--p 0013b000 08:01 12116      /lib/tls/i686/cmov/libc-2.5.so  
  40.  b7f5b000-b7f5d000 rw-p 0013c000 08:01 12116      /lib/tls/i686/cmov/libc-2.5.so  
  41.  b7f5d000-b7f60000 rw-p b7f5d000 00:00 0  
  42.  b7f6c000-b7f6e000 rw-p b7f6c000 00:00 0  
  43.  b7f6e000-b7f87000 r-xp 00000000 08:01 12195      /lib/ld-2.5.so  
  44.  b7f87000-b7f89000 rw-p 00019000 08:01 12195      /lib/ld-2.5.so  
  45.  bfe23000-bfe39000 rw-p bfe23000 00:00 0          [stack]  
  46.  ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]  

通過兩次運(yùn)行后對比/proc下的進(jìn)程信息可以發(fā)現(xiàn)進(jìn)程棧和共享庫映射的地址空間都有了較大的變化,這使得以往通過esp值來猜測shellcode地址的成功率大大降低了。Phrack59期有一篇文章介紹過使用return-into-libc的方法突破ASLR保護(hù),不過存在著較大的條件限制,milw0rm的一篇文章也介紹了通過搜索linux-gate.so.1中的jmp %esp指令從而轉(zhuǎn)向執(zhí)行shellcode的方法,不過由于現(xiàn)在的編譯器將要恢復(fù)的esp值保存在棧中,因此也不能繼續(xù)使用??偟膩碚f,ASLR技術(shù)能夠很好地保證Android代碼及運(yùn)行安全。

責(zé)任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2017-01-09 17:03:34

2019-02-27 13:58:29

漏洞緩沖區(qū)溢出系統(tǒng)安全

2010-10-09 14:45:48

2014-07-30 11:21:46

2009-09-24 18:16:40

2018-01-26 14:52:43

2012-07-23 13:22:42

Intent Filt安全Android

2010-09-29 15:10:58

2010-12-27 10:21:21

2015-03-06 17:09:10

2010-09-08 15:43:18

2011-03-23 12:39:44

2012-07-16 10:21:48

Android進(jìn)程線程

2011-03-23 11:35:00

2015-09-02 09:01:03

2022-05-07 08:27:42

緩沖區(qū)溢出堆棧

2020-08-10 08:37:32

漏洞安全數(shù)據(jù)

2012-02-13 12:47:41

Android 4.0Launcher源碼分析

2012-02-02 15:56:48

Android 4.0Launcher源碼分析

2022-08-09 08:31:40

C -gets函數(shù)漏洞
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲精品日本 | 黄色片在线网站 | 欧美久久久久 | 亚洲狠狠丁香婷婷综合久久久 | av中文字幕网站 | 欧美日韩三区 | 国产欧美精品一区二区色综合 | 成人免费大片黄在线播放 | 精品亚洲一区二区三区 | 精产嫩模国品一二三区 | 九九精品久久久 | 婷婷丁香激情 | 99久久精品国产毛片 | 欧美精品一区二区三区在线 | 国产在线中文字幕 | 午夜精品久久久久久久 | av片免费| 黄网免费看| 久久免费视频观看 | 国产精品成人在线播放 | 久草热线 | 欧美成人一区二区三区 | 成人欧美一区二区 | 午夜视频网站 | 精品欧美色视频网站在线观看 | 欧美日韩精品久久久免费观看 | 国产在线视频一区二区董小宛性色 | 久久se精品一区精品二区 | 国产999精品久久久久久绿帽 | 亚洲成色777777在线观看影院 | 极品一区 | 午夜av毛片| 日本午夜精品一区二区三区 | 亚洲人成在线播放 | 色资源在线 | 日韩精品激情 | 亚州一区二区三区 | 久久久久久国产精品三区 | 亚洲精品一区二区三区 | 亚洲视频一区 | 日韩第一夜 |