Skip to main content

降低基頻高風險攻擊面,Google在Pixel 10系列導入Rust改寫的DNS解析器

Posted in 業界新聞
新聞

Google指出,基頻近年已成為攻擊者與資安研究人員的重點目標,自家Project Zero過去就曾透過網際網路,在Pixel基頻上達成遠端程式碼執行。Pixel基頻可執行碼達數十MB,且絕大部分以記憶體不安全語言撰寫,仍可能潛藏其他關鍵記憶體安全漏洞。

開發團隊先從DNS著手,是因為現代行動通訊已轉為數位資料網路,連通話轉接等基本功能都仰賴DNS服務,而DNS協定複雜,必須解析來自網路的不受信任資料,容易衍生漏洞。以Rust重寫DNS解析器,可降低此處與記憶體不安全相關的一整類漏洞風險。

Google評估多個Rust DNS函式庫後選定hickory-proto,理由包含維護狀況良好、測試覆蓋率超過75%,以及在Rust社群中的高普及度。該函式庫原先不支援嵌入式環境所需的no_std,開發團隊替hickory-proto與其相依的rust-url與ipnet補上支援,相關成果已回饋上游。

Google直接把Rust編譯流程接進原本的Pigweed與GN建構系統,開發團隊解釋,這樣做除了比較方便後續擴充,也能避免未來加入更多Rust元件時,在連結階段出現重複符號問題。由於Rust還得和既有的C/C++程式一起運作,團隊也另外處理了記憶體配置與程式異常當機時的銜接機制。

等DNS回應完成解析後,Rust程式會再呼叫原本的C函式,更新既有資料結構。Google也提到,整合過程一度出現非預期的功耗與效能問題,原因是compiler_builtins中的memset與memcpy實作,在連結階段取代了基頻韌體內原本針對硬體調校過的版本。團隊最後在連結前移除compiler_builtins相關目標檔,才排除這個問題。

程式碼體積是評估過程的重要變數,Google坦言hickory-proto並非為嵌入式環境設計,未針對體積最佳化,但因Pixel基頻記憶體空間相對寬裕,因此以程式碼品質與社群支援為優先。Google表示,這次導入雖僅替換基頻中一個高風險區塊,但已為後續將更多記憶體安全解析器與程式碼帶入基頻建立基礎。

View original 0 Likes 0 Boosts

Comments (0)

No comments yet.