システム整合性保護

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
システム整合性保護
OS X security layers.svg
macOSのセキュリティ階層
開発元 アップル
対応OS macOS
サポート状況 継続中
公式サイト developer.apple.com/library/content/documentation/Security/Conceptual/System_Integrity_Protection_Guide/Introduction/Introduction.html
テンプレートを表示

システム整合性保護 (System Integrity Protection, SIP[1]rootlessとも呼ばれる[2][3])は、 OS X El Capitanから導入されたアップルのmacOSのセキュリティ機能である。この機能は、カーネルによって強制される多くのメカニズムで構成されている。中心となるのは、root権限を持つユーザーまたはroot権限(sudo)を持つユーザーによって実行された場合でも、システム所有のファイルとディレクトリを特定の"資格"を持たないプロセスによる変更から保護することでる。

アップルによれば、rootユーザーはシステムのセキュリティ、特に利用しているユーザーが管理者である単一のユーザーアカウントを持つシステムで重大なリスク要因になる。システム整合性保護は、デフォルトで有効となっており、この機能を無効にすることもできる[4][5]

導入理由[編集]

アップルによれば、システム整合性保護は高いレベルのセキュリティを実現する必要な手段を確保している。2015年のWWDCのSession 706[6]で、アップルの技術者Pierre-Olivier Martelは、システムの残りの弱点の1つとして、無制限のルートアクセスを次のように説明した。「マルウェアが1つのパスワードでデバイスを完全に制御することが出来る、という脆弱性がある。」つまり、ほとんどのユーザーはそれを求めているプログラムにrootアクセスできる。そのようなシステム上のユーザーがプロンプトを表示された時に、しばしば弱い、または存在しないアカウントパスワードを入力するたびに、システム全体のセキュリティが損なわれる可能性があることを示した。root権限を制限することは、macOSでは前例のないことである。たとえば、Mac OS X Leopard以前のバージョンのmacOSでは、レベル1のsecurelevelが使用されている。これは、macOSがベースの1つとしているBSDとそのバリエーションに由来するセキュリティ機能である[7]

機能[編集]

Prohibited sign that is shown during the boot process when the system is not allowed to proceed.
"禁止表示"[8] は、macOSがブートプロセス完了出来ない場合に表示される。原因の1つは、"kext署名"が有効化され、署名のないカーネルの拡張があった場合である。

システム整合性保護のメカニズム

  • システムファイルとディレクトリの内容とファイルシステムパーミッションの保護;
  • コードインジェクション、ランタイムアタッチ(デバッグのような)およびDTraceに対するプロセスの保護;
  • 署名されていないカーネル拡張( "kexts")に対する保護

システム整合性保護は、システムファイルやシステムディレクトリを保護するフラグを立てる。これらの追加、 拡張ファイル属性 は、/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以降、ドライバなどのカーネル機能拡張には、特定のアップルが承認したコード署名をする必要がある。 その為、開発者は、アップルへ開発者IDを要求する必要がある[11] 。コード署名されていない機能拡張が存在する場合、カーネルはシステムの起動を拒否し、代わりに禁止記号を表示する。このメカニズムは、 "kext署名"と呼ばれ、システム整合性保護に統合された[12]macOS High Sierraからは、カーネル機能拡張に署名がある場合でも、初回起動時にユーザによる許可を必要とするSecure Kernel Extension Loading(SKEL)が導入された[13]

設定[編集]

システム整合性保護は、システムパーティション外からのみ(全部または一部)無効にすることができる。 そのために、アップルは、“macOS 復元”システム内のターミナル、またはブート可能なmacOSインストールディスクから実行できるコマンドcsrutilを提供する。このユーティリティは、ブート引数をデバイスのNVRAMに追加する。 そうして、デバイス上のEl Capitan以降のmacOSのすべてのインストールされたシステムに設定が適用できる 。macOSをインストールすると、インストーラはフラグが付けられたシステムディレクトリ内の未知のコンポーネントを/Library/SystemMigration/History/Migration-[some UUID]/QuarantineRoot/ へ移動する。システムディレクトリへの書き込みを禁止することにより、システムファイルとディレクトリのアクセス許可は、Appleソフトウェアの更新中にのみ自動的に維持される。 その結果、ディスクユーティリティと対応するコマンドdiskutilでアクセス許可の修復は利用できない[14] 。

関連項目[編集]

参考文献[編集]

  1. ^ Cunningham, Andrew (2015年9月29日). “OS X 10.11 El Capitan: The Ars Technica Review”. Ars Technica. 2015年9月29日閲覧。
  2. ^ Cunningham, Andrew (2015年6月17日). “First look: OS X El Capitan brings a little Snow Leopard to Yosemite”. Ars Technica. 2015年6月18日閲覧。
  3. ^ Slivka, Eric (2015年6月12日). “OS X El Capitan Opens Door to TRIM Support on Third-Party SSDs for Improved Performance”. MacRumors. 2015年6月18日閲覧。
  4. ^ Martel, Pierre-Olivier (2015年6月). “Security and Your Apps (PDF)”. Apple Developer. pp. 8–54. 2016年9月30日閲覧。
  5. ^ Configuring System Integrity Protection”. Mac Developer Library. Apple (2015年9月16日). 2016年8月17日時点のオリジナルよりアーカイブ。2016年9月30日閲覧。
  6. ^ Inc., Apple. “Security and Your Apps - WWDC 2015 - Videos - Apple Developer” (英語). Apple Developer. 2018年9月5日閲覧。
  7. ^ Garfinkel, Simon; Spafford, Gene; Schwartz, Alan (2003). Practical UNIX and Internet Security. O'Reilly Media. pp. 118–9. ISBN 9780596003234. 
  8. ^ About the screens you see when your Mac starts up”. Apple Support (2015年8月13日). 2016年4月21日時点のオリジナルよりアーカイブ。2016年9月30日閲覧。
  9. ^ About System Integrity Protection on your Mac”. Apple Support (2016年5月30日). 2016年3月20日時点のオリジナルよりアーカイブ。2016年9月30日閲覧。
  10. ^ What's New In OS X - OS X El Capitan v10.11”. Mac Developer Library. Apple. 2016年3月4日時点のオリジナルよりアーカイブ。2016年9月30日閲覧。 “Code injection and runtime attachments to system binaries are no longer permitted.”
  11. ^ Kernel Extensions”. Mac Developer Library. Apple (2015年9月16日). 2016年8月17日時点のオリジナルよりアーカイブ。2016年9月29日閲覧。
  12. ^ Trim in Yosemite”. Cindori. 2015年6月18日閲覧。
  13. ^ Technical Note TN2459: User-Approved Kernel Extension Loading” (英語). developer.apple.com. 2018年9月5日閲覧。
  14. ^ OS X El Capitan Developer Beta 2 Release Notes”. Mac Developer Library. Apple (2015年6月22日). 2016年6月26日時点のオリジナルよりアーカイブ。2015年6月29日閲覧。

外部リンク[編集]