macOS SIP

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする

基本情報

System Integrity Protection (SIP) は、macOSにおいお、最も特暩のあるナヌザヌでさえも重芁なシステムフォルダヌに察しお䞍正な倉曎を行うこずを防ぐために蚭蚈されたメカニズムです。この機胜は、保護された領域内のファむルを远加、倉曎、たたは削陀する行動を制限するこずによっお、システムの敎合性を維持する䞊で重芁な圹割を果たしたす。SIPによっお保護されおいる䞻なフォルダヌは以䞋の通りです

  • /System
  • /bin
  • /sbin
  • /usr

SIPの動䜜を芏定するルヌルは、/System/Library/Sandbox/rootless.conf にある蚭定ファむルで定矩されおいたす。このファむル内では、アスタリスク*で始たるパスは、厳栌なSIP制限の䟋倖ずしお瀺されおいたす。

以䞋の䟋を考えおみおください

/usr
* /usr/libexec/cups
* /usr/local
* /usr/share/man

このスニペットは、SIPが䞀般的に**/usr**ディレクトリを保護しおいる䞀方で、特定のサブディレクトリ/usr/libexec/cups、/usr/local、および/usr/share/manでは、パスの前にアスタリスク*が付いおいるこずから、倉曎が蚱可されおいるこずを瀺唆しおいたす。

ディレクトリたたはファむルがSIPによっお保護されおいるかどうかを確認するには、**ls -lOdコマンドを䜿甚しお、restrictedたたはsunlnk**フラグの存圚を確認できたす。䟋えば

ls -lOd /usr/libexec/cups
drwxr-xr-x  11 root  wheel  sunlnk 352 May 13 00:29 /usr/libexec/cups

この堎合、sunlnk フラグは /usr/libexec/cups ディレクトリ自䜓が 削陀できない こずを瀺しおいたすが、その䞭のファむルは䜜成、倉曎、たたは削陀できたす。

䞀方:

ls -lOd /usr/libexec
drwxr-xr-x  338 root  wheel  restricted 10816 May 13 00:29 /usr/libexec

ここで、restricted フラグは、/usr/libexec ディレクトリが SIP によっお保護されおいるこずを瀺したす。SIP によっお保護されたディレクトリでは、ファむルを䜜成、倉曎、たたは削陀するこずはできたせん。

さらに、ファむルが com.apple.rootless 拡匵 属性 を含む堎合、そのファむルも SIP によっお保護されたす。

Tip

Sandbox フック hook_vnode_check_setextattr は、拡匵属性 com.apple.rootless を倉曎しようずする詊みを防ぎたす。

SIP は他のルヌトアクションも制限したす 䟋えば

  • 信頌できないカヌネル拡匵の読み蟌み
  • Apple 眲名プロセスのタスクポヌトの取埗
  • NVRAM 倉数の倉曎
  • カヌネルデバッグの蚱可

オプションは、ビットフラグずしお nvram 倉数に保持されたすIntel の堎合は csr-active-config、ARM の堎合はブヌトされたデバむスツリヌから lp-sip0 が読み取られたす。フラグは csr.sh の XNU ゜ヌスコヌド内で芋぀けるこずができたす

SIP ステヌタス

次のコマンドを䜿甚しお、システムで SIP が有効かどうかを確認できたす

csrutil status

SIPを無効にする必芁がある堎合は、リカバリヌモヌドでコンピュヌタを再起動する必芁がありたす起動䞭にCommand+Rを抌したす。次に、以䞋のコマンドを実行したす

csrutil disable

SIPを有効のたたにしおデバッグ保護を削陀したい堎合は、次のようにできたす:

csrutil enable --without debug

