Google分享了他們強化Android安全性的思路,透過資料驅動方法,來決定對Android生態系統部署更加全面性的安全防護措施。每月Google更新,除了修補透過漏洞獎勵計畫提報的漏洞之外,他們也會藉由改進沙盒等措施,來防禦尚未發現的漏洞。

由於Android功能在生態系統中差異性很大,因此Google必須非常謹慎地做出決定,他們利用大量的漏洞資料,來判斷所要部署的解決方案,讓惡意人士更難以發動攻擊。Google提到,Android漏洞獎勵計畫是一個非常有用的資訊來源,Google安全工程師會分析透過該計畫提交的所有漏洞,確定每個漏洞的根本原因和整體嚴重性。

其他參考的資料來源還包括內外部的錯誤報告,這些報告會標記出易受攻擊的元件,並且揭露導致錯誤的程式碼實作,但僅仰賴漏洞報告是不夠的,因為資料存在偏差,安全研究人員通常會研究容易出現漏洞區塊,又或是傾向研究具有相對應工具的領域,Google提到,安全研究工具在GitHub上發布,則其他研究人員也通常會使用該工具進行研究。

為了避免安全措施不會只保護漏洞探索熱門區塊,Google內部紅隊成員則會分析平臺中,較少受到關注或是較複雜的部分,同時還會以連續自動模糊測試器,大規模地測試Android虛擬機器和物理裝置,而從這些程序發現的漏洞,Google也會徹底研究其原因和嚴重性,作為部署安全解決方案的依據。

透過分析漏洞資料,就可以對症下藥解決一大群類似的漏洞,Google舉例,像是平臺某部分曾經發生大量整數溢位的漏洞,在他們對該區塊部署UBSan(Undefined Behavior Sanitizer)之後,便徹底解決整數溢位的問題,又或是Android 11用來解決記憶體常見存取漏洞的措施,便是Google在分析漏洞後,建置記憶體分配器來抵禦記憶體溢位,或是使用已釋放記憶體(Use-After-Free)等漏洞。

Google分析漏洞並歸納出了幾項相對應的措施。第一個策略是先發制人,防堵惡意人士利用漏洞的機會,Google採用像是整數溢出消毒或是邊界消毒等工具,來降低記憶損毀漏洞所造成的傷害,且為了阻擋攻擊者通常接連利用不同的漏洞,達到最終攻擊目的,Google採用能夠限制攻擊者操作這些漏洞的措施,包括記憶體標籤(Memory Tagging)、控制流程完整性(Control Flow Integrity)等,以增加利用漏洞難度。

第二個策略則是將較大特權的元件,拆分成較小的部分,經分解之後,較小元件中的漏洞,就擁有較少的系統存取權限,因此可以增加漏洞使用難度,以限制攻擊者取得敏感資料或是額外特權提升的路徑。

第三個策略則是使用沙盒和隔離策略,應用最低權限原則,降低漏洞的價值,讓攻擊者可以做的事情更少,而最後一個策略則是使用記憶體安全的語言,Google提到,Android收到的大部分報告,都跟記憶體安全有關,因此使用Java、Kotlin和Rust等語言,或是提高C/C++安全性,則可以解決記憶體安全問題。

Google舉例其進行的安全改進工作,像是從2015年開始進行的Android媒體框架強化,在之前他們收到許多媒體框架的嚴重漏洞回報,其中不少漏洞都是可被遠端存取的,因此Google在Android Nougat進行了大量架構分解工作,並且提高修復媒體漏洞的能力,這些工作在2020年開花結果,現在就不曾收到媒體框架中,有任何網際網路可存取的嚴重漏洞回報。

Google主要針對三個區塊強化安全性,分別為遠端存取介面、核心函式庫以及作業系統內核。Google提到,在每個Android版本,他們都會考量效能以及穩定性,由資料驅動決定提升生態系安全性的行動。

熱門新聞

Advertisement