最新消息:图 床

“水滴”來襲:詳解 Binder 內核通殺漏洞

COOL IAM 235浏览 0评论

作者: Hongli Han(@hexb1n) of Qihoo 360 C0RE Team
博客:http://blogs.360.cn/post/Binder_Kernel_Vul_CH.html

前言

Binder是基於OpenBinder實現的,是Android系統的重要組成部分。Binder構建於Linux內核中的Binder驅動之上,系統中涉及到Binder通信的部分,都需要通過與Binder驅動交互來實現數據傳遞。由於Binder驅動在整個Android系統中發揮的重要作用,一直以來也是Android安全研究的重點之一。

在二進制的世界里,對象的生成和銷毀都有一定的流程和時間點,有一些是在編譯器層面來實現,有一些卻需要程序設計者來維護。一旦這個流程設計的不夠完美,使得攻擊者能夠通過非法操作擾亂其正常的生命周期便有可能造成一系列的安全問題。去年8月份我在對Binder驅動代碼進行安全審計的時候,發現了一枚如同《三體》中“水滴”一般的內核通殺漏洞,擁有了驚人的破壞力,僅用一個漏洞便可以實現任意地址讀、任意地址寫、寫任意內容、信息泄露。同時,Binder驅動也是目前為數不多的幾個可被沙箱中的進程訪問的驅動之一,該漏洞可能被用於沙箱逃逸。在如此重要的內核驅動中會潛伏這樣一枚通殺漏洞堪稱神奇。

基於這個漏洞,我們實現了對Pixel全系手機的ROOT,其中的Pixel 3也代表了谷歌安卓內核目前最高的安全防禦水平,這也是Pixel 3自問世以來,全球範圍內首次公開的ROOT攻擊。這裡要感謝@周明建@王曉東@姚俊@邵大成等團隊小夥伴的支持,讓漏洞利用能夠及早的完成,文末也附了我們的提權視頻鏈接[1]。

這個漏洞在2019年3月的Android Security Bulletin中已經公開,對應的漏洞編號為CVE-2019-2025。下文我將會介紹該漏洞危害、影響範圍、漏洞原理以及利用思路。

漏洞危害及影響範圍

漏洞危害

1) 通殺。目前國內外主流的Android機型基本都會受到影響;

2) 攻擊能力極強。該漏洞可實現較穩定的任意地址讀寫、寫任意內容、信息泄露,並且每觸發一次漏洞便可以任意寫一次、讀一次,Google現有的內核安全緩解措施對於這類能夠任意地址讀寫的漏洞暫無有效的防禦策略;

3) 沙箱逃逸。可能用於沙箱逃逸,並直接提權到ROOT;

同時,Binder驅動已早在2015年初被合入Linux主線,使用了Binder模塊的平台均有可能受到影響。

影響範圍

該漏洞屬於use-after-free問題,觸發時需要不同線程間同步競爭調用“binder_ioctl()”,而在早期的設計中,“binder_ioctl()”由一個效率較低的全局互斥鎖保護,見圖1。

[2] https://lore.kernel.org/patchwork/patch/805040/

[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7bada55ab50697861eee6bb7d60b41e68a961a9c


转载请注明:IAMCOOL » “水滴”來襲:詳解 Binder 內核通殺漏洞

0 0 vote
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x