像奧利奧一樣的雙重安全措施,盡在 Android Oreo

Android_開發者發表於2018-01-09

像奧利奧一樣的雙重安全措施,盡在 Android Oreo

由 Android 安全團隊的 Gian G Spicuzza 發表

Android Oreo 中包含很多安全性提升的更新。幾個月以來,我們討論瞭如何增強 Android 平臺及應用的安全性: 從提供更安全的獲取應用渠道,移除不安全的網路協議,提供更多使用者控制符加固核心使 Android 更易於更新,直到加倍 Android 安全獎勵獎勵專案的支出。如今 Oreo 終於正式和大家見面了,讓我們回顧下這其中的改進。

擴大硬體安全支援

Android 早已支援開機驗證模式(Verified Boot),旨在防止裝置軟體被篡改的情況下啟動。在 Android Oreo 中,我們隨著 Project Treble 一同執行的驗證開機模式(Verified Boot),稱之為 Android 驗證開機模式2.0(Android Verified Boot 2.0)(AVB)。AVB 有一些使得更新更加容易、安全的功能,例如通用的分割槽尾部(AVB 中位於檔案系統分割槽尾部的結構)以及回滾保護。回滾保護旨在保護 OS 降級的裝置,防止降級到到低版本的系統後被人攻擊。為此,裝置將通過專用的硬體儲存系統版本資訊或使用可信執行環境(Trusted Execution Environment, TEE)對資料進行簽名。 Pixel 2 和 Pixel 2 XL 自帶這種保護,並且我們建議所有裝置製造商將這個功能新增到他們的新裝置中。

Oreo 還包括新的原始裝置製造商鎖(OEM Lock)硬體抽象層(HAL)使得裝置製造商能夠更加靈活的保護裝置,無論裝置處於鎖定、解鎖或者可解鎖狀態。例如,新的 Pixel 裝置通過硬體抽象層命令向啟動載入程式(bootloader)傳遞命令。啟動引導裝載程式會在下次開機分析這些命令並檢查安全儲存於有重放保護的記憶體區(Replay Protected Memory Block, RPMB)中對鎖更改的資訊是否合法。如果你的裝置被偷了,這些保護措施旨在保護你的裝置被重置,從而保護你的資料安全。新的硬體抽象層(HAL)甚至支援將鎖移動到專用的硬體中。

談到硬體,我們新增了防偽硬體支援,例如在每一個 Piexl 2 和 Piexl 2 XL 裝置中內嵌的安全模組。這種物理晶片可以防止很多軟硬體攻擊,並且還抵抗物理滲透攻擊. 安全模組防止推導裝置密碼及限制解鎖嘗試的頻率,使得很多攻擊由於時間限制而失效。

新的 Pixel 裝置配有特殊的安全模組,所有搭載Android Oreo 的谷歌移動服務(GMS)的裝置也需要實現金鑰驗證。這提供了一種強驗證識別符號機制,例如硬體識別符號。

我們也為企業管理裝置新增了新的功能。當配置檔案或者公司管理員遠端鎖定配置檔案時,加密金鑰會從記憶體(RAM)中移除.這有助於保護企業資料的安全。

平臺加固及程式隔離

作為 Project Treble 的一部分,為了使裝置廠商可以更簡單、低成本地更新,我們對 Android 的框架也進行了重構。將平臺和供應商程式碼分離的目的也是為了提高安全性,根據最小特權原則,這些硬體抽象層(HALs)執行在自己的沙盒中,只對有許可權的驅動裝置開放。

追隨著Android Nougat 中媒體堆疊加固,我們在Android Oreeo 媒體框架中移除了許多直接訪問硬體的模組,從而創造了更好的隔離環境。此外,此外我們啟用了所有媒體元件中的控制流完整性(Control Flow Integrity, CFI)保護。這種缺陷可以通過破壞應用的正常控制流,從而利用這種特權執行惡意的活動。 CFI 擁有健全的安全驗證機制,不允許隨意更改原來編譯後二進位制檔案的控制流程圖,也使得這樣的攻擊難以執行。

除了這些架構改變和CFI以外,Android Oreo 還帶來了其他平臺安全性相關的提升:

  • Seccomp(Secure computing mode, 安全計算模式)過濾: 一些系統層的呼叫不再對應用開放,從而減少潛在損害應用途徑。
  • 加固使用者拷貝: 一個最新的 Android 安全漏洞調查顯示:在核心漏洞中,失效的或者無邊界檢查情況約佔 45%。在 Android 核心 3.18 及以上版本中,我們新增了一個邊界檢查的補丁,使得利用這個漏洞變得更困難,同時還同幫助開發者在他們程式碼中查詢問題並修復問題。
  • Privileged Access Never(PAN)模擬: 同時針對 3.18 以上的核心新增了補丁,這個功能禁止核心直接訪問使用者空間,同時確保開發者利用加固後的方式開訪問使用者空間。
  • 核心地址空間佈局隨機化(KASLR):雖然Android已經支援地址空間佈局隨機化(ASLR)好多年了,我們仍針對 Android 核心 4.4 及以上版本提供了核心地址空間佈局隨機化(KASLR)補丁減少風險。核心地址空間佈局隨機化(KASLR)將在每次裝置啟動載入核心程式碼時隨機分配地址,使得程式碼複用攻擊,尤其是遠端攻擊更加難以執行。

應用程式安全性及裝置標示變更

Android 即時執行應用執行在一個受限制的沙盒中,因此限制了部分許可權和功能,例如訪問裝置內應用列表或者著明文傳遞資料。雖然是從 Android Oreo 才釋出,但是即時執行應用支援在 Android Lollipop 及以上版本的裝置上執行。

為了更安全的處理不可信內容,我們通過將渲染引擎放到另一個程式中並將它執行在一個獨立的資源受限的沙盒中來隔離 WebView。此外,WebView 還支援安全瀏覽,從而保護使用者瀏覽含有潛在危險的網站。

最後,我們針對裝置標識做了重大的改變開放給使用者更多的控制權,包括:

  • 靜態的 Android ID 和 Widevine 將變為基於應用變化的值,這有助於限制裝置中無法重置的識別符號的使用。
  • 依照 IETF RFC 7844,現在 net.hostname 將為空且 DHCP 客戶端也將不再傳送主機名稱(hostname)。
  • 對於需要裝置識別符號的應用,我們新增了一個 Build.getSerial() API 並且通過許可權對其進行保護。
  • 我們與安全研究人員一起 1 在各種晶片組韌體中的 Wi-Fi 掃描環節中新增一個健全的MAC地址隨機化功能.

Android Oreo 帶來遠不止這些改進,還有更多。一如既往,如果您有關於 Android 的反饋或是改進建議。歡迎傳送郵件至 security@android.com。


1:Glenn Wilkinson 以及在英國 SensePost 的團隊、Célestin Matte、Mathieu Cunche:里昂大學,國立里昂應用科學學院,CITI 實驗室,Mathy Vanhoef,KU Leuven


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章