複製鏈接
請複製以下鏈接發送給好友

SIP

(系統完整性保護)

鎖定
SIP [1]  (System Integrity Protection,有時被稱作rootless [2-3]  ,中文名為系統完整性保護) 是蘋果公司的macOS系統中一個安全功能,最早出現在OS X El Capitan。它由很多內核強制實施的機制構成。它的主要功能是保護系統文件及目錄,以免這些文件及目錄被沒有特定權限的進程修改,包括root用户或者擁有root權限的用户。
蘋果公司指出root用户會是系統安全性的一個嚴重危害因素,特別當系統上只有一個用户賬户,且這個用户賬户是administrator。系統完整性保護會默認開啓,但可以被關閉。 [4-5] 
中文名
系統完整性保護
外文名
System Integrity Protection
開發者
蘋果公司
操作系統
macOS

目錄

SIP原理

蘋果公司指出系統完整性保護是確保系統更高等級安全的必要手段。在一次WWDC開發者會議中,蘋果工程師Pierre-Olivier Martel提到未受限的root訪問是系統遺留的缺陷,並説道“任何惡意程序只要得到密碼就能擁有設備的全部權限”。他陳述道大部分macOS只有一個用户賬户。這個賬户必然擁有管理員權限,意味着用户可以同意所有程序提出的root請求。每當一個用户在上述的系統中同意了root請求並輸入了密碼(Martel説這些密碼往往簡單或者不存在),整個系統的安全性便處於危險之中。 [4]  在macOS上限制root的權限並不是史無前例。例如,早於Mac OS X Leopard的系統版本會強制實施securelevel的level 1,這是個起源於BSD的安全功能,並且macOS部分基於它。 [6] 

SIP功能

系統完整性保護包括以下機制:
- 保護系統文件及目錄的內容和文件系統權限;
- 保護進程免於代碼注入,運行時的附屬(例如調試)和DTrace
- 保護系統免於未簽名的內核擴展(“kexts”)
系統完整性保護會給被標記需要保護的系統文件及目錄提供安全保障。它會通過添加一個擴展文件屬性給文件及目錄,或者添加文件及目錄到/System/Library/Security/rootless.conf,或者兩者兼備。被保護的目錄有:/System,/bin,/sbin,/usr(/usr/local除外)。 [7]  從/etc,/tmp 和 /var 到 /private/etc,/private/tmp 和 /private/var 的符號鏈接也會被保護。絕大多數在/Applications 路徑下的蘋果預安裝應用也會被保護。 [1]  當沒有特定權限的進程修改被保護文件及目錄的權限和內容時,內核會阻止這些進程。 [8] 
自從OS X Yosemite,內核擴展(比如驅動),需要被蘋果授權和簽名。開發者需要申請開發者ID來獲得授權。 [9]  如果出現未簽名的擴展,內核會拒絕開機,並在屏幕上顯示禁行。這個機制稱作“內核擴展簽名”,集成在了系統完整性保護裏。 [4]  [10] 

SIP配置

系統完整性保護只能在非系統分區被關閉(完全關閉或者部分關閉)。蘋果提供了 csrutil 命令行工具,可以在恢復分區或者macOS安裝盤裏的終端執行。csrutil 命令行工具會添加一個開機參數到設備的NVRAM裏。這會應用於設備上所有El Capitan或macOS Sierra裏的設置。 [4] macOS安裝時,安裝器把受保護系統目錄下的未知文件移動到/Library/SystemMigration/History/Migration-[UUID]/QuarantineRoot/。 [1]  [4]  為了防止寫入系統目錄,蘋果軟件升級時會自動維護系統文件及目錄的權限。因而,磁盤工具取消了權限修復功能, [11]  相應的diskutil操作也被剔除了。

SIP接受度

系統完整性保護的接受度是褒貶參半的。MacWorld擔心蘋果在未來的更新中可能會移除開發者和用户的完全控制權限,並把macOS的安全機制逐漸轉變成iOS的機制。iOS上許多工具和修改需要通過越獄來實現。 [2]  [12]  很多應用和驅動不能正常工作,除非系統完整性保護被暫時或永久關閉。Ars Technica建議道這個功能可能會更多地影響到小規模開發團隊,因為大規模開發團隊可能會跟蘋果直接合作。然而,他們建議對於絕大多數用户,這個功能是沒有理由關閉的,因為這個功能“幾乎沒有缺點”。 [1] 
參考資料
展開全部 收起