WF曲速未來消息:攻擊ARM的TrustZone區(qū)塊鏈
WF曲速未來表示:本文章具技術(shù)性地解決了暴露給攻擊者的攻擊面和熱點,以及在TrustZone中可用的不同權(quán)限級別實現(xiàn)代碼執(zhí)行后可以執(zhí)行的操作。
本文章具技術(shù)性地解決了暴露給攻擊者的攻擊面和熱點,以及在TrustZone中可用的不同權(quán)限級別實現(xiàn)代碼執(zhí)行后可以執(zhí)行的操作。
TrustZone攻擊面
確定目標攻擊面始終是漏洞研究過程的第一步。TrustZone的攻擊區(qū)域包括三點:
1)直接發(fā)送到監(jiān)視器的消息處理程序。
2)在TrustZone中運行的第三方應用程序(trustlet)。
3)安全啟動組件,它可以允許在加載TrustZone之前執(zhí)行代碼,從而能夠破壞TrustZone本身。
跟隨用戶輸入
為了執(zhí)行漏洞搜索,必須確定提供給攻擊者的攻擊面,即可以使用哪些參數(shù)來影響程序。要做到這一點,必須遵循從Normal World傳遞到Secure World的參數(shù),以確定如何調(diào)用Secure World中可用的函數(shù)。
瀏覽開源通信驅(qū)動程序
要弄清楚參數(shù)如何從Normal World傳遞到Secure World,即如何在SMC(Secure Monitor Call)中傳遞參數(shù),可以瀏覽Normal World開源驅(qū)動程序。如驅(qū)動程序源代碼中所述,執(zhí)行SMC指令(名為smc)的函數(shù)由稱為scm_call的函數(shù)調(diào)用(其中scm代表安全通道管理器)。當需要將信息從普通世界傳遞到安全世界時使用它,通過填寫以下結(jié)構(gòu)來執(zhí)行此操作:
由于scm_response結(jié)構(gòu),我們收到了TrustZone內(nèi)核的答案 :
下面的列表顯示了實際執(zhí)行SMC操作碼的最后一個函數(shù):
在此清單中,r1指向內(nèi)核堆棧地址,r2指向分配的scm_command結(jié)構(gòu)的物理地址。r0設置為1,表示該scm是正常的。但是,對于需要較少數(shù)據(jù)的命令,或者當不需要結(jié)構(gòu)時,存在另一種形式的scm_call。
另一種形式的SCM稱為scm_call_ [1-4],其中數(shù)字是傳遞給監(jiān)視器的參數(shù)數(shù)量。這些函數(shù)用于發(fā)出具有給定參數(shù),服務和命令I(lǐng)D的SMC。使用宏SCM_ATOMIC將服務ID,命令I(lǐng)D和參數(shù)號放在r0中。由于r0不再等于1,它向TrustZone內(nèi)核指示以下SCM是一個原子調(diào)用,其參數(shù)編號在r0中編碼,參數(shù)本身放在r2到r5中。
攻擊者的第一個攻擊面:安全監(jiān)視器(基于Qualcomm的設備)
現(xiàn)在已經(jīng)確定了正常世界如何與安全世界對話(感謝監(jiān)視器,它充當了世界之間的橋梁),我們可以搜索功能及其服務ID和命令I(lǐng)D之間的鏈接。
為了獲得Normal World所請求的功能,填充有結(jié)構(gòu)的陣列靜態(tài)地放置在監(jiān)視器中。此靜態(tài)數(shù)組對應于攻擊者可用的攻擊面。結(jié)構(gòu)的格式如下:
1.服務ID和命令I(lǐng)D的串聯(lián);
2.指向SCM函數(shù)名稱字符串的指針;
3.一個未知的整數(shù);
4.指向處理功能的指針;
5.參數(shù)編號;
6.數(shù)組由每個參數(shù)的大小填充,一個整數(shù)由參數(shù)組成
Qualcomm的可信執(zhí)行環(huán)境實施中的漏洞
這個錯誤和監(jiān)視器處理消息的反向是由Gal Beniamini完成的。這個在三星S5上重現(xiàn)的錯誤很有趣,因為它可以在處理器的最特權(quán)模式下執(zhí)行任意代碼:監(jiān)控模式(EL3)。
瀏覽通過SCM可用的所有功能列表,并逐一分析它們,導致發(fā)現(xiàn)tzbsp_es_is_activated函數(shù)中的新漏洞。此漏洞允許將零DWORD寫入攻擊者(在r0中)給出的任意地址,包括TrustZone監(jiān)視器和內(nèi)核。
使用以下修補程序修復了此漏洞
啟示
此漏洞允許攻擊者在監(jiān)視器(EL3)中的運行時獲得任意代碼執(zhí)行。這可以用于后門普通世界以及安全世界,但也可以用于檢測或?qū)⒄{(diào)試器放入安全世界(在監(jiān)視器或安全操作系統(tǒng)級別),以便在TrustZone操作系統(tǒng)中找到新的漏洞(TEE-OS)。
第三方應用程序中的漏洞(CVE-2018-14491,基于Qualcomm的設備)
可以在/ system / vendor / firmware或/ firmware / image下檢索基于Qualcomm的設備可用的Trustlet,并將其拆分為不同的文件,即trustlet_name.b00,trustlet_name.b01...和trustlet_name.mdt。Qualcomm的TrustZone實現(xiàn)使操作系統(tǒng)能夠在TrustZone中加載二進制文件,以擴展安全執(zhí)行環(huán)境提供的功能。這些二進制文件稱為trustlet。Gal Beniamini完全顛倒了文件系統(tǒng)中可用的信任片的格式,并開發(fā)了一個腳本來重建有效的ELF可以加載到IDA。
但是,一旦完成了trustlet文件格式的反轉(zhuǎn),問題仍然存在:
1.普通世界如何向安全世界發(fā)出請求加載信任小組的請求?
2.普通世界如何在運行時與它通信?
這些任務由qseecom驅(qū)動程序執(zhí)行,該驅(qū)動程序提供API以執(zhí)行高級任務,依賴于安全通道管理器(特別是scm_call函數(shù))提供的原語 。
加載信任時所需的所有功能都可通過此內(nèi)核模塊獲得,該內(nèi)核模塊又使用適當?shù)恼埱竺領(lǐng)D將正確的結(jié)構(gòu)填充到Secure World中請求的功能。然后,Normal World可以使用qseecom_load_app函數(shù)加載trustlet,并使用qseecom_send_cmd向其發(fā)送數(shù)據(jù)。
一旦加載到Secure World,內(nèi)核就會為trustlet分配一個ID并調(diào)用其入口函數(shù)。此入口函數(shù)將trustlet注冊到TrustZone內(nèi)核,并提供一個處理程序例程,該例程在Normal World調(diào)用trustlet的功能時觸發(fā)。
接收消息的處理函數(shù)提供不同的函數(shù),并且必須始終以命令otp_init開頭,以初始化trustlet的內(nèi)部狀態(tài),而不是陷入瑣碎的錯誤案例處理。查看可用的不同函數(shù),然后注意到它們都受堆棧cookie保護,除了一個名為otp_resync_account的函數(shù)。通過讀取此函數(shù)中的第一行匯編,還注意到一個BLE指令,它是一個帶符號的比較,(這對應于比較> 384在hexrays視圖中)。這是天賜之物,因為我們的輸入緩沖區(qū)不能包含空字節(jié),因此這意味著對于無符號數(shù)字,這種比較總是正輸出。但是,由于這個有符號的比較,我們可以在緩沖區(qū)中傳遞一個負值,如0xFFFFFFFF,然后跟隨調(diào)用函數(shù)sub_68F8的分支(變量v3 在函數(shù)開頭被初始化為0)。
這個函數(shù)特別有趣,因為它有一個memcpy漏洞,其長度和src參數(shù)直接由來自Normal World提供的緩沖區(qū)的攻擊者控制,我們不需要任何內(nèi)存泄漏,因為這個函數(shù)也沒有堆棧cookie!
另一個幸運的突破是這個功能相同的memcpy(),特別是因為復制的數(shù)據(jù)及其長度由用戶控制。是的,這意味著在沒有cookie的函數(shù)中堆棧溢出:
啟示
WF曲速區(qū)表示此漏洞使得在EL0 Secure World(用戶安全世界)中獲得任意代碼執(zhí)行成為可能。這特別有趣,因為它提供了對TrustZone內(nèi)核執(zhí)行系統(tǒng)調(diào)用的機會,從而訪問新的攻擊面以提升其在TrustZone內(nèi)核中的權(quán)限。此外,它還提供對TrustZone操作系統(tǒng)功能的訪問,例如提供對安全文件系統(tǒng)(SFS)的訪問的開放和讀取系統(tǒng)調(diào)用。Secure-filesystem是一個可用于永久存儲的加密文件系統(tǒng)。它使用僅來自Secure World的特殊硬件密鑰加密然后,確保來自可能已損壞的正常世界的數(shù)據(jù)的機密性。
結(jié)論
區(qū)塊鏈安全實驗室WF曲速未來表示:討論了為普通世界中的用戶提供的兩個攻擊面,并詳細說明了兩個漏洞:監(jiān)視器中的一個漏洞,其利用允許在CPU的最高特權(quán)異常級別中獲取任意代碼執(zhí)行。- 在trustlet中的另一個,用于在用戶模式(EL0)Secure World中獲得任意代碼執(zhí)行。WF曲速未來再次提醒最后一個漏洞可用于審核在TrustZone中運行的安全OS的安全性,并為攻擊者啟用新的攻擊面。
1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會明確標注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請轉(zhuǎn)載時務必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控熑危?br>
3.作者投稿可能會經(jīng)TMT觀察網(wǎng)編輯修改或補充。