Google在去年公開Android提高記憶體安全性的重要關鍵,便是增加Rust程式碼的比例,而現在Google再次揭露在Android應用Rust的最新進展。Google現在還使用Rust,改寫Android中,在Linux核心之外執行的安全關鍵元件,進一步減少安全漏洞。

Google在去年做了調查,發現Android的記憶體漏洞,從2019年的223個降低到2022年的85個,經過分析,Google認為記憶體漏洞減少的情況,主要與Android記憶體安全程式碼比例增加有關。Rust是一個記憶體安全的程式語言,其許多核心功能,使得程式在編譯的時候,就能夠捕捉到大多數的記憶體安全問題,避免記憶體相關漏洞在執行時或是生產環境才出現。

在Android 13中,就已經約有21%新的原生程式碼以Rust開發,官方提到,這些元件大多數是在用戶空間的系統服務,也就是會在Linux作業系統下執行。但除此之外,還有其他許多以非記憶體安全語言編寫的元件存在。

Android系統的許多安全關鍵元件,都在Linux核心之外的裸機環境中執行,而這些過去都是以C語言編寫,因此Google為了強化Android裝置韌體的安全性,也逐漸提高在裸機環境使用Rust的比例。Google以Rust重寫了Android 14的虛擬化框架的受保護虛擬機器(pVM)韌體,替pVM信任根提供記憶體安全基礎。

pVM韌體的作用與啟動程式(Bootloader)類似,是建立在開源啟動程式專案U-Boot之上,但官方表示,U-Boot當初設計時,並未考慮在敵對環境下的安全性,因此已經發現許多範圍外的記憶體存取、整數下溢(Integer Underflow)和記憶體損壞所導致的安全漏洞,特別是VirtIO驅動程式,其邊界檢查有許多缺失和問題。雖然Google已經修復了在U-Boot中發現的問題,但是透過使用Rust,可以在未來避免出現類似的記憶體安全漏洞。

由於Google要支援Rust語言在裸機環境中使用,也因此貢獻套件,同時發布了一系列新的套件,像是pVM韌體的VirtIO驅動程式,Google便修復了現有virtio-drivers套件中的錯誤和健全性問題,還添加了新功能。此外,Google也發布用於實現Arm PSCI介面和其他SMCCC呼叫,以及處理和控制裝置記憶體映射的頁面表套件。

Google還計畫發布更多的Rust套件,與支援各種平臺的裸機程式開發,Google提到,雖然在裸機上應用Rust還有許多限制,但是相較於C或C++,Rust提供更高的安全性和生產力。Google接下來還會繼續擴大Rust的使用。

熱門新聞

Advertisement