透過沙盒隔離惡意程式
簡單地說,沙盒是種在隔離環境中執行程式的安全機制,被放置於沙盒中的程式無法存取外部檔案與系統資源,程式的行為也不會影響沙盒外的作業系統,因此能避免惡意程式對系統造成危害。
但是因為現在的程式越來越複雜,可能在無心的情況下產生一些資安漏洞,造成記憶體毀損,或是由語法分析錯誤造成的Bug,讓正常、非惡意的程式也可能成為安全隱憂。
在沙盒的協助下,開發者可以確保程式與使用者只能存取指定的檔案、網路連線或是其他作業系統資源,如此一來即便在最壞的情況下,惡意程式或攻擊者入侵沙盒環境,他們也只能在沙盒內進行破壞或竊取資料,系統其他區域並不會受到危害。
所以反過來說,沙盒技術的關鍵在於它是否足夠牢固,讓惡意程式或攻擊者無法逃出它的限制範圍。雖然目前有許多工具能夠提供充分保障的沙盒系統,但可能在操作上比較複雜,需要花費較多時間進行安全邊界的設定。
為了解決這個難題,Google決定以開放原始碼的方式提供旗下的Sandboxed API(以下簡稱SAPI)技術,讓開發者可以透過SAPI針對不同的軟體函數庫分別建立資安策略,並透過可重覆套用且安全的機制保障系統安全。
目前僅支援Linux環境下的C語言程式
Google表示目前SAPI僅支援以C語言所撰寫的程式與函數庫,在運作的過程中,會將要放入沙盒的程式拆分成主機端執行檔(Host Binary)與沙盒內程式(Sandboxee)等2獨立的作業系統處理程序(OS Process),當函數庫發出呼叫時,會由主機端的API進行統籌並透過程序間通訊(Intercrosses Communication)的方式傳送到沙盒內程式,沙盒內程式則會以遠端程序呼叫(Remote Procedure Call,簡稱RPC)的方式將呼叫轉送至原始函數庫。
由於API物件(API Object)、SAPI物件以及RPC存根(RPC Stub)都能透過介面產生器(Interface Generator)自動產生,所以使用者只需設定沙盒的運作策略、允許的系統呼叫與資源存取權限,就能開始使用沙盒,並將設定套用至其他程式,節省後續設定時間。
目前SAPI僅支援C語言,並且只提供Linux版本,Google表示未來將會支援更多程式語言與執行環境,並陸續移植至BSD(FreeBSD、OpenBSD)、macOS、Windows等系統。有興趣的讀者可以前往GitHub取得原始碼,並參考說明文件與程式範例使用SAPI。
加入電腦王Facebook粉絲團