Linux核心近期修補一項重大資安漏洞CVE-2025-68260,這也是主線核心中首度正式指派給Rust程式碼的漏洞案例。該問題影響以Rust重寫的Android Binder模組,在特定條件下可能造成記憶體損毀,甚至引發系統當機。

這項漏洞屬於競爭條件問題,發生於Rust Binder元件的death_list處理機制,相關程式碼位於drivers/android/binder/node.rs。Binder是Android系統中重要的行程間通訊(Inter-Process Communication,IPC)機制,因此該漏洞對系統穩定性具有實質影響。

根據研究人員的分析,問題核心出在Node::release函式的鎖定流程設計。該函式會先取得鎖定,將共享連結串列中的元素移至暫時的本地堆疊,隨後提前釋放鎖定,再對本地清單進行處理。然而,在鎖定解除後、處理尚未完成的短暫時間內,其他執行緒仍可能同時操作原始清單的prev與next指標,進而產生競爭條件。

一旦這種狀況發生,連結串列的指標結構可能遭到破壞,導致記憶體損毀。實務上,該漏洞最直接的後果是核心崩潰(Kernel Panic),系統紀錄中可能出現「Unable to handle kernel paging request」等錯誤訊息,造成設備非預期重新開機或服務中斷,對企業環境與關鍵系統風險尤高。

Linux核心CVE團隊指出,該漏洞是在Linux核心6.18版本中引入,源自一筆更新Binder程式碼的提交,但當時未妥善處理同步機制。相關問題已在後續版本中完成修補,包括Linux核心6.18.1與6.19-rc1。

修補方式是重新設計Node::release的處理流程,改為直接從原始清單中取出元素,完全移除中介的暫時堆疊清單,以避免在鎖定解除後仍存取共享資料結構。

Linux核心CVE團隊強烈建議使用者直接升級至最新的穩定版核心。官方也提醒,由於單一修補並未獨立測試,不建議僅選擇性套用特定提交。若短期內無法進行完整升級,管理人員可考慮從上游核心穩定分支套用相關修補,作為暫時因應措施,以降低系統當機風險。

 為何這起Rust漏洞具有指標意義 

這次事件再次提醒,Rust雖然具備記憶體安全方面的語言優勢,但並非「零漏洞保證」,仍需要嚴謹的設計與持續更新,才能真正發揮安全效益。

不過,從Android團隊在系統層大量導入Rust的經驗來看,Rust在降低風險方面仍展現明顯成效。根據Android團隊統計,Rust程式碼的記憶體安全漏洞密度約為每百萬行0.2個,相較之下,C與C++程式碼歷年平均約為每百萬行1,000個,兩者差距接近千倍。

Android團隊也指出,重點不在於是否「完全沒有漏洞」,而是在於能否大幅降低漏洞出現的頻率與密度,而這正是Rust在系統層程式開發上的核心價值。

熱門新聞

Advertisement