【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%以上都是緩衝區溢位,其中最著名的例子是2023年利用fingerd漏洞的蠕蟲。而緩衝區溢位中,最為危險的是堆疊溢位,因為入侵者可以利用堆疊溢位,在函式返回時改變返回程式的位址,讓其跳轉到任意位址,帶來的危害一種是程式崩潰導致拒絕服務,另外一種就是跳轉並且執行一段惡意**,比如得到shell,然後為所欲為。
歷史上最著名的緩衝區溢位攻擊可能要算是2023年11月2日的morris worm所攜帶的攻擊**了。這個網際網路蠕蟲利用了fingerd程式的緩衝區溢位漏洞,給使用者帶來了很大危害。此後,越來越多的緩衝區溢位漏洞被發現。從bind、wu-ftpd、telnetd、apache等常用服務程式,到microsoft、oracle等軟體廠商提供的應用程式,都存在著似乎永遠也彌補不完的緩衝區溢位漏洞。
圖1 緩衝區溢位攻擊示意
3、應用aslr後的乙個簡單對比例子
下面使用乙個比較典型的例子來顯示使用aslr前後的效果:
c源**:
Android技巧 防崩潰處理
簡單介紹 程式中,可以捕捉到的異常,通常使用try.catch.finally來解決,但還存在一些我們沒有捕捉到的異常,例如,使用控制項不繫結,變數未初始化等,而捕捉這些由於疏忽而產生的異常則使用 uncaughtexceptionhandler物件來實現。常見的異常奔潰帶來的處理步驟 1 將錯誤異...
Android開發中清理webView快取實現
最近負責了個新專案,跟webview相關。可能很多同學不知道機頂盒是什麼?到這就好,不用再深究了,不然話題就跑偏了。webview cache 快取清除 關於android之webview載入網頁快取和清除問題 結合自己實際中的乙個情況,最終下面是我本地的乙個清除webview快取的 實現,如下 t...
如何處理Android中的防緩衝區溢位技術
51cto專稿 本文將具體介紹android中的防緩衝區溢位技術的來龍去脈。1 什麼是aslr?aslr address space layout randomization 是一種針對緩衝區溢位的安全保護技術,通過對堆 棧 共享庫對映等線性區布局的隨機化。通過新增攻擊者預測目的位址的難度。防止攻擊...