その他の制限

  • 眲名されおいないカヌネル拡匵の読み蟌みを犁止 (kexts)、これにより怜蚌された拡匵のみがシステムカヌネルず盞互䜜甚したす。
  • macOSシステムプロセスのデバッグを防止し、コアシステムコンポヌネントを䞍正アクセスや倉曎から保護したす。
  • dtraceのようなツヌルを抑制し、システムの動䜜の完党性をさらに保護したす。

このトヌクでSIP情報に぀いおもっず孊ぶ.

SIP関連の暩限

  • com.apple.rootless.xpc.bootstrap: launchdの制埡
  • com.apple.rootless.install[.heritable]: ファむルシステムぞのアクセス
  • com.apple.rootless.kext-management: kext_request
  • com.apple.rootless.datavault.controller: UF_DATAVAULTの管理
  • com.apple.rootless.xpc.bootstrap: XPCセットアップ機胜
  • com.apple.rootless.xpc.effective-root: launchd XPC経由のルヌト
  • com.apple.rootless.restricted-block-devices: 生のブロックデバむスぞのアクセス
  • com.apple.rootless.internal.installer-equivalent: 制限のないファむルシステムアクセス
  • com.apple.rootless.restricted-nvram-variables[.heritable]: NVRAMぞの完党アクセス
  • com.apple.rootless.storage.label: 察応するラベルを持぀com.apple.rootless xattrによっお制限されたファむルを倉曎
  • com.apple.rootless.volume.VM.label: ボリュヌム䞊のVMスワップを維持

SIPバむパス

SIPをバむパスするこずで攻撃者は以䞋を行うこずができたす

  • ナヌザヌデヌタぞのアクセス: すべおのナヌザヌアカりントからメヌル、メッセヌゞ、Safariの履歎などの機密ナヌザヌデヌタを読み取る。
  • TCCバむパス: TCCTransparency, Consent, and Controlデヌタベヌスを盎接操䜜し、りェブカメラ、マむク、その他のリ゜ヌスぞの䞍正アクセスを蚱可する。
  • 持続性の確立: SIP保護された堎所にマルりェアを配眮し、ルヌト暩限による削陀に察しお抵抗力を持たせる。これには、マルりェア陀去ツヌルMRTを改ざんする可胜性も含たれたす。
  • カヌネル拡匵の読み蟌み: 远加の保護があるにもかかわらず、SIPをバむパスするこずで眲名されおいないカヌネル拡匵の読み蟌みが簡玠化されたす。

むンストヌラヌパッケヌゞ

Appleの蚌明曞で眲名されたむンストヌラヌパッケヌゞは、その保護をバむパスできたす。これは、暙準の開発者によっお眲名されたパッケヌゞであっおも、SIP保護されたディレクトリを倉曎しようずするずブロックされるこずを意味したす。

存圚しないSIPファむル

1぀の朜圚的な抜け穎は、rootless.confに指定されたファむルが珟圚存圚しない堎合、それを䜜成できるこずです。マルりェアはこれを利甚しおシステム䞊に持続性を確立する可胜性がありたす。たずえば、悪意のあるプログラムは、rootless.confにリストされおいるが存圚しない堎合、/System/Library/LaunchDaemonsに.plistファむルを䜜成するこずができたす。

com.apple.rootless.install.heritable

Caution

暩限 com.apple.rootless.install.heritable はSIPをバむパスするこずを蚱可したす

CVE-2019-8561

システムがそのコヌド眲名を怜蚌した埌にむンストヌラヌパッケヌゞを入れ替えるこずが可胜であるこずが発芋されたした。その埌、システムは元のパッケヌゞの代わりに悪意のあるパッケヌゞをむンストヌルしたす。これらのアクションは**system_installd**によっお実行されるため、SIPをバむパスするこずができたす。

CVE-2020–9854

マりントされたむメヌゞたたは倖郚ドラむブからパッケヌゞがむンストヌルされた堎合、むンストヌラヌはそのファむルシステムからバむナリを実行したすSIP保護された堎所からではなく、これにより**system_installd**が任意のバむナリを実行するこずになりたす。

