文/圖 阿里安全潘多拉實驗室 團控linux
編者按:團控,阿里安全潘多拉實驗室研究人員,該實驗室主要聚焦於移動安全領域,包括對iOS和Android系統安全的攻擊和防護技術研究。團控的主攻方向爲安卓系統級漏洞的攻防研究。在今年3月的BlackHat Asia和4月份的HITB上,團控受邀作了主題爲《內核空間鏡像攻擊》的演講。如下爲團控該研究主題的技術分析文章。
安全
1、前言dom
在現代操做系統中,系統運行的內核空間和應用程序的用戶空間相互隔離,以保證操做系統的穩定性。以運行Linux內核的ARM終端爲例,內核空間和用戶空間擁有不一樣的頁表信息,並保存於不一樣的硬件寄存器。另外,內核運行時的特權等級高於用戶態程序,不管什麼時候內核空間對普通程序是不可見的。然而,ARM處理器的某些特殊硬件特性可以打破這種保護,使得普通程序在用戶態可以直接訪問內核空間,直接打破內核空間與用戶空間的隔離,修改內核代碼,開啓上帝模式。下文以安卓8終端爲載體,介紹阿里安全潘多拉實驗室成員研究並提出的內核空間鏡像攻擊利用技巧。佈局
2、正文性能
2017年下,Google發佈了Android 8(奧利奧)系統。新系統在安全方面引入了多種內核安全加固特性,以對抗漏洞程序獲取手機的最高權限。其中,最爲重要的安全特性就是PAN(Privileged Access Never)和KASLR(Kernel Address Space Layout Randomization)。可見,利用一個漏洞來獲取衆多最新手機系統的最高權限是很是有挑戰性的。操作系統
在詳述內核空間鏡像攻擊以前,首先簡單介紹ReVent通用ROOT方案。該方案基於@林雷雷(Aliaba Group)發現的一個linux內核BUG。
3d
這個BUG存在與notification內核系統調用:
對象
[1]處計算文件名的長度,並根據長度在[2]分配相應的存儲buffer,在[3]拷貝文件名字符串。這個BUG在於,從[1]到[3]的代碼路徑上,此文件可以被重命名,致使[3]發生內核堆越界覆蓋。blog
經過巧妙的堆佈局並覆蓋適合的內核對象(eg: iovs),可以將其轉化爲在條件競爭下,幾乎任意內核地址的一次寫操做。堆佈局實例以下:字符串