Edite o TCC.db para ignorar “'Foo.app' deseja acessar o controle 'Bar.app'” na própria máquina

15

Faço uso extensivo do Apple Events para controlar uma ampla variedade de aplicativos em minha máquina. Os novos prompts de segurança introduzidos no Mojave são paralisantes .

insira a descrição da imagem aqui

Nas versões anteriores do macOS, uma vez que um aplicativo recebia permissão para "controlar seu computador", era possível enviar eventos da Apple para qualquer outro aplicativo em sua máquina. No Mojave, essa permissão deve ser concedida manualmente uma vez para cada aplicativo que está sendo controlado.

Depois que um usuário concede acesso, sua seleção é armazenada em um dos dois bancos de dados sqlite:

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

    • Observe que o nº 2 é visível apenas para o usuário root.
    • Observe que a proteção de integridade do sistema está desativada.

Seria possível editar esses bancos de dados sqlite diretamente para conceder permissões automaticamente e ignorar esses prompts de segurança?

Wowfunhappy
fonte
@ user3439894 Obrigado, o SIP já está desativado na minha máquina. Não parece que o programa python seja compatível com a nova proteção "Automation" do Mojave.
Wowfunhappy
O que envia o Apple Events para os vários aplicativos (por exemplo, quantos Foo.app você possui e quantos Bar.app você possui e essa matriz é esparsa ou densa?)? Você concorda com uma solução que não ultrapasse as três máquinas que você controla (ou requer fundos nesse momento)?
Bmike
@bmike Meus scripts de maçãs têm linhas como "diga ao aplicativo (o caminho para o aplicativo mais à frente como texto) para sair", então o Bar.app pode ser qualquer aplicativo instalado. Tudo isso em uma única máquina.
Wowfunhappy
Obter tudo fora do caminho de uma só vez: tell app "Finder" to open every application file in the entire contents of (path to applications folder) as alias list. Então repeat with A in the result... ignoring application responses... quit the application named A... end ignoring... end repeat. Vai ser doloroso, mas vai ser como arrancar uma banda.
CJK #:

Respostas:

7

O acesso direto ao banco de dados TCC.db não é mais suportado pela Apple, mesmo que você desative o SIP , por causa de sua política de proteger os usuários de grandes empresas que gostam de rastrear tudo o que você faz online e também costumavam fazer esse desvio furtivo sem perguntar permissão para os usuários. No entanto, mesmo no Mojave, há uma maneira de contornar isso, mas com um problema: isso só funciona se um determinado computador estiver inscrito em um programa MDM . Para saber mais sobre o programa MDM, clique aqui .

Para contornar isso em vários computadores, você pode usar o script python tccprofile.pydisponível no GitHub .

Uma discussão aprofundada sobre o que você pode ou não fazer pode ser encontrada aqui .

Até onde eu sei, esta é a única maneira de ignorar a necessidade de solicitar permissão do usuário a partir do Mojave.

jvarela
fonte
11
Realmente não é prático obter um perfil MDM para meus próprios scripts pessoais. Com o SIP desativado, o que exatamente está me impedindo de editar o banco de dados? Reconheço que o sistema em si não pode ser desligado diretamente, mas sem o SIP eu devo poder editar qualquer arquivo no meu computador, incluindo o banco de dados que armazena todas as listas de permissões.
Wowfunhappy
11
Aparentemente, a Apple mudou a maneira como acessa esse banco de dados usando a API privada guarded_open_np. Eu já vi alguns posts de hackers russos tentando fazer engenharia reversa dessa API com o IDA Pro, mas até agora sem grande sucesso.
jvarela
Independentemente de como a Apple normalmente editaria a lista de permissões, ela parece ser um banco de dados sqlite padrão, como evidenciado pelo fato de que pode ser aberto e lido nos editores de banco de dados. Se houver outro motivo pelo qual é impossível editar e substituir diretamente o arquivo (por exemplo, se o macOS armazena uma soma de verificação do banco de dados e essa soma de verificação é criptografada pela Apple), eu gostaria de ver uma explicação clara e abrangente sobre isso na sua resposta! Obrigado.
Wowfunhappy
11
+1, mas não confio em blogs. Podemos pegar o conteúdo desse site e citá-lo diretamente ou adicioná-lo ao Google Drive ou algo assim?
JBis
2

Encontrei isso para excluir uma entrada.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db 'delete from access onde cliente como " %appnamehere%"'

Substitua " appnamehere" pelo nome do aplicativo como ele aparece na lista Acessibilidade (mantenha os sinais de%).

bmike
fonte
2
Isso removeria um aplicativo do banco de dados, não adicionaria permissões, certo? Não pareceu fazer nada quando tentei (adicionar ou remover).
Wowfunhappy
11
Na Catalina, você inexplicavelmente nem consegue ver o arquivo como root ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database filee se eu tentar lso diretório como root, recebo ls: : Operation not permitted.
Michael
@ Michael você conseguiu ler TCC.dbna Catalina? Eu tenho o mesmo problema também, não posso nem fazer lsno com.apple.TCCdiretório
WallTearer 26/03
11
@WallTearer Sim, eu tenho que habilitar o acesso total ao sistema de arquivos ao Terminal e / ou / bin / bash sob segurança e privacidade em System Preferences
Michael
@ Michael legal, obrigado! No mesmo momento, eu também estava lendo o artigo a seguir, com sugestões semelhantes para ativar o Acesso total ao disco - blog.kolide.com/macos-catalina-osquery-a6753dc3c35c No final, concedi acesso ao iTerm2 e pude ler as configurações de segurança com o tccutil. utilitário py como sudo tccutil --list( github.com/jacobsalmela/tccutil )
WallTearer 26/03
0

O SIP não suporta o diretório Library. Portanto, isso significa que você ainda pode gravar no arquivo TCC.db através do terminal com alguns comandos.

Aqui está o link: Sobre o SIP

Coder123
fonte
Os arquivos TCC.db são protegidos pelo SIP, mesmo que seus diretórios não o sejam. Eu não me importo, independentemente - eu gostaria muito de saber quais comandos me permitirão colocar aplicativos na lista de permissões.
Wowfunhappy 15/10/19
apple.stackexchange.com/questions/362865/... este link pode ajudar a sua consulta
Coder123