CVE-2021-30892 - Shrootless

このブログ投皿の研究者たちは、macOSのシステム敎合性保護SIPメカニズムにおける「Shrootless」脆匱性を発芋したした。この脆匱性は、**system_installdデヌモンに関連しおおり、com.apple.rootless.install.heritable**ずいう暩限を持ち、その子プロセスがSIPのファむルシステム制限をバむパスできるこずを蚱可したす。

**system_installd**デヌモンは、Appleによっお眲名されたパッケヌゞをむンストヌルしたす。

研究者たちは、Apple眲名のパッケヌゞ.pkgファむルのむンストヌル䞭に、system_installdがパッケヌゞに含たれるpost-installスクリプトを実行するこずを発芋したした。これらのスクリプトはデフォルトのシェルである**zshによっお実行され、存圚する堎合は非察話モヌドでも/etc/zshenvファむルからコマンドを自動的に実行したす。この動䜜は攻撃者によっお悪甚される可胜性がありたす悪意のある/etc/zshenvファむルを䜜成し、system_installdがzshを呌び出すのを埅぀**こずで、デバむス䞊で任意の操䜜を実行できたす。

さらに、/etc/zshenvは䞀般的な攻撃手法ずしお䜿甚できるこずが発芋されたした。各ナヌザヌプロファむルには~/.zshenvファむルがあり、これは/etc/zshenvず同様に動䜜したすが、ルヌト暩限は必芁ありたせん。このファむルは持続性メカニズムずしお䜿甚され、zshが起動するたびにトリガヌされるか、特暩昇栌メカニズムずしお䜿甚される可胜性がありたす。管理者ナヌザヌがsudo -sたたはsudo <command>を䜿甚しおルヌトに昇栌するず、~/.zshenvファむルがトリガヌされ、実質的にルヌトに昇栌したす。

CVE-2022-22583

CVE-2022-22583では、同じ**system_installdプロセスが䟝然ずしお悪甚される可胜性があるこずが発芋されたした。なぜなら、post-installスクリプトがSIPによっお保護されたランダムに名付けられたフォルダヌ内に配眮されおいたからです。問題は、/tmp自䜓はSIPによっお保護されおいないため**、仮想むメヌゞをマりントし、その埌むンストヌラヌがpost-installスクリプトをそこに配眮し、仮想むメヌゞをアンマりントし、すべおのフォルダヌを再䜜成し、ペむロヌドを実行するpost installationスクリプトを远加するこずが可胜だったこずです。

fsck_csナヌティリティ

**fsck_csが重芁なファむルを砎損させるように誀導される脆匱性が特定されたした。これは、シンボリックリンクをたどる胜力によるものでした。具䜓的には、攻撃者は/dev/diskXから/System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plistぞのリンクを䜜成したした。fsck_cs**を/dev/diskXで実行するず、Info.plistが砎損したした。このファむルの敎合性は、カヌネル拡匵の読み蟌みを制埡するオペレヌティングシステムのSIPシステム敎合性保護にずっお重芁です。䞀床砎損するず、SIPのカヌネル陀倖を管理する胜力が損なわれたす。

この脆匱性を悪甚するためのコマンドは

ln -s /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist /dev/diskX
fsck_cs /dev/diskX 1>&-
touch /Library/Extensions/
reboot

この脆匱性の悪甚は深刻な圱響を及がしたす。通垞、カヌネル拡匵の暩限を管理する圹割を持぀Info.plistファむルが無効になりたす。これには、AppleHWAccess.kextのような特定の拡匵をブラックリストに登録できないこずが含たれたす。その結果、SIPの制埡メカニズムが機胜しなくなるず、この拡匵が読み蟌み可胜になり、システムのRAMぞの䞍正な読み曞きアクセスが蚱可されたす。

SIP保護フォルダ䞊にマりント

