【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 如何處理螢幕適配問題?
在安卓開發中,會經常遇到螢幕適配問題,下面總結一下,處理這問題的方法.解決方法 手機選擇 首先在專案開始時候,應該選擇什麼螢幕大小的手機,進行開發呢?用當前市場上主流螢幕的手機,比如 1280 720 專案後期 還需要 用不同解析度手機進行測試 比如 480 800 1920 1000 做法 在工程...
開發中返回,如何處理
不小心在開發過程中,得到了 null 以及的返回值,找了好長時間只找到了乙個關於的。由於要根據返回值進行判斷,做出必要反應,因此必須知道返回值所代表的具體字元,在得到 null 後利用isequal 和 null,null nil,nil比較後均得不到正確結果,弄得不知所措了,但是還是感覺像nil,...
如何處理SecureFX中的中文亂碼
分享給大家,也當作給自己記錄下來。首先,在securefx選單中選擇 options global options 然後,在 global options 視窗中,選擇 general configuration path 找到securefx配置檔案所在的路徑,並複製該路徑 接著,在電腦中開啟這個...