Google對外開源了Sandboxed API專案,Sandboxed API能夠自動為C/C++函式庫產生沙盒,在熱門軟體函式庫產生可重用且安全的功能實作,以保護剩餘軟體基礎設施。Google還創建核心沙盒子專案Sandbox2,提供低階沙盒原語,可以單獨使用於隔離任意Linux程序。

由於許多軟體處理外部產生的資料,像是將用戶的圖片轉檔,或甚至執行使用者產生的程式碼,過程通常存在不少的風險,而且 Google提到,當處理這些外部資料的函式庫太過複雜時,就有機會出現特定類型的安全漏洞,像是記憶體破壞臭蟲或是解析邏輯相關的問題。

因此開發者為了預防問題發生,會使用沙盒技術來隔離這些軟體,以確保解析外部資料的程式碼,只能存取必要的資源,即便在最糟的情況下,駭客取得遠端攻擊控制權時,沙盒技術還是能包住他們,保護其他軟體基礎設施。沙盒除了需要能有效抵禦攻擊保護作業系統外,還必須要易於開發人員使用,然而某些沙盒解決方案,卻要求使用者花時間為每個專案重新定義安全邊界。

為此Google發表了簡單好用的Sandboxed API專案,講求沙盒化一次就能重複使用。Sandboxed API是針對C語言撰寫的軟體函式庫實作,以高階觀點來說,Sandboxed API把沙箱化的函式庫,以及其呼叫者(Caller)分為兩個獨立的作業系統程序,主機二進位檔案以及沙盒。實際上函式庫呼叫則是由主機端API物件編組(Marshalling),並透過中介程序傳送至沙盒,在沙盒中由RPC stub解編並轉送呼叫到原始函式庫。

API物件以及RPC stub都由Sandboxed API專案本身提供,前者由介面產生器自動產生,使用者只需要提供沙盒策略,允許低層函式庫進行一系列系統呼叫,並同時準備好供存取和使用的資源。以Sandboxed API沙盒化的函式庫,將可以簡單地被重複使用在其他專案中。

在Google中,不少團隊已經大量使用Sandboxed API和Sandbox2,由於目前只支援Linux,Google正在研究Unix的系統如FreeBSD、OpenBSD和macOS支援的可能性。而Google提到,Windows的移植是更大的工程,需要完成更多基礎工作。

他們也在思考新的沙盒技術,由於隨著硬體虛擬化普及,把程式碼限制在沙盒虛擬機器,開啟了更多應用的可能性。另外,Google在設法改善建置系統,由於Sandboxed API現在正在使用Bazel建置所有內容包含相依檔案,而CMake顯然是更為友善的選項,因此更換建置系統為Google的優先工作之一。


Advertisement

更多 iThome相關內容