macOS Dangerous Entitlements & TCC perms
Notez que les autorisations commençant par com.apple
ne sont pas disponibles pour les tiers, seul Apple peut les accorder.
Élevé
com.apple.rootless.install.heritable
com.apple.rootless.install.heritable
L'autorisation com.apple.rootless.install.heritable
permet de contourner SIP. Consultez ceci pour plus d'informations.
com.apple.rootless.install
com.apple.rootless.install
L'autorisation com.apple.rootless.install
permet de contourner SIP. Consultez ceci pour plus d'informations.
com.apple.system-task-ports
(précédemment appelé task_for_pid-allow
)
com.apple.system-task-ports
(précédemment appelé task_for_pid-allow
)Cette autorisation permet d'obtenir le port de tâche pour n'importe quel processus, sauf le noyau. Consultez ceci pour plus d'informations.
com.apple.security.get-task-allow
com.apple.security.get-task-allow
Cette autorisation permet à d'autres processus avec l'autorisation com.apple.security.cs.debugger
d'obtenir le port de tâche du processus exécuté par le binaire avec cette autorisation et d'injecter du code dedans. Consultez ceci pour plus d'informations.
com.apple.security.cs.debugger
com.apple.security.cs.debugger
Les applications avec l'Autorisation d'Outil de Débogage peuvent appeler task_for_pid()
pour récupérer un port de tâche valide pour les applications non signées et tierces avec l'autorisation Get Task Allow
définie sur true
. Cependant, même avec l'autorisation d'outil de débogage, un débogueur ne peut pas obtenir les ports de tâche des processus qui n'ont pas l'autorisation Get Task Allow
, et qui sont donc protégés par la Protection de l'Intégrité du Système. Consultez ceci pour plus d'informations.
com.apple.security.cs.disable-library-validation
com.apple.security.cs.disable-library-validation
Cette autorisation permet de charger des frameworks, des plug-ins ou des bibliothèques sans être signés par Apple ou signés avec le même ID d'équipe que l'exécutable principal, ce qui permettrait à un attaquant d'abuser de certains chargements de bibliothèques arbitraires pour injecter du code. Consultez ceci pour plus d'informations.
com.apple.private.security.clear-library-validation
com.apple.private.security.clear-library-validation
Cette autorisation est très similaire à com.apple.security.cs.disable-library-validation
mais au lieu de désactiver directement la validation de bibliothèque, elle permet au processus d'appeler un appel système csops
pour la désactiver.
Consultez ceci pour plus d'informations.
com.apple.security.cs.allow-dyld-environment-variables
com.apple.security.cs.allow-dyld-environment-variables
Cette autorisation permet d'utiliser des variables d'environnement DYLD qui pourraient être utilisées pour injecter des bibliothèques et du code. Consultez ceci pour plus d'informations.
com.apple.private.tcc.manager
ou com.apple.rootless.storage
.TCC
com.apple.private.tcc.manager
ou com.apple.rootless.storage
.TCC
Selon ce blog et ce blog, ces autorisations permettent de modifier la base de données TCC.
system.install.apple-software
et system.install.apple-software.standar-user
system.install.apple-software
et system.install.apple-software.standar-user
Ces autorisations permettent d'installer des logiciels sans demander la permission de l'utilisateur, ce qui peut être utile pour une escalade de privilèges.
com.apple.private.security.kext-management
com.apple.private.security.kext-management
Autorisation nécessaire pour demander au noyau de charger une extension de noyau.
com.apple.private.icloud-account-access
com.apple.private.icloud-account-access
Avec l'autorisation com.apple.private.icloud-account-access
, il est possible de communiquer avec le service XPC com.apple.iCloudHelper
qui fournira des jetons iCloud.
iMovie et Garageband avaient cette autorisation.
Pour plus d'informations sur l'exploit pour obtenir des jetons iCloud à partir de cette autorisation, consultez la présentation : #OBTS v5.0 : "Ce qui se passe sur votre Mac, reste sur iCloud d'Apple ?!" - Wojciech Regula
com.apple.private.tcc.manager.check-by-audit-token
com.apple.private.tcc.manager.check-by-audit-token
TODO: Je ne sais pas ce que cela permet de faire
com.apple.private.apfs.revert-to-snapshot
com.apple.private.apfs.revert-to-snapshot
TODO: Dans ce rapport il est mentionné que cela pourrait être utilisé pour mettre à jour les contenus protégés par SSV après un redémarrage. Si vous savez comment, envoyez une PR s'il vous plaît !
com.apple.private.apfs.create-sealed-snapshot
com.apple.private.apfs.create-sealed-snapshot
TODO: Dans ce rapport il est mentionné que cela pourrait être utilisé pour mettre à jour les contenus protégés par SSV après un redémarrage.
keychain-access-groups
keychain-access-groups
Cette liste d'autorisations répertorie les groupes de trousseaux auxquels l'application a accès :
kTCCServiceSystemPolicyAllFiles
kTCCServiceSystemPolicyAllFiles
Accorde les autorisations d'Accès complet au disque, l'une des autorisations les plus élevées de TCC que vous puissiez avoir.
kTCCServiceAppleEvents
kTCCServiceAppleEvents
Permet à l'application d'envoyer des événements à d'autres applications couramment utilisées pour automatiser des tâches. En contrôlant d'autres applications, elle peut abuser des autorisations accordées à ces autres applications.
Comme les amener à demander à l'utilisateur son mot de passe:
Ou les faire effectuer des actions arbitraires.
kTCCServiceEndpointSecurityClient
kTCCServiceEndpointSecurityClient
Permet, entre autres autorisations, d'écrire dans la base de données TCC des utilisateurs.
kTCCServiceSystemPolicySysAdminFiles
kTCCServiceSystemPolicySysAdminFiles
Permet de modifier l'attribut NFSHomeDirectory
d'un utilisateur qui modifie le chemin de son dossier personnel et permet donc de contourner TCC.
kTCCServiceSystemPolicyAppBundles
kTCCServiceSystemPolicyAppBundles
Permet de modifier des fichiers à l'intérieur des bundles d'applications (à l'intérieur de app.app), ce qui est interdit par défaut.
Il est possible de vérifier qui a cet accès dans Préférences Système > Confidentialité et sécurité > Gestion des apps.
kTCCServiceAccessibility
kTCCServiceAccessibility
Le processus pourra abuser des fonctionnalités d'accessibilité de macOS, ce qui signifie qu'il pourra par exemple appuyer sur des touches. Ainsi, il pourrait demander l'accès pour contrôler une app comme Finder et approuver la boîte de dialogue avec cette autorisation.
Moyen
com.apple.security.cs.allow-jit
com.apple.security.cs.allow-jit
Cet avantage permet de créer de la mémoire qui est inscriptible et exécutable en passant le drapeau MAP_JIT
à la fonction système mmap()
. Vérifiez ceci pour plus d'informations.
com.apple.security.cs.allow-unsigned-executable-memory
com.apple.security.cs.allow-unsigned-executable-memory
Cet avantage permet de outrepasser ou patcher du code C, utiliser la longtemps dépréciée NSCreateObjectFileImageFromMemory
(qui est fondamentalement non sécurisée), ou utiliser le framework DVDPlayback. Vérifiez ceci pour plus d'informations.
Inclure cet avantage expose votre app à des vulnérabilités courantes dans les langages de code non sécurisés en mémoire. Considérez attentivement si votre app a besoin de cette exception.
com.apple.security.cs.disable-executable-page-protection
com.apple.security.cs.disable-executable-page-protection
Cet avantage permet de modifier des sections de ses propres fichiers exécutables sur le disque pour sortir de force. Vérifiez ceci pour plus d'informations.
L'avantage de désactivation de la protection de la mémoire exécutable est un avantage extrême qui supprime une protection de sécurité fondamentale de votre app, permettant à un attaquant de réécrire le code exécutable de votre app sans détection. Privilégiez des avantages plus restreints si possible.
com.apple.security.cs.allow-relative-library-loads
com.apple.security.cs.allow-relative-library-loads
TODO
com.apple.private.nullfs_allow
com.apple.private.nullfs_allow
Cet avantage permet de monter un système de fichiers nullfs (interdit par défaut). Outil : mount_nullfs.
kTCCServiceAll
kTCCServiceAll
Selon ce billet de blog, cette permission TCC se trouve généralement sous la forme :
Permettre au processus de demander toutes les autorisations TCC.
kTCCServicePostEvent
kTCCServicePostEvent
Last updated