hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md

14 KiB
Raw Blame History

macOS 危険な権限とTCCの許可

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

{% hint style="warning" %} com.apple で始まる権限は、サードパーティには利用できません。Appleのみがそれらを付与できます。 {% endhint %}

High

com.apple.rootless.install.heritable

権限 com.apple.rootless.install.heritableSIPをバイパスすることができます。詳細についてはこちらを参照してください。

com.apple.rootless.install

権限 com.apple.rootless.installSIPをバイパスすることができます。詳細についてはこちらを参照してください。

com.apple.system-task-ports (以前は task_for_pid-allow)

この権限は、カーネルを除く任意のプロセスのタスクポートを取得することができます。詳細についてはこちらを参照してください。

com.apple.security.get-task-allow

この権限により、com.apple.security.cs.debugger 権限を持つ他のプロセスが、この権限を持つバイナリで実行されるプロセスのタスクポートを取得し、それにコードを注入することができます。詳細についてはこちらを参照してください。

com.apple.security.cs.debugger

デバッグツール権限を持つアプリは、Get Task Allow 権限が true に設定された署名されていないサードパーティアプリに対して task_for_pid() を呼び出すことで有効なタスクポートを取得できます。ただし、デバッグツール権限を持っていても、デバッガは Get Task Allow 権限を持たないプロセスのタスクポート を取得することはできず、そのためシステム整合性保護によって保護されています。詳細についてはこちらを参照してください。

com.apple.security.cs.disable-library-validation

この権限により、Appleによって署名されていないか、メインの実行可能ファイルと同じチームIDで署名されていないフレームワーク、プラグイン、またはライブラリを ロードすることができます。したがって、攻撃者は任意のライブラリのロードを悪用してコードを注入することができます。詳細についてはこちらを参照してください。

com.apple.private.security.clear-library-validation

この権限は com.apple.security.cs.disable-library-validation と非常に似ていますが、ライブラリの検証を直接無効にする代わりに、プロセスがそれを無効にするために csops システムコールを呼び出すことができるようにします。詳細についてはこちらを参照してください。

com.apple.security.cs.allow-dyld-environment-variables

この権限により、ライブラリやコードを注入するために使用される可能性のある DYLD環境変数 を使用することができます。詳細についてはこちらを参照してください。

com.apple.private.tcc.manager または com.apple.rootless.storage.TCC

このブログ および このブログによると、これらの権限により、TCC データベースを 変更することができます。

system.install.apple-software および system.install.apple-software.standar-user

これらの権限により、ユーザーの許可を求めることなくソフトウェアを インストールすることができます。これは特権エスカレーションに役立ちます。

com.apple.private.security.kext-management

カーネルにカーネル拡張をロードするために必要な権限です。

com.apple.private.icloud-account-access

権限 com.apple.private.icloud-account-access を使用すると、com.apple.iCloudHelper XPCサービスと通信し、iCloudトークンを提供することができます。

iMovieGarageband にはこの権限があります。

この権限から icloudトークンを取得する 攻撃についての詳細は、以下のトークを参照してください:#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula

com.apple.private.tcc.manager.check-by-audit-token

TODO: これが何を許可するのかわかりません

com.apple.private.apfs.revert-to-snapshot

TODO: このレポート には、再起動後にSSVで保護されたコンテンツを更新するために使用できる可能性があると述べられています。方法を知っている場合は、PRを送ってください

com.apple.private.apfs.create-sealed-snapshot

TODO: このレポート には、再起動後にSSVで保護されたコンテンツを更新するために使用できる可能性があると述べられています。方法を知っている場合は、PRを送ってください

keychain-access-groups

このエンタイトルメントは、アプリケーションがアクセスできるキーチェーングループのリストです:

<key>keychain-access-groups</key>
<array>
<string>ichat</string>
<string>apple</string>
<string>appleaccount</string>
<string>InternetAccounts</string>
<string>IMCore</string>
</array>

kTCCServiceSystemPolicyAllFiles

フルディスクアクセス権限を与えます。これは、TCCで最も高い権限の1つです。

kTCCServiceAppleEvents

このアプリは、タスクの自動化に一般的に使用される他のアプリにイベントを送信することができます。他のアプリを制御することで、これらの他のアプリに付与された権限を悪用することができます。

例えば、ユーザーにパスワードを求めるように他のアプリに指示することができます:

{% code overflow="wrap" %}

osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'

{% endcode %}

または、それらに任意のアクションを実行させることができます。

kTCCServiceEndpointSecurityClient

他の権限の中には、ユーザーのTCCデータベースを書き込むことができるものもあります。

kTCCServiceSystemPolicySysAdminFiles

ユーザーがホームフォルダのパスを変更するために**NFSHomeDirectory属性を変更することができ、それによってTCCをバイパス**することができます。

kTCCServiceSystemPolicyAppBundles

デフォルトでは許可されていないアプリ内のファイルapp.app内のアプリ内バンドル内のファイルを変更することができます。

このアクセス権を持っているユーザーは、システム設定 > プライバシーとセキュリティ > _アプリの管理_で確認することができます。

中程度

com.apple.security.cs.allow-jit

この権限を持つと、mmap()システム関数にMAP_JITフラグを渡すことで、書き込みと実行が可能なメモリを作成することができます。詳細についてはこちらを参照してください

com.apple.security.cs.allow-unsigned-executable-memory

この権限を持つと、Cコードをオーバーライドまたはパッチすることができ、長期間非推奨とされている**NSCreateObjectFileImageFromMemory**(基本的には安全ではない)を使用することができます。また、DVDPlaybackフレームワークも使用できます。詳細についてはこちらを参照してください

{% hint style="danger" %} この権限を含めると、アプリはメモリの安全でないコード言語における一般的な脆弱性にさらされる可能性があります。この例外が必要かどうかを慎重に考慮してください。 {% endhint %}

com.apple.security.cs.disable-executable-page-protection

この権限を持つと、自身の実行可能ファイルのディスク上のセクションを強制的に変更して終了することができます。詳細についてはこちらを参照してください

{% hint style="danger" %} Disable Executable Memory Protection Entitlementは、アプリの基本的なセキュリティ保護を削除する極端な権限であり、攻撃者が検出されずにアプリの実行可能コードを書き換えることが可能になります。可能な限り狭い範囲の権限を使用してください。 {% endhint %}

com.apple.security.cs.allow-relative-library-loads

TODO

com.apple.private.nullfs_allow

この権限を持つと、通常は禁止されているnullfsファイルシステムをマウントすることができます。ツールmount_nullfs

kTCCServiceAll

このブログポストによると、このTCC権限は通常、次の形式で見つかります

[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll

プロセスにすべてのTCC権限を要求することを許可します。

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