標籤:
引言:前段時間經曆了XCode編譯器代碼被注入的事件後,這次 Mac OS X El Capitan系統的升級,啟用了更高的安全性保護機制:系統完整性保護System Integrity Protection (SIP),是By Design?還是巧合呢?
關於 系統完整性保護System Integrity Protection (SIP),可以從Apple官網下載下來學習,從第29頁到54頁 http://devstreaming.apple.com/vi ... y_and_your_apps.pdf
關鍵點:
1、Security policy applying to every process, including privileged code running unsandboxed
2、Extends additional protections to system components on disk and at runtime
3、System binaries can only be modified by Apple Installer and Software Update, and no longer permit runtime attachment or code injection
實際上從Mac AppStore下載的應用是不受影響的;如果不是則可能會受影響,比如:
修改系統檔案,安裝檔案到系統目錄中,觀察系統進程記憶體,注入代碼到系統進程中等
核心會直接中斷這些破壞性的工作,哈哈哈。
所以對於像 /System /bin /usr /sbin 僅僅供系統使用,開發人員或者應用程式則無法直接使用,而使用 ~/Library /usr/local /Applications,升級之後,那些檔案將被移出去。
注入代碼到系統進程中等同於修改硬碟上的可執行檔,所以會進行各種安全檢查確保安全可信,比如簽名檢查
整個機制主要從三方面入手:
1、檔案系統保護(Filesystem protections)
2、運行時保護(Runtime protections)
3、核心擴充簽名(Kernel extensions)
總結:
1、新的安全性原則機制適用於每一個進程
2、預設下系統啟用SIP系統完整性保護機制,無論是對於硬碟還是運行時的進程
限制對系統目錄的寫操作
阻止在運行時附加或注入代碼到系統進程中
3、第三方安裝的內容必須移入系統目錄
4、SIP系統完整性保護機制可以在Recovery OS狀態下變更,也就是留有餘地啊哈哈
如何禁用SIP系統完整性保護機制?
1、重新啟動作業系統;
2、按住Command + R鍵;
3、菜單“工具 + 生產力” ==>> "終端" ==>> 輸入 csrutil disable 斷行符號
執行成功後,返回資訊如下:
Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.
4、這樣,更改的配置儲存到NVRAM中,對整台機器生效,重新啟動即可
如何查看SIP系統完整性保護機制?
命令列終端
$ csrutil status
System Integrity Protection status: enabled.
$ csrutil clear / enable / disable 只能在 復原模式下使用
在禁用掉SIP後,查看狀態資訊如下
$ csrutil status
System Integrity Protection status: enabled (Custom Configuration).
Configuration:
Apple Internal: disabled
Kext Signing: disabled
Filesystem Protections: disabled
Debugging Restrictions: disabled
DTrace Restrictions: disabled
NVRAM Protections: disabled
This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.
那麼將之前升級而被移走的檔案從 /Library/SystemMigration/History 對應移回到原來的目錄下,應用程式就可以使用了。
如何對被移出的應用程式進行恢複?
比如Mobility Client,進入終端,並切換到 root 使用者下,然後
su -
cd /Library/SystemMigration/History/Migration-*/QuarantineRoot/usr/libexec
mv MobilityClient/ /usr/libexec/
再啟動 Mobility Client 就可以了,不需要重新安裝,就這麼簡單!
Mac OS X El Capitan系統完整性保護System Integrity Protection (SIP)