作者: 啟明星辰ADLab

TrustZone介紹

TrustZone技術介紹

由于智能手機操作系統存在較多的攻擊面,手機存儲的密鑰,證書及支付應用程序的敏感數據容易被病毒和木馬竊取和攻擊。
為了解決智能手機不安全的執行環境上完成支付問題,OMAP組織在2006年提出了tee(可信執行環境)的概念。
2012年ARM公司推出了TrustZone安全解決方案,旨在提供獨立的安全操作系統及硬件虛擬化技術,為手機安全支付的過程中提供可信的執行環境。
TrustZone技術在2014年以后發展迅猛,在目前市面上大多數智能手機都帶有TrustZone技術的芯片和操作系統。
目前TrustZone的產業鏈相當廣,包括IP、Soc/CPU、Tee OS、Tee Applet及基于Tee的App, 相關廠家包括ARM、高通、三星、華為、蘋果、MTK、微信、支付寶、銀行等。

TrustZone技術架構

TrustZone技術是軟件和硬件結合的解決方案。TrustZone從硬件安全擴展來提供資源隔離,軟件提供基本的安全服務和接口。TrustZone技術將軟硬件資源隔離成兩個環境,分別為安全世界和普通世界。

TrustZone硬件架構

TrustZone的硬件架構方面主要體現在內核虛擬化、內存隔離、外設/總線隔離技術、中斷隔離技術。
內核虛擬化: 內核虛擬化是指通過CPU中虛擬出兩個內核,并且把安全世界的OS運行在內核0中,普通世界的OS運行在內核1中。兩個OS獨立運行在不同的虛擬內核中,通過時間片進行兩個內核間切換執行。
外設/總線隔離技術:通過總線擴展了AWPROT(總線寫事務控制信號)和ARPROT總線讀事務信號)。當低電平時為安全世界的總線讀寫控制信號,當高電平時為普通世界的讀寫控制信號。
內存隔離技術:TrustZone技術采用兩個MMU,把安全世界和普通世界的內存管理隔離開。
中斷隔離技術:為了區分安全世界和普通世界的中斷源,ARM設計了FIQ和IRQ兩種不同的中斷源,設計者可以將FIQ用于安全世界的中斷源,將IRQ用于普通世界的中斷源。

TrustZone軟件架構

TrustZone有別于普通世界的智能手機操作系統,TrustZone在安全世界里采用獨立的安全操作系統、獨立的運行在安全操作系統的安全應用TA(Tee Applet)、獨立的設備驅動。

TrustZone的攻擊面

雖然TrustZone技術在軟硬件上做了安全改進,但是TrustZone也存在一定的攻擊面,這些攻擊面主要體現在TrustZone的硬件方面和軟件方面。
TrustZone的硬件方面的攻擊面主要在于TrustZone的硬件架構只是在現有的手機設備上做了安全擴展,而不是采用全新的安全芯片。這就意味著TrustZone在抵抗硬件攻擊及側信道攻擊方面存在較大的問題。
TrustZone的軟件方面的攻擊面主要在于TrustZone與普通世界的驅動接口方面及運行在TrustZone環境的安全應用TA存在安全漏洞。
這些年TrustZone軟件實現方面的的漏洞也不斷被發現。2014年Rosenberg發現了高通芯片 QSee驅動的問題。2015年申迪發現了華為手機的Tee驅動的安全問題。

我們的一些研究成果

近期啟明星辰ADLab對國內知名電信設備企業的手機TrustZone的實現進行了研究。該手機廠家的TrustZone為自主實現,在該手機廠家的TrustZone操作系統中預置了task_storage(安全存儲)、task_secboot(安全引導)、task_keymaster (密鑰管理)、task_HDCP(高頻寬數字內容保護)、task_efuse (微電熔絲)、task_crypto(加密服務) 多個安全應用。其中 task_storage安全存儲提供TrustZone下的文件管理服務。
在該廠家手機中文件保密柜、指紋服務、微信支付、天際通等App應用都使用到了task_storage安全存儲的TrustZone應用(TA)。
通過對該手機廠家的TrustZone的研究,我們發現了兩個嚴重的安全問題。通過這兩個安全問題攻擊者可以完全地攻擊TrustZone的安全存儲應用,獲得保存在TrustZone中的文件加密密碼。

文件保密柜應用介紹

文件保密柜是某手機廠家在手機內置的文件加密功能,通過該功能用戶可以將手機上的文件進行加密存儲,加密密鑰保存在TrustZone中。在解密文件的時候,用戶需要進行密碼驗證或指紋驗證成功后才能進行文件的解密。

文件保密柜核心流程