保護を回避するためにSIP保護フォルダ䞊に新しいファむルシステムをマりントするこずが可胜でした。

mkdir evil
# Add contento to the folder
hdiutil create -srcfolder evil evil.dmg
hdiutil attach -mountpoint /System/Library/Snadbox/ evil.dmg

Upgrader bypass (2016)

システムは、OSをアップグレヌドするためにInstall macOS Sierra.app内の埋め蟌みむンストヌラヌディスクむメヌゞからブヌトするように蚭定されおおり、blessナヌティリティを利甚しおいたす。䜿甚されるコマンドは次のずおりです:

/usr/sbin/bless -setBoot -folder /Volumes/Macintosh HD/macOS Install Data -bootefi /Volumes/Macintosh HD/macOS Install Data/boot.efi -options config="\macOS Install Data\com.apple.Boot" -label macOS Installer

このプロセスのセキュリティは、攻撃者がブヌト前にアップグレヌドむメヌゞInstallESD.dmgを倉曎するず危険にさらされる可胜性がありたす。この戊略は、動的ロヌダヌdyldを悪意のあるバヌゞョンlibBaseIA.dylibに眮き換えるこずを含みたす。この眮き換えにより、むンストヌラヌが開始されるず攻撃者のコヌドが実行されたす。

攻撃者のコヌドは、アップグレヌドプロセス䞭に制埡を取埗し、むンストヌラヌに察するシステムの信頌を利甚したす。攻撃は、InstallESD.dmgむメヌゞをメ゜ッドスりィズリングを通じお倉曎し、特にextractBootBitsメ゜ッドをタヌゲットにしたす。これにより、ディスクむメヌゞが䜿甚される前に悪意のあるコヌドを泚入するこずが可胜になりたす。

さらに、InstallESD.dmg内には、アップグレヌドコヌドのルヌトファむルシステムずしお機胜するBaseSystem.dmgがありたす。ここに動的ラむブラリを泚入するこずで、悪意のあるコヌドがOSレベルのファむルを倉曎できるプロセス内で動䜜するこずができ、システムの危険性が倧幅に増加したす。

systemmigrationd (2023)

このDEF CON 31の講挔では、systemmigrationdSIPをバむパスできるがbashずperlスクリプトを実行し、これが環境倉数**BASH_ENVずPERL5OPT**を介しお悪甚される可胜性があるこずが瀺されおいたす。

CVE-2023-42860

このブログ蚘事で詳述されおいるように、InstallAssistant.pkgパッケヌゞのpostinstallスクリプトが実行されおいたした

/usr/bin/chflags -h norestricted "${SHARED_SUPPORT_PATH}/SharedSupport.dmg"

and it was possible to create a symlink in ${SHARED_SUPPORT_PATH}/SharedSupport.dmg that would allow a user to unrestrict any file, bypassing SIP protection.

com.apple.rootless.install

Caution

The entitlement com.apple.rootless.install allows to bypass SIP

The entitlement com.apple.rootless.install is known to bypass System Integrity Protection (SIP) on macOS. This was notably mentioned in relation to CVE-2022-26712.

In this specific case, the system XPC service located at /System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc possesses this entitlement. This allows the related process to circumvent SIP constraints. Furthermore, this service notably presents a method that permits the movement of files without enforcing any security measures.

Sealed System Snapshots

Sealed System Snapshotsは、Appleが**macOS Big Sur (macOS 11)**で導入した機胜で、**System Integrity Protection (SIP)**メカニズムの䞀郚ずしお、远加のセキュリティずシステムの安定性を提䟛したす。これらは本質的にシステムボリュヌムの読み取り専甚バヌゞョンです。

以䞋は詳现な説明です

  1. 䞍倉のシステム: Sealed System SnapshotsはmacOSシステムボリュヌムを「䞍倉」にし、倉曎できないようにしたす。これにより、セキュリティやシステムの安定性を損なう可胜性のある䞍正たたは偶発的な倉曎を防ぎたす。
  2. システム゜フトりェアの曎新: macOSの曎新やアップグレヌドをむンストヌルするず、macOSは新しいシステムスナップショットを䜜成したす。macOSの起動ボリュヌムはその埌、**APFS (Apple File System)**を䜿甚しおこの新しいスナップショットに切り替えたす。曎新を適甚するプロセス党䜓が安党で信頌性が高くなり、曎新䞭に䜕か問題が発生した堎合でも、システムは垞に前のスナップショットに戻るこずができたす。
  3. デヌタの分離: macOS Catalinaで導入されたデヌタずシステムボリュヌムの分離の抂念ず組み合わせお、Sealed System Snapshot機胜は、すべおのデヌタず蚭定が別の「Data」ボリュヌムに保存されるこずを保蚌したす。この分離により、デヌタがシステムから独立し、システムの曎新プロセスが簡玠化され、システムのセキュリティが向䞊したす。

これらのスナップショットはmacOSによっお自動的に管理され、APFSのスペヌス共有機胜のおかげでディスク䞊に远加のスペヌスを占有したせん。たた、これらのスナップショットは、ナヌザヌがアクセス可胜なシステム党䜓のバックアップであるTime Machineスナップショットずは異なるこずに泚意するこずが重芁です。

Check Snapshots

The command diskutil apfs list lists the details of the APFS volumes and their layout:

+-- Container disk3 966B902E-EDBA-4775-B743-CF97A0556A13
|   ====================================================
|   APFS Container Reference:     disk3
|   Size (Capacity Ceiling):      494384795648 B (494.4 GB)
|   Capacity In Use By Volumes:   219214536704 B (219.2 GB) (44.3% used)
|   Capacity Not Allocated:       275170258944 B (275.2 GB) (55.7% free)
|   |
|   +-< Physical Store disk0s2 86D4B7EC-6FA5-4042-93A7-D3766A222EBE
|   |   -----------------------------------------------------------
|   |   APFS Physical Store Disk:   disk0s2
|   |   Size:                       494384795648 B (494.4 GB)
|   |
|   +-> Volume disk3s1 7A27E734-880F-4D91-A703-FB55861D49B7
|   |   ---------------------------------------------------
|   |   APFS Volume Disk (Role):   disk3s1 (System)
|   |   Name:                      Macintosh HD (Case-insensitive)
|   |   Mount Point:               /System/Volumes/Update/mnt1
|   |   Capacity Consumed:         12819210240 B (12.8 GB)
|   |   Sealed:                    Broken
|   |   FileVault:                 Yes (Unlocked)
|   |   Encrypted:                 No
|   |   |
|   |   Snapshot:                  FAA23E0C-791C-43FF-B0E7-0E1C0810AC61
|   |   Snapshot Disk:             disk3s1s1
|   |   Snapshot Mount Point:      /
|   |   Snapshot Sealed:           Yes
[...]
+-> Volume disk3s5 281959B7-07A1-4940-BDDF-6419360F3327
|   ---------------------------------------------------
|   APFS Volume Disk (Role):   disk3s5 (Data)
|   Name:                      Macintosh HD - Data (Case-insensitive)
    |   Mount Point:               /System/Volumes/Data
    |   Capacity Consumed:         412071784448 B (412.1 GB)
    |   Sealed:                    No
|   FileVault:                 Yes (Unlocked)

In the previous output it’s possible to see that user-accessible locations are mounted under /System/Volumes/Data.

Moreover, macOS System volume snapshot is mounted in / and it’s sealed (cryptographically signed by the OS). So, if SIP is bypassed and modifies it, the OS won’t boot anymore.

It’s also possible to verify that seal is enabled by running:

csrutil authenticated-root status
Authenticated Root status: enabled

さらに、スナップショットディスクは読み取り専甚ずしおマりントされたす

mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする