システム整合性保護

システム整合性保護 (System Integrity Protection, SIP, rootlessとも呼ばれる)は、 OS X El Capitanから導入されたAppleのmacOSのセキュリティ機能である。この機能は、カーネルによって強制される多くのメカニズムで構成されている。中心となるのは、root権限を持つユーザーまたはroot権限（sudo）を持つユーザーによって実行された場合でも、システム所有のファイルとディレクトリを特定の"資格"を持たないプロセスによる変更から保護することである。 アップルによれば、rootユーザーはシステムのセキュリティ、特に利用しているユーザーが管理者である単一のユーザーアカウントを持つシステムで重大なリスク要因になる。システム整合性保護は、デフォルトで有効となっており、この機能を無効にすることもできる。 Appleによれば、システム整合性保護は高いレベルのセキュリティを実現する必要な手段を確保している。2015年のWWDCのSession 706で、Appleの技術者Pierre-Olivier Martelは、システムの残りの弱点の1つとして、無制限のルートアクセスを次のように説明した。「マルウェアが1つのパスワードでデバイスを完全に制御することが出来る、という脆弱性がある。」つまり、ほとんどのユーザーはそれを求めているプログラムにrootアクセスできる。そのようなシステム上のユーザーがプロンプトを表示された時に、しばしば弱い、または存在しないアカウントパスワードを入力するたびに、システム全体のセキュリティが損なわれる可能性があることを示した。root権限を制限することは、macOSでは前例のないことである。たとえば、Mac OS X Leopard以前のmacOSでは、レベル1のsecurelevelが使用されている。これは、macOSのベースの1つであるBSDとそのバリエーションに由来するセキュリティ機能である。 システム整合性保護のメカニズム システムファイルとディレクトリの内容とファイルシステムパーミッションの保護; コードインジェクション、ランタイムアタッチ（デバッグのような）およびDTraceに対するプロセスの保護; 署名されていないカーネル拡張（ "kexts"）に対する保護 システム整合性保護は、システムファイルやシステムディレクトリを保護するフラグを立てる。これらの追加、 拡張ファイル属性 は、/System/Library/rootless.conf に、ファイルまたはディレクトリを加えることにより設定される。 中には、保護されたディレクトリ: システムでは、 /bin、/sbin、/usr、/usr/localがある 。シンボリックリンクから /etc、/tmp、/var、/private/etc、/private/tmp、 /private/var も保護されるが、ターゲットのディレクトリ自体は保護されていない。/Applicationsにインストールされているほとんどのアップル製ソフトも保護されている 。カーネルは、特権なしで全てのプロセスを停止し、フラグ付きのファイルとディレクトリのパーミッションと内容を変更する。また、保護された実行可能ファイルに関してコードインジェクション、ランタイムアタッチメント、およびDTraceも防止する。 OS X Yosemite以降、ドライバなどのカーネル機能拡張には、Appleが承認した特定のコード署名をする必要がある。 その為、開発者は、Appleへ開発者IDを要求する必要がある 。コード署名されていない機能拡張が存在する場合、カーネルはシステムの起動を拒否し、代わりに禁止記号を表示する。このメカニズムは、 "kext署名"と呼ばれ、システム整合性保護に統合された。macOS High Sierraからは、カーネル機能拡張に署名がある場合でも、初回起動時にユーザによる許可を必要とするSecure Kernel Extension Loading(SKEL)が導入された。 デフォルトでSIPによって保護されるディレクトリは次の通り。 /System /sbin /bin /usr /Applications /usrは /usr/localサブディレクトリを除いて保護される。/Applicationsは、カレンダー、写真、Safari、ターミナル、コンソール、App Store、Notesなど、macOSがプリインストールされているアプリに対して保護されている。 システム整合性保護は、システムパーティション外からのみ（全部または一部）無効にすることができる。 そのために、Appleは、“macOS 復元”システム内のターミナル.app、またはブート可能なmacOSインストールディスクから実行できるコマンドcsrutilを提供する。このユーティリティは、ブート引数をデバイスのNVRAMに追加する。 そうして、デバイス上のEl Capitan以降のmacOSのすべてのインストールされたシステムに設定が適用できる 。macOSをインストールすると、インストーラはフラグが付けられたシステムディレクトリ内の未知のコンポーネントを/Library/SystemMigration/History/Migration-[some UUID]/QuarantineRoot/へ移動する。システムディレクトリへの書き込みを禁止することにより、システムファイルとディレクトリのアクセス許可は、Appleソフトウェアの更新中にのみ自動的に維持される。 その結果、ディスクユーティリティと対応するコマンドdiskutilでアクセス許可の修復は利用できない 。 2023年5月30日、移行アシスタントを使ってSIPをバイパスできるMigraineと呼ばれる脆弱性CVE-2023-32369が見つかったことが発見したマイクロソフトにより報告されている。この脆弱性は、2023年5月18日からAppleによりサポート中のOSに対して配布されたセキュリティアップデートで解消された。 コンピュータセキュリティ スーパーユーザー ソーシャル・エンジニアリング ^ Cunningham, Andrew (September 29, 2015). “OS X 10.11 El Capitan: The Ars Technica Review”. Ars Technica. September 29, 2015閲覧。 ^ Cunningham, Andrew (June 17, 2015). “First look: OS X El Capitan brings a little Snow Leopard to Yosemite”. Ars Technica. June 18, 2015閲覧。 ^ Slivka, Eric (June 12, 2015). “OS X El Capitan Opens Door to TRIM Support on Third-Party SSDs for Improved Performance”. MacRumors. June 18, 2015閲覧。 ^ Martel, Pierre-Olivier (June 2015). “Security and Your Apps” (PDF). Apple Developer. pp. 8–54. April 23, 2016時点のオリジナルよりアーカイブ。September 30, 2016閲覧。 ^ “Configuring System Integrity Protection”. Mac Developer Library. Apple (September 16, 2015). August 17, 2016時点のオリジナルよりアーカイブ。September 30, 2016閲覧。 ^ Inc., Apple. “Security and Your Apps - WWDC 2015 - Videos - Apple Developer” (英語). Apple Developer. 2018年9月5日閲覧。 ^ Garfinkel, Simon; Spafford, Gene; Schwartz, Alan (2003). Practical UNIX and Internet Security. O'Reilly Media. pp. 118–9. ISBN 9780596003234  ^ “About the screens you see when your Mac starts up”. Apple Support (August 13, 2015). April 21, 2016時点のオリジナルよりアーカイブ。September 30, 2016閲覧。 ^ “About System Integrity Protection on your Mac”. Apple Support (May 30, 2016). March 20, 2016時点のオリジナルよりアーカイブ。September 30, 2016閲覧。 ^ “What's New In OS X - OS X El Capitan v10.11”. Mac Developer Library. Apple. March 4, 2016時点のオリジナルよりアーカイブ。September 30, 2016閲覧。 “Code injection and runtime attachments to system binaries are no longer permitted.” ^ “Kernel Extensions”. Mac Developer Library. Apple (September 16, 2015). August 17, 2016時点のオリジナルよりアーカイブ。September 29, 2016閲覧。 ^ “Trim in Yosemite”. Cindori. June 18, 2015閲覧。 ^ “Technical Note TN2459: User-Approved Kernel Extension Loading” (英語). developer.apple.com. 2018年9月5日閲覧。 ^ a b “How to Check if System Integrity Protection (SIP) is Enabled on Mac”. OS X Daily (August 1, 2018). March 6, 2021閲覧。 ^ “OS X El Capitan Developer Beta 2 Release Notes”. Mac Developer Library. Apple (June 22, 2015). June 26, 2016時点のオリジナルよりアーカイブ。June 29, 2015閲覧。 ^ Intelligence, Microsoft Threat (2023年5月30日). “New macOS vulnerability, Migraine, could bypass System Integrity Protection” (英語). Microsoft Security Blog. 2023年5月31日閲覧。 ^ “macOS Big Sur 11.7.7 のセキュリティコンテンツについて”. Apple Support (2023年5月22日). 2023年5月31日閲覧。 ^ “macOS Monterey 12.6.6 のセキュリティコンテンツについて”. Apple Support (2023年5月22日). 2023年5月31日閲覧。 ^ “macOS Ventura 13.4 のセキュリティコンテンツについて”. Apple Support (2023年5月23日). 2023年5月31日閲覧。 System Integrity Protection Guide in Apple's Mac Developer Library Mac のシステム整合性保護について