創建密碼流程:文件保密柜應用把用戶新建的文件保密柜的密碼,利用生成隨機數,Salt進行多次加密迭代運算,生成密碼驗證hash保存在數據庫中。另外文件保密柜調用TrustZone中的安全存儲應用將密碼保存在安全文件系統中。
密碼驗證流程:文件保密柜應用把用戶輸入的密鑰,進行多次迭代加密,并且與保存在數據庫里的密碼驗證hash進行驗證,密碼驗證通過后進入文件解密流程。
文件解密流程:文件保密柜調用TrustZone中的安全存儲應用對保存在安全文件系統中的密文態密鑰進行解密。文件保密柜應用用解密后的密鑰,對文件進行解密得到解密后的文件。

下圖列出了文件保密柜的調用流程。 文件柜App應用調用Teed服務,Teed服務調用tz_driver驅動與內核進行通信。tz_driver驅動通過smc指令切換到TrustZone執行環境, TrustZone根據應用Id,調用具體的TA(Tee applet)完成加密密鑰的存儲和讀取。
我們發現的安全問題現在已經獲得廠家的CVE編號,這兩個CVE編號分別為CVE-2017-2723CVE-2017-2715,下面我們將分別對這兩個安全漏洞進行介紹。

CVE-2017-2723
漏洞概述

TrustZone中的安全存儲應用對文件保密柜應用的驗證存在漏洞,攻擊者可以繞過這些驗證,調用TrustZone中的安全存儲應用,獲得解密后的密鑰。

問題代碼

TrustZone中task_storage應用的checkClientSignature函數主要功能為對調用者的合法性進行驗證,如果驗證成功,則返回0。
在下面的代碼中,我們可以看到:
(1)如果應用進程的uid<=1000且進程名的長度為4時,checkClientSignature返回驗證成功。如果攻擊者安裝一個名字長度為4的惡意程序(如abcd),并且以system用戶的權限運行該程序,通過該程序調用TrustZone中的安全存儲應用,則可以讀取明文的文件加密密碼。
(2) 如果應用的名稱為com.xxx.xxx時,且簽名為特定的簽名內容時,checkClientSignature返回驗證成功。如果攻擊者偽造相同的進程名和簽名,則可以讀取相關的安全存儲的密碼信息。

漏洞利用

主要的攻擊方法如上圖所示,我們通過構造一個惡意的Tee服務和一個惡意的應用。惡意的應用提供攻擊的操作界面,而惡意的Tee服務利用文件保密柜應用的簽名信息直接和內核的Tee驅動進行通信,從而繞過了合法的Tee服務對文件保密柜應用的驗證。

(1)主要調用流程 (2)TEEC_InitializeContext函數代碼 (3)tee_get_app_cert函數主要代碼

CVE-2017-2715
漏洞概述

文件保密柜中的libtrustzone_storage.so存在密鑰信息泄露問題,非法攻擊者可以利用該漏洞獲得保存在手機TrustZone中的加密密碼長度,從而利用該漏洞進行密碼暴力破解或其他攻擊。
文件管理應用的保密柜密鑰數據庫msb.db安全設計不當,非法攻擊者可以訪問該數據庫的Salt、加密用的隨機數、密碼驗證hash值,從而可以暴力破解Trustzone中的密碼。

問題代碼

問題函數:android_util_TZStorage_getSize
問題代碼:

int __fastcall android_util_TZStorage_getSize(int a1, int a2, int a3) 
{   
…
v4 = TEEC_FInfo(a3, &v6, &v7);   
if ( v4 )     
_android_log_print(6, 0, "android_util_TZStorage_getSize, res = %d\n", v4); 
//密碼長度信息泄露
_android_log_print(4, 0, "android_util_TZStorage_getSize, fd = %d, length = %d\n", v3, v7);   
return v7; 
}
漏洞利用

主要的攻擊方法如上圖所示。我們通過在手機上安裝一個惡意編寫的軟件,通過該軟件讀取文件保密柜應用泄露的密碼長度,同時通過讀取文件保密柜應用數據庫中的Salt,用于密碼比對的Hash值。利用這些值我們可以快速地進行暴力破解文件保密柜中的密碼。

主要的攻擊代碼如下:

結束語

雖然 TrustZone 從軟硬件架構上隔離出安全執行環境及非安全執行環境,有效地防止了安全數據被非法竊取的攻擊。但是 TrustZone 在各個廠家具體實現時仍然引入一些新的安全問題。我們認為廠家除了需要關注 TrustZone 接口驅動及TA安全實現外,還需要關注應用的安全設計或者是 TrustZone 的API是否存在信息泄露等安全隱患。這些應用設計如果缺少必要安全防范,將導致 TrustZone 的防護失效,從而引發新的安全問題。


啟明星辰積極防御實驗室(ADLab)

ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近300個,持續保持亞洲領先并確立了其在國際網絡安全領域的核心地位。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/296/