16 votes

Modifier TCC.db pour contourner "'Foo.app' veut accéder au contrôle 'Bar.app'" sur sa propre machine.

Je fais un usage intensif des Apple Events pour contrôler une grande variété d'applications sur ma machine. Les nouvelles invites de sécurité introduites dans Mojave sont les suivantes paralysant .

enter image description here

Dans les versions précédentes de MacOS, une fois qu'une application avait obtenu l'autorisation de "contrôler votre ordinateur", elle pouvait envoyer des événements Apple à n'importe quelle autre application sur votre machine. Dans Mojave, cette autorisation doit être accordée manuellement une fois pour chaque application contrôlée.

Une fois qu'un utilisateur a autorisé l'accès, sa sélection est stockée dans l'une des deux bases de données sqlite :

  1. ~/Library/Application Support/com.apple.TCC/TCC.db
  2. /Library/Application Support/com.apple.TCC/TCC.db

    • Notez que le point 2 n'est visible que par l'utilisateur root.
    • Notez que la protection de l'intégrité du système est désactivée.

Serait-il possible d'éditer directement ces bases de données sqlite pour accorder automatiquement les permissions et contourner ces invites de sécurité ?

0 votes

@user3439894 Merci, SIP est déjà désactivé sur ma machine. Il ne semble pas que ce programme Python soit compatible avec la nouvelle protection "Automation" de Mojave.

0 votes

Qu'est-ce qui envoie les Apple Events aux différentes applications (par exemple, combien de Foo.app avez-vous et combien de Bar.app avez-vous et cette matrice est-elle clairsemée ou dense ?) Êtes-vous d'accord avec une solution qui n'évolue pas au-delà de 3 machines que vous contrôlez (ou qui nécessite des fonds à ce stade) ?

0 votes

@bmike Mes applescripts ont des lignes comme "dire à l'application (chemin de l'application la plus en avant sous forme de texte) de quitter", donc Bar.app pourrait être n'importe quelle application installée. Tout ceci se passe sur une seule machine.

9voto

Dustin Martin Points 447

L'accès direct à la base de données TCC.db n'est plus pris en charge par Apple, même si vous désactivez le SIP En raison de leur politique de protection des utilisateurs contre les grandes entreprises qui aiment suivre tout ce que vous faites en ligne, ils ont également utilisé ce contournement furtif sans demander la permission aux utilisateurs. Cependant, même dans Mojave, il existe un moyen de contourner ce problème, mais avec un piège : qui ne fonctionne que si un ordinateur donné est inscrit à un programme de GDR . Pour en savoir plus sur le programme MDM, rendez-vous sur aquí .

Afin de contourner cela pour plusieurs ordinateurs, vous pouvez utiliser le script Python. tccprofile.py disponible à l'adresse GitHub .

Pour autant que je sache, c'est le seul moyen de contourner la nécessité de demander la permission de l'utilisateur à partir de Mojave.

1 votes

Il n'est vraiment pas pratique d'obtenir un profil MDM pour mes scripts personnels. Avec le SIP désactivé, qu'est-ce qui m'empêche exactement de modifier la base de données ? Je reconnais que le système lui-même ne peut pas être directement désactivé, mais sans SIP, je devrais pouvoir modifier n'importe quel fichier sur mon ordinateur, y compris la base de données qui stocke toutes les listes blanches.

2 votes

Apparemment, Apple a modifié la façon dont il accède à cette base de données en utilisant l'API privée guarded_open_np. J'ai déjà vu des messages de hackers russes qui essayaient de désosser cette API avec IDA Pro, mais jusqu'à présent sans grand succès.

0 votes

Indépendamment de la manière dont Apple modifierait normalement la liste blanche, il semble s'agir d'une base de données sqlite standard, comme en témoigne le fait qu'elle peut être ouverte et lue dans des éditeurs de bases de données. S'il existe une autre raison pour laquelle le fichier est impossible à modifier et à remplacer directement (par exemple, si MacOS stocke une somme de contrôle de la base de données, et que cette somme de contrôle est elle-même cryptée par Apple), j'aimerais voir une explication claire et complète dans votre réponse ! Merci.

2voto

J'ai trouvé ceci pour la suppression d'une entrée.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db 'supprimer de access où client like " %appnamehere% "'

Remplacer " appnamehere "avec le nom de l'application tel qu'il apparaît dans la fenêtre d'accès. Liste d'accessibilité (conservez les signes %).

2 votes

Cela supprimerait une application de la base de données, et non ajouterait des autorisations, n'est-ce pas ? Il ne semble pas que cela fasse quoi que ce soit quand je l'ai essayé (ajouter ou supprimer).

1 votes

A Catalina, inexplicablement, tu ne peux même pas voir le fichier en tant que Racine ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database file et si j'essaie de ls le répertoire en tant que Root j'obtiens ls: : Operation not permitted .

0 votes

@Michael avez-vous pu lire TCC.db sur Catalina ? J'ai aussi le même problème, je ne peux même pas faire ls sur com.apple.TCC répertoire

0voto

Pablo Bianchi Points 10158

SIP ne prend pas en charge le répertoire de la bibliothèque. Cela signifie donc que vous pouvez toujours écrire dans le fichier TCC.db via le terminal en utilisant certaines commandes.

Voici le lien : À propos de SIP

0 votes

Les fichiers TCC.db sont protégés par SIP même si leurs répertoires ne le sont pas. Je m'en moque, j'aimerais simplement savoir ce que me permettra de mettre les applications sur une liste blanche.

0 votes

apple.stackexchange.com/questions/362865/ ce lien peut aider votre requête

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X