# macOS Небезпечні права доступу та TCC дозволи {{#include ../../../banners/hacktricks-training.md}} > [!WARNING] > Зверніть увагу, що права доступу, які починаються з **`com.apple`**, недоступні для третіх осіб, лише Apple може їх надати. ## Високий ### `com.apple.rootless.install.heritable` Права доступу **`com.apple.rootless.install.heritable`** дозволяють **обійти SIP**. Перевірте [це для отримання додаткової інформації](macos-sip.md#com.apple.rootless.install.heritable). ### **`com.apple.rootless.install`** Права доступу **`com.apple.rootless.install`** дозволяють **обійти SIP**. Перевірте [це для отримання додаткової інформації](macos-sip.md#com.apple.rootless.install). ### **`com.apple.system-task-ports` (раніше називався `task_for_pid-allow`)** Ці права доступу дозволяють отримати **порт завдання для будь-якого** процесу, за винятком ядра. Перевірте [**це для отримання додаткової інформації**](../macos-proces-abuse/macos-ipc-inter-process-communication/). ### `com.apple.security.get-task-allow` Ці права доступу дозволяють іншим процесам з правами доступу **`com.apple.security.cs.debugger`** отримати порт завдання процесу, запущеного бінарним файлом з цими правами доступу, і **впроваджувати код у нього**. Перевірте [**це для отримання додаткової інформації**](../macos-proces-abuse/macos-ipc-inter-process-communication/). ### `com.apple.security.cs.debugger` Додатки з правами доступу до інструментів налагодження можуть викликати `task_for_pid()`, щоб отримати дійсний порт завдання для незахищених і сторонніх додатків з правами доступу `Get Task Allow`, встановленими на `true`. Однак навіть з правами доступу до інструментів налагодження, налагоджувач **не може отримати порти завдання** процесів, які **не мають прав доступу `Get Task Allow`**, і які, отже, захищені захистом цілісності системи. Перевірте [**це для отримання додаткової інформації**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger). ### `com.apple.security.cs.disable-library-validation` Ці права доступу дозволяють **завантажувати фреймворки, плагіни або бібліотеки без підпису Apple або підпису з тим же ідентифікатором команди**, як основний виконуваний файл, тому зловмисник може зловживати завантаженням деякої довільної бібліотеки для впровадження коду. Перевірте [**це для отримання додаткової інформації**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation). ### `com.apple.private.security.clear-library-validation` Ці права доступу дуже схожі на **`com.apple.security.cs.disable-library-validation`**, але **замість** **прямого відключення** перевірки бібліотек, вони дозволяють процесу **викликати системний виклик `csops`, щоб відключити його**.\ Перевірте [**це для отримання додаткової інформації**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/). ### `com.apple.security.cs.allow-dyld-environment-variables` Ці права доступу дозволяють **використовувати змінні середовища DYLD**, які можуть бути використані для впровадження бібліотек і коду. Перевірте [**це для отримання додаткової інформації**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-dyld-environment-variables). ### `com.apple.private.tcc.manager` або `com.apple.rootless.storage`.`TCC` [**Згідно з цим блогом**](https://objective-see.org/blog/blog_0x4C.html) **і** [**цим блогом**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), ці права доступу дозволяють **модифікувати** базу даних **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**. **iMovie** та **Garageband** мали ці права доступу. Для отримання більшої **інформації** про експлойт для **отримання токенів iCloud** з цих прав доступу перевірте доповідь: [**#OBTS v5.0: "Що відбувається на вашому Mac, залишається в iCloud Apple?!" - Войцех Регула**](https://www.youtube.com/watch?v=_6e2LhmxVc0) ### `com.apple.private.tcc.manager.check-by-audit-token` TODO: Я не знаю, що це дозволяє робити ### `com.apple.private.apfs.revert-to-snapshot` TODO: У [**цьому звіті**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **зазначено, що це може бути використано для** оновлення вмісту, захищеного SSV, після перезавантаження. Якщо ви знаєте, як це зробити, надішліть PR, будь ласка! ### `com.apple.private.apfs.create-sealed-snapshot` TODO: У [**цьому звіті**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **зазначено, що це може бути використано для** оновлення вмісту, захищеного SSV, після перезавантаження. Якщо ви знаєте, як це зробити, надішліть PR, будь ласка! ### `keychain-access-groups` Ці права доступу перераховують **групи ключів**, до яких має доступ додаток: ```xml keychain-access-groups ichat apple appleaccount InternetAccounts IMCore ``` ### **`kTCCServiceSystemPolicyAllFiles`** Надає **Повний доступ до диска** дозволи, одне з найвищих дозволів TCC, які ви можете мати. ### **`kTCCServiceAppleEvents`** Дозволяє додатку надсилати події іншим додаткам, які зазвичай використовуються для **автоматизації завдань**. Контролюючи інші додатки, він може зловживати дозволами, наданими цими іншими додатками. Наприклад, змушуючи їх запитувати у користувача його пароль: ```bash 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"' ``` Або змусити їх виконувати **произвольні дії**. ### **`kTCCServiceEndpointSecurityClient`** Дозволяє, серед інших дозволів, **записувати базу даних TCC користувачів**. ### **`kTCCServiceSystemPolicySysAdminFiles`** Дозволяє **змінювати** атрибут **`NFSHomeDirectory`** користувача, що змінює шлях до його домашньої папки і, отже, дозволяє **обійти TCC**. ### **`kTCCServiceSystemPolicyAppBundles`** Дозволяє модифікувати файли всередині пакету додатків (всередині app.app), що **за замовчуванням заборонено**.
Можна перевірити, хто має цей доступ у _Системних налаштуваннях_ > _Конфіденційність та безпека_ > _Управління додатками._ ### `kTCCServiceAccessibility` Процес зможе **зловживати функціями доступності macOS**, що означає, що, наприклад, він зможе натискати клавіші. Тому він може запитати доступ для контролю додатка, такого як Finder, і підтвердити діалог з цим дозволом. ## Середній ### `com.apple.security.cs.allow-jit` Цей привілей дозволяє **створювати пам'ять, яка є записуваною та виконуваною**, передаючи прапорець `MAP_JIT` функції системи `mmap()`. Перевірте [**це для отримання додаткової інформації**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit). ### `com.apple.security.cs.allow-unsigned-executable-memory` Цей привілей дозволяє **перезаписувати або патчити C код**, використовувати давно застарілу **`NSCreateObjectFileImageFromMemory`** (яка є фундаментально небезпечною), або використовувати фреймворк **DVDPlayback**. Перевірте [**це для отримання додаткової інформації**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory). > [!CAUTION] > Включення цього привілею піддає ваш додаток загальним вразливостям у мовах програмування з небезпечним управлінням пам'яттю. Уважно розгляньте, чи потрібен вашому додатку цей виняток. ### `com.apple.security.cs.disable-executable-page-protection` Цей привілей дозволяє **модифікувати секції своїх власних виконуваних файлів** на диску, щоб примусово вийти. Перевірте [**це для отримання додаткової інформації**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-executable-page-protection). > [!CAUTION] > Привілей Disable Executable Memory Protection є екстремальним привілеєм, який усуває основний захист безпеки з вашого додатку, що робить можливим для зловмисника переписати виконуваний код вашого додатку без виявлення. Вибирайте вужчі привілеї, якщо це можливо. ### `com.apple.security.cs.allow-relative-library-loads` TODO ### `com.apple.private.nullfs_allow` Цей привілей дозволяє монтувати файлову систему nullfs (заборонену за замовчуванням). Інструмент: [**mount_nullfs**](https://github.com/JamaicanMoose/mount_nullfs/tree/master). ### `kTCCServiceAll` Згідно з цим блогом, цей дозвіл TCC зазвичай зустрічається у формі: ``` [Key] com.apple.private.tcc.allow-prompting [Value] [Array] [String] kTCCServiceAll ``` Дозвольте процесу **запитувати всі дозволи TCC**. ### **`kTCCServicePostEvent`** {{#include ../../../banners/hacktricks-training.md}}