這是一篇譯文,原文出自水果開發(fā)者官網(wǎng) developer.apple.com,原標題為 About App Sandbox。
App Sandbox(以下或簡稱應用程序沙盒,應用程序沙箱,沙盒或者沙箱)是 OS X 系統(tǒng)提供的一種訪問控制技術(shù),它在內(nèi)核級別被強制要求。一旦某個應用遭到破壞,沙盒能夠保護系統(tǒng)和用戶數(shù)據(jù)免受波及。通過 Mac App Store 分發(fā)的應用程序必須采用沙盒。還有一些應用程序不通過 Mac App Store 分發(fā),而是使用開發(fā)者賬號做簽名的(大多數(shù)情況下)也要使用沙盒。
系統(tǒng)越復雜便越是容易遭受攻擊,軟件不斷迭代并隨著時間的推移變得越來越復雜。你采取安全編碼實踐來防止 bug 的出現(xiàn),但攻擊者只需要穿透你的防御即可成功入侵。盡管沙盒不能阻止應用程序遭受攻擊,但它能把入侵造成的損害控制在最小程度。
非沙盒的應用程序具有運行應用程序用戶的完整權(quán)限,并且能訪問用戶可以訪問的任何資源。如果應用程序或者該應用鏈接的任何框架存在安全漏洞,那么攻擊者會試圖利用這些漏洞來獲取應用程序的控制權(quán),一旦得逞,攻擊者就可以為所欲為。
為了解決這些問題,應用程序沙盒采取了兩個策略:
- 沙盒允許你描述應用如何與系統(tǒng)交互。然后系統(tǒng)授予應用運行所需要的權(quán)限。
- 沙盒允許用戶通過“打開”和“保存”對話框 ,拖放,刪除以及其他類似的用戶交互來授予額外的權(quán)限。
然而,沙盒不是銀彈。應用程序仍然會受到影響,并且可能遭受攻擊。但是潛在的破壞影響范圍會受到嚴格的限制,因為應用程序只能拿到保證其正常運行所能獲取的最小權(quán)限。
應用程序沙箱基于一些簡單的原則
如果攻擊者在你的應用程序中成功的發(fā)現(xiàn)一個安全漏洞,那么應用程序沙箱通過限制每個應用對敏感數(shù)據(jù)的訪問,鑄起最后一道防御措施來應對盜取,篡改或刪除用戶數(shù)據(jù),以及劫持系統(tǒng)硬件等行為。例如,一個沙盒應用要使用以下資源就必須明確聲明:
- 硬件(攝像頭,麥克風,USB,打印機)
- 網(wǎng)絡連接(入站或出站)
- 應用數(shù)據(jù)(日歷,位置,聯(lián)系人)
- 用戶文件(下載,圖片,音樂,電影,用戶選擇文件)
在系統(tǒng)運行時,對在項目定義中未明確請求任何資源的訪問都是拒絕的。比如,如果你正在使用 sketch(編輯圖片之類),你知道應用程序不需要訪問到麥克風,你當然也不會去請求,同時系統(tǒng)會拒絕任何嘗試通過應用程序(可能已被入侵)啟用麥克風的行為。
另一方面,沙盒應用可以訪問你請求的特定資源,允許用戶以常用方式(比如拖放操作)執(zhí)行典型操作來擴展沙盒,并且可以自動執(zhí)行很多安全相關(guān)的額外操作,包括:
- 從服務菜單調(diào)用服務
- 讀取多數(shù)全局可訪問的系統(tǒng)文件
- 打開用戶選擇的文件
END