macOS SIP
WhiteIntelは、ダークウェブを活用した検索エンジンで、企業やその顧客がスティーラーマルウェアによって侵害されていないかをチェックする無料機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックして、無料でエンジンを試すことができます:
基本情報
macOSの**System Integrity Protection(SIP)**は、最も特権のあるユーザーでもシステムの重要なフォルダに不正な変更を加えることを防ぐように設計されたメカニズムです。この機能は、保護された領域でのファイルの追加、変更、削除などのアクションを制限することで、システムの整合性を維持する上で重要な役割を果たします。SIPによって保護される主要なフォルダには次のものがあります:
/System
/bin
/sbin
/usr
SIPの動作を規定するルールは、**/System/Library/Sandbox/rootless.conf
**にある構成ファイルで定義されています。このファイルでは、アスタリスク(*)で前置されたパスは、厳格なSIP制限の例外として示されています。
以下はその例です:
このスニペットは、SIPが一般的に**/usr
**ディレクトリを保護する一方で、特定のサブディレクトリ(/usr/libexec/cups
、/usr/local
、および/usr/share/man
)では、そのパスの前にアスタリスク(*)が付いていることから、変更が許可されていることを示しています。
ディレクトリやファイルがSIPによって保護されているかどうかを確認するには、**ls -lOd
コマンドを使用して、restricted
またはsunlnk
**フラグの存在を確認できます。例:
この場合、sunlnk
フラグは、/usr/libexec/cups
ディレクトリそのものは削除できませんが、その中のファイルは作成、変更、削除ができることを示しています。
一方:
ここでは、restricted
フラグは /usr/libexec
ディレクトリがSIPによって保護されていることを示しています。SIPで保護されたディレクトリでは、ファイルを作成、変更、削除することはできません。
さらに、ファイルに属性 com.apple.rootless
拡張 属性 が含まれている場合、そのファイルも SIPによって保護されます。
SIPは他のrootアクションも制限します:
信頼されていないカーネル拡張機能の読み込み
Appleが署名したプロセスのタスクポートの取得
NVRAM変数の変更
カーネルデバッグの許可
オプションは nvram 変数にビットフラグとして保持されます(Intelでは csr-active-config
、ARMではブートされたデバイスツリーから lp-sip0
が読み取られます)。csr.sh
のXNUソースコードでフラグを見つけることができます:
SIP ステータス
次のコマンドでシステムでSIPが有効になっているかどうかを確認できます:
もしSIPを無効にする必要がある場合は、コンピュータをリカバリーモードで再起動する必要があります(起動時にCommand+Rを押します)、その後、次のコマンドを実行します:
SIPを有効のままにしてデバッグ保護を削除したい場合は、次のようにします:
その他の制限
署名されていないカーネル拡張機能(kext)の読み込みを禁止し、検証済みの拡張機能のみがシステムカーネルとやり取りすることを保証します。
macOSシステムプロセスのデバッグを防止し、コアシステムコンポーネントを不正なアクセスや変更から保護します。
dtraceなどのツールがシステムプロセスを検査するのを防止し、システムの運用の整合性をさらに保護します。
SIP バイパス
SIPをバイパスすることで、攻撃者は次のことができます:
ユーザーデータへのアクセス:すべてのユーザーアカウントからメール、メッセージ、Safariの履歴などの機密ユーザーデータを読み取る。
TCC バイパス:TCC(透明性、同意、および制御)データベースを直接操作して、ウェブカメラ、マイク、およびその他のリソースへの不正アクセスを許可します。
持続性の確立:SIPで保護された場所にマルウェアを配置し、それをルート権限でも削除できないようにします。これにはマルウェア除去ツール(MRT)を改ざんする可能性も含まれます。
カーネル拡張機能の読み込み:追加の保護策があるものの、SIPをバイパスすると署名されていないカーネル拡張機能を読み込むプロセスが簡素化されます。
インストーラーパッケージ
Appleの証明書で署名されたインストーラーパッケージは、その保護をバイパスできます。これは、標準の開発者によって署名されたパッケージでも、SIPで保護されたディレクトリを変更しようとするとブロックされることを意味します。
存在しないSIPファイル
潜在的な抜け穴の1つは、rootless.conf
でファイルが指定されているが現在存在しない場合、作成できることです。マルウェアはこれを利用してシステム上に持続性を確立する可能性があります。たとえば、悪意のあるプログラムがrootless.conf
にリストされているが存在しない場合、/System/Library/LaunchDaemons
に.plistファイルを作成できます。
com.apple.rootless.install.heritable
権限 com.apple.rootless.install.heritable
はSIPをバイパスすることを許可します
システムがコード署名を検証した後にインストーラーパッケージを入れ替え、元の代わりに悪意のあるパッケージをインストールすることが可能であることが発見されました。これらのアクションは**system_installd
**によって実行されたため、SIPをバイパスすることが可能となりました。
マウントされたイメージや外部ドライブからパッケージがインストールされた場合、インストーラーはそのファイルシステムからバイナリを実行しました(SIPで保護された場所からではなく)、これにより**system_installd
**が任意のバイナリを実行しました。
CVE-2021-30892 - Shrootless
このブログ投稿からの研究者 は、macOSのシステムインテグリティ保護(SIP)メカニズムにおいて、'Shrootless'脆弱性と呼ばれる脆弱性を発見しました。この脆弱性は、**system_installd
デーモンを中心にしており、com.apple.rootless.install.heritable
**という権限を持つため、その子プロセスのいずれかがSIPのファイルシステム制限をバイパスできます。
**system_installd
**デーモンは、Appleによって署名されたパッケージ(.pkgファイル)をインストールします。
研究者は、Appleによって署名されたパッケージ(.pkgファイル)のインストール中に、system_installd
がパッケージに含まれるポストインストールスクリプトを実行することを発見しました。これらのスクリプトはデフォルトのシェルである**zsh
によって実行され、非対話モードでも存在する場合は/etc/zshenv
ファイルからコマンドが自動的に実行されます。この動作は攻撃者によって悪用される可能性があります:悪意のある/etc/zshenv
ファイルを作成し、system_installd
がzsh
を呼び出すのを待つ**ことで、デバイス上で任意の操作を実行できます。
さらに、/etc/zshenv
はSIPバイパスだけでなく一般的な攻撃手法として使用できることが発見されました。各ユーザープロファイルには~/.zshenv
ファイルがあり、これは/etc/zshenv
と同じように動作しますが、ルート権限は必要ありません。このファイルは、zsh
が起動するたびにトリガーされる持続性メカニズムとして使用したり、特権昇格メカニズムとして使用したりできます。管理者ユーザーがsudo -s
またはsudo <command>
を使用してルートに昇格すると、~/.zshenv
ファイルがトリガーされ、実質的にルートに昇格します。
CVE-2022-22583 では、同じ**system_installd
プロセスが/tmp
内のSIPで保護されたランダムな名前のフォルダにポストインストールスクリプトを配置していたため、悪用される可能性がありました。/tmp
自体はSIPで保護されていないため、仮想イメージをマウントし、インストーラーがそこにポストインストールスクリプトを配置し、仮想イメージをアンマウント**し、すべてのフォルダを再作成し、ペイロードを実行するためのポストインストールスクリプトを追加することが可能でした。
fsck_cs
がシンボリックリンクをたどる能力により、重要なファイルを破損させるように誤誘導される脆弱性が特定されました。具体的には、攻撃者が/dev/diskX
からファイル/System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist
へのリンクを作成しました。/dev/diskX
で**fsck_cs
**を実行すると、Info.plist
が破損します。このファイルの整合性は、カーネル拡張機能の読み込みを制御するSIP(システムインテグリティ保護)にとって重要です。破損すると、SIPのカーネル除外の管理能力が損なわれます。
この脆弱性を悪用するためのコマンドは次のとおりです:
この脆弱性の悪用には深刻な影響があります。通常、カーネル拡張機能のアクセス許可を管理するInfo.plist
ファイルが無効になります。これには、AppleHWAccess.kext
など特定の拡張機能をブラックリストに登録できなくなることが含まれます。したがって、SIPの制御メカニズムが機能しなくなると、この拡張機能がロードされ、システムのRAMへの不正な読み取りおよび書き込みアクセスが許可されます。
SIP保護されたフォルダーに新しいファイルシステムをマウントして保護をバイパスすることが可能でした。
システムは、Install macOS Sierra.app
内の埋め込みインストーラディスクイメージから起動するように設定されており、OSをアップグレードするためにbless
ユーティリティを利用しています。使用されるコマンドは次のとおりです:
このプロセスのセキュリティは、攻撃者がブート前にアップグレードイメージ(InstallESD.dmg
)を変更すると危険にさらされる可能性があります。この戦略は、動的ローダー(dyld)を悪意のあるバージョン(libBaseIA.dylib
)で置き換えることを含みます。この置換により、インストーラが起動されるときに攻撃者のコードが実行されます。
攻撃者のコードは、アップグレードプロセス中に制御を取得し、システムがインストーラに対する信頼を悪用します。攻撃は、InstallESD.dmg
イメージを変更することによって進行し、特にextractBootBits
メソッドをターゲットとします。これにより、ディスクイメージが使用される前に悪意のあるコードの注入が可能となります。
さらに、InstallESD.dmg
内には、アップグレードコードのルートファイルシステムとして機能するBaseSystem.dmg
があります。これに動的ライブラリを注入することで、悪意のあるコードがOSレベルのファイルを変更できるプロセス内で動作することが可能となり、システムの侵害の可能性が大幅に高まります。
DEF CON 31でのこのトークでは、SIPをバイパスできる systemmigrationd
が bash と perl スクリプトを実行し、BASH_ENV
と PERL5OPT
経由で悪用されることが示されています。
CVE-2023-42860
このブログ投稿に詳細が記載されており、InstallAssistant.pkg
パッケージからの postinstall
スクリプトが実行されていました。
そして${SHARED_SUPPORT_PATH}/SharedSupport.dmg
にシンボリックリンクを作成することで、ユーザーがSIP保護をバイパスして任意のファイルを無制限に解除することが可能でした。
com.apple.rootless.install
権限 com.apple.rootless.install
はSIPをバイパスすることを許可します
権限com.apple.rootless.install
は、macOSにおけるSystem Integrity Protection(SIP)をバイパスすることができることで知られています。これは特にCVE-2022-26712に関連して言及されています。
この特定のケースでは、/System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc
にあるシステムXPCサービスがこの権限を持っています。これにより、関連するプロセスがSIPの制約を回避できます。さらに、このサービスはセキュリティ対策を施さずにファイルの移動を許可するメソッドを提供しています。
封印されたシステムスナップショット
封印されたシステムスナップショットは、Appleが**macOS Big Sur(macOS 11)**で導入した機能で、**System Integrity Protection(SIP)**メカニズムの一部として追加のセキュリティとシステムの安定性を提供します。これらは基本的にシステムボリュームの読み取り専用バージョンです。
以下は詳細です:
不変のシステム:封印されたシステムスナップショットはmacOSシステムボリュームを「不変」にし、変更できないようにします。これにより、セキュリティやシステムの安定性が危険にさらされる可能性のある不正または偶発的な変更が防止されます。
システムソフトウェアの更新:macOSのアップデートやアップグレードをインストールすると、macOSは新しいシステムスナップショットを作成します。macOSの起動ボリュームは、**APFS(Apple File System)**を使用してこの新しいスナップショットに切り替えます。更新を適用するプロセス全体が安全かつ信頼性が高くなり、更新中に何か問題が発生した場合でもシステムは常に前のスナップショットに戻ることができます。
データの分離:macOS Catalinaで導入されたデータとシステムボリュームの分離の概念と組み合わせて、封印されたシステムスナップショット機能は、すべてのデータと設定が別々の「Data」ボリュームに保存されるようにします。この分離により、データがシステムから独立しており、システムの更新プロセスが簡素化され、システムのセキュリティが向上します。
これらのスナップショットはmacOSによって自動的に管理され、APFSのスペース共有機能のおかげでディスク上の追加のスペースを取らずに済みます。また、これらのスナップショットは、システム全体のユーザーアクセス可能なバックアップであるTime Machineスナップショットとは異なります。
スナップショットの確認
コマンド diskutil apfs list
はAPFSボリュームの詳細とそのレイアウトをリストします:
前述の出力では、ユーザーアクセス可能な場所が/System/Volumes/Data
の下にマウントされていることがわかります。
さらに、macOSシステムボリュームのスナップショットは/
にマウントされており、封印されています(OSによって暗号化されています)。したがって、SIPがバイパスされて変更された場合、OSは起動しなくなります。
また、シールが有効になっていることを確認するには、次のコマンドを実行することができます:
さらに、スナップショットディスクは読み取り専用としてマウントされています:
WhiteIntelは、ダークウェブを活用した検索エンジンで、企業や顧客がスティーラーマルウェアによって侵害されていないかをチェックする無料の機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックし、無料でエンジンを試すことができます:
Last updated