macOS 中的沙盒應用程式如何保護用戶

沙盒於 2007 年推出,並於 2012 年添加,是 macOS 系統用來限制應用程式可能造成的損害的工具。 蘋果說「雖然 沙盒應用程式 它並不能阻止針對您應用的攻擊,但可以減少成功攻擊可能造成的傷害。對 macOS 應用程式進行沙盒保護,可以限制惡意應用程式可能造成的麻煩,進而激勵使用者。

MacOS 上的沙盒是什麼?

每個應用程式都有自己的運行空間:一個「沙盒」。如果應用程式想要存取沙盒以外的內容,則必須向作業系統請求權限。根據沙盒的設置,作業系統會拒絕或批准該請求,並提供盡可能少的具體資訊來完成請求。

想像一下汽車。駕駛受到多重安全功能的保護,例如防鎖死煞車系統、安全氣囊、潰縮區等等。 2007年沙盒技術剛推出時,類似的電腦系統還不存在。 正如演講中所問 計算機的安全帶去哪了?沙盒保護使用者就像汽車保護駕駛者一樣:不遵守危害緩解系統。無論是惡意活動還是編碼錯誤,危害都會減少。

由於沙盒限制了應用程式的功能,因此會限制開發者的自由。沙盒內的應用程式運作速度較慢,開發時間也更長。鑑於 Mac 的強大功能,沙盒限制可能會對各種應用程式的相容性產生重大影響。因此,即使是有意願的用戶也經常被要求在沙盒外運行應用程序,以確保其正常運行,無論是出於性能還是功能方面的原因。

沙盒如何運作?

沙盒基於最小權限原則。簡而言之,系統可以執行其需要執行的操作,但不能超出範圍。透過限制系統的每個部分僅完成其既定目標,可以降低應用程式被入侵的風險。例如,手電筒應用程式沒有理由存取您的聯絡人清單。

應用程式可以存取沙盒以外的內容,但必須獲得作業系統的許可。以 macOS 中的「儲存並開啟」對話方塊為例。在沙盒內,應用程式無法直接存取硬碟上的檔案系統資源。例如,它無法在 ~/Documents 中開啟的畫布上繪圖。相反,應用程式必須請求 Powerbox API 使用 NSOpenPanel 和 NSSavePanel 類別來存取面板。

該應用程式無法直接查看 Powerbox 內部發生的情況。應用程式只能存取已開啟或儲存的檔案。這樣,應用程式就可以執行關鍵功能,而不會面臨不必要的風險。

此功能由 優點 (具體來說是 com.apple.security.files.user-selected.read-write)。應用程式開發者設定權限,決定應用程式的功能。作業系統會根據聲明的權限,為應用程式提供適當限制的功能等級。

這種思維過程是整個應用程式沙盒模型和機制的基礎:應用程式必須聲明其意圖並向作業系統層級主機請求許可才能完成任何危險的操作。

沙盒應用程式與非沙盒應用程式

自 1 年 2012 月 XNUMX 日起,所有透過 Mac App Store 分發的第三方應用程式都必須經過沙盒處理。雖然沙盒處理可以實現應用程式的多種功能,但您會發現 Mac App Store 中的應用程式通常比未經過沙盒處理的元件受到更多限制。有些開發者甚至維護兩個版本:一個功能齊全的版本可供直接下載,另一個版本則是讓 Mac App Store 安裝。由於沙盒開發的複雜性更高,為應用程式添加新功能會更加困難——即使作業系統允許這些功能。

雖然沙盒應用程式可以從 Mac App Store 分發中獲益,但你可以猜到我們認為的價值。沙盒還可以透過安全權限進行擴充。雖然應用不能 為其自身開啟無障礙權限 但是,他可以要求用戶這樣做。

若要查看哪些應用程式處於沙盒中,請開啟活動監視器,然後右鍵單擊列標題以將「沙盒」新增至視窗。

有些應用程式永遠無法在沙盒中存在。事實上,沙盒會阻止各種有價值的用例。沙盒會阻止應用程式之間的通訊、監控或修改,從而顯著限制應用程式的互動方式。像 TextExpander 這樣的系統級捷徑被完全禁止,因為這種等級的功能只能在沙盒中允許。

結論

正如預期的那樣,macOS 應用 沙盒模式 效果並不好。找出 Mac 應用的獨特賣點,例如提升的速度和功能。在沙盒外運行的應用總是功能更強大、速度更快。從進階使用者的角度來看,最常用的應用程式並沒有被沙盒化。像 TextExpander、SnagIt 和 TotalFinder 這樣的應用程式對我的日常工作都至關重要。為了避免類似的普遍問題,未來的安全系統需要靈活、穩健,並與透明度保持平衡。

轉到頂部按鈕