macOSのセキュリティ階層 | |
開発元 | Apple |
---|---|
対応OS | OS X El Capitan以降のmacOS |
サポート状況 | 継続中 |
公式サイト |
developer |
システム整合性保護 (System Integrity Protection, SIP[1], rootlessとも呼ばれる[2][3])は、 OS X El Capitanから導入されたAppleのmacOSのセキュリティ機能である。この機能は、カーネルによって強制される多くのメカニズムで構成されている。中心となるのは、root権限を持つユーザーまたはroot権限(sudo)を持つユーザーによって実行された場合でも、システム所有のファイルとディレクトリを特定の"資格"を持たないプロセスによる変更から保護することである。
アップルによれば、rootユーザーはシステムのセキュリティ、特に利用しているユーザーが管理者である単一のユーザーアカウントを持つシステムで重大なリスク要因になる。システム整合性保護は、デフォルトで有効となっており、この機能を無効にすることもできる[4][5]。
Appleによれば、システム整合性保護は高いレベルのセキュリティを実現する必要な手段を確保している。2015年のWWDCのSession 706[6]で、Appleの技術者Pierre-Olivier Martelは、システムの残りの弱点の1つとして、無制限のルートアクセスを次のように説明した。「マルウェアが1つのパスワードでデバイスを完全に制御することが出来る、という脆弱性がある。」つまり、ほとんどのユーザーはそれを求めているプログラムにrootアクセスできる。そのようなシステム上のユーザーがプロンプトを表示された時に、しばしば弱い、または存在しないアカウントパスワードを入力するたびに、システム全体のセキュリティが損なわれる可能性があることを示した。root権限を制限することは、macOSでは前例のないことである。たとえば、Mac OS X Leopard以前のmacOSでは、レベル1のsecurelevelが使用されている。これは、macOSのベースの1つであるBSDとそのバリエーションに由来するセキュリティ機能である[7]。
システム整合性保護のメカニズム
システム整合性保護は、システムファイルやシステムディレクトリを保護するフラグを立てる。これらの追加、 拡張ファイル属性 は、/System/Library/rootless.conf
に、ファイルまたはディレクトリを加えることにより設定される。 中には、保護されたディレクトリ: システム
では、 /bin
、/sbin
、/usr
、/usr/local
がある[9] 。シンボリックリンクから /etc
、/tmp
、/var
、/private/etc
、/private/tmp
、 /private/var
も保護されるが、ターゲットのディレクトリ自体は保護されていない。/Applications
にインストールされているほとんどのアップル製ソフトも保護されている 。カーネルは、特権なしで全てのプロセスを停止し、フラグ付きのファイルとディレクトリのパーミッションと内容を変更する。また、保護された実行可能ファイルに関してコードインジェクション、ランタイムアタッチメント、およびDTraceも防止する[10]。
OS X Yosemite以降、ドライバなどのカーネル機能拡張には、Appleが承認した特定のコード署名をする必要がある。 その為、開発者は、Appleへ開発者IDを要求する必要がある[11] 。コード署名されていない機能拡張が存在する場合、カーネルはシステムの起動を拒否し、代わりに禁止記号を表示する。このメカニズムは、 "kext署名"と呼ばれ、システム整合性保護に統合された[12]。macOS High Sierraからは、カーネル機能拡張に署名がある場合でも、初回起動時にユーザによる許可を必要とするSecure Kernel Extension Loading(SKEL)が導入された[13]。
デフォルトでSIPによって保護されるディレクトリは次の通り[14]。
/System
/sbin
/bin
/usr
/Applications
/usr
は /usr/local
サブディレクトリを除いて保護される。/Applications
は、カレンダー、写真、Safari、ターミナル、コンソール、App Store、Notesなど、macOSがプリインストールされているアプリに対して保護されている[14]。
システム整合性保護は、システムパーティション外からのみ(全部または一部)無効にすることができる。 そのために、Appleは、“macOS 復元”システム内のターミナル.app、またはブート可能なmacOSインストールディスクから実行できるコマンドcsrutilを提供する。このユーティリティは、ブート引数をデバイスのNVRAMに追加する。 そうして、デバイス上のEl Capitan以降のmacOSのすべてのインストールされたシステムに設定が適用できる 。macOSをインストールすると、インストーラはフラグが付けられたシステムディレクトリ内の未知のコンポーネントを/Library/SystemMigration/History/Migration-[some UUID]/QuarantineRoot/
へ移動する。システムディレクトリへの書き込みを禁止することにより、システムファイルとディレクトリのアクセス許可は、Appleソフトウェアの更新中にのみ自動的に維持される。 その結果、ディスクユーティリティと対応するコマンドdiskutilでアクセス許可の修復は利用できない[15] 。
2023年5月30日、移行アシスタントを使ってSIPをバイパスできるMigraineと呼ばれる脆弱性CVE-2023-32369が見つかったことが発見したマイクロソフトにより報告されている[16]。この脆弱性は、2023年5月18日からAppleによりサポート中のOSに対して配布されたセキュリティアップデートで解消された[17][18][19]。