Edite TCC.db para omitir "'Foo.app' quiere acceso para controlar 'Bar.app'" en su propia máquina

15

Hago un amplio uso de Apple Events para controlar una amplia variedad de aplicaciones en mi máquina. Las nuevas indicaciones de seguridad introducidas en Mojave son paralizantes .

ingrese la descripción de la imagen aquí

En versiones anteriores de macOS, una vez que una aplicación tenía permiso para "controlar su computadora", podía enviar eventos de Apple a cualquier otra aplicación en su máquina. En Mojave, este permiso debe otorgarse manualmente una vez por cada aplicación que se controle.

Una vez que un usuario concede acceso, su selección se almacena en una de las dos bases de datos sqlite:

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

    • Tenga en cuenta que # 2 solo es visible para el usuario root.
    • Tenga en cuenta que la Protección de integridad del sistema está deshabilitada.

¿Sería posible editar estas bases de datos sqlite directamente para otorgar permisos automáticamente y omitir estas indicaciones de seguridad?

Wowfunhappy
fuente
@ user3439894 Gracias, SIP ya está desactivado en mi máquina. No parece que ese programa de Python sea compatible con la nueva protección "Automatización" de Mojave.
Wowfunhappy
¿Qué envía Apple Events a las diversas aplicaciones (es decir, ¿cuántos Foo.app tiene y cuántos Bar.app tiene y esa matriz es escasa o densa?)? ¿Está de acuerdo con una solución que no escala las 3 máquinas que controla (o requiere fondos en ese momento)?
bmike
@bmike Mis scripts de manzana tienen líneas como "decirle a la aplicación (ruta de acceso a la aplicación en primer plano como texto) que se cierre", por lo que Bar.app podría ser cualquier aplicación instalada. Todo esto está en una sola máquina.
Wowfunhappy
Sacar todo de la manera de una sola vez: tell app "Finder" to open every application file in the entire contents of (path to applications folder) as alias list. Entonces repeat with A in the result... ignoring application responses... quit the application named A... end ignoring... end repeat. Será doloroso, pero será como arrancarse una venda.
CJK

Respuestas:

7

Apple ya no admite el acceso directo a la base de datos TCC.db, incluso si deshabilita SIP , debido a su política de proteger a los usuarios de las grandes empresas a las que les gusta rastrear todo lo que hace en línea, y también solía hacer este bypass sigiloso sin preguntar permiso a los usuarios. Sin embargo, incluso en Mojave, hay una manera de evitar esto, pero con una trampa: eso solo funciona si una computadora determinada está inscrita en un programa MDM . Para saber más sobre el programa MDM, haga clic aquí .

Para evitar esto en varias computadoras, puede usar el script python tccprofile.pydisponible en GitHub .

Aquí puede encontrar una discusión en profundidad de lo que puede y no puede hacer .

Hasta donde yo sé, esta es la única forma de evitar la necesidad de pedir permiso al usuario desde Mojave en adelante.

jvarela
fuente
1
Realmente no es práctico obtener un perfil MDM para mis propios scripts personales. Con SIP desactivado, ¿qué es exactamente lo que me impide editar la base de datos? Reconozco que el sistema en sí no se puede apagar directamente, pero sin SIP debería poder editar cualquier archivo en mi computadora, incluida la base de datos que almacena todas las listas blancas.
Wowfunhappy
1
Aparentemente, Apple cambió la forma en que accede a esta base de datos mediante el uso de la API privada guarded_open_np. Ya vi algunas publicaciones de hackers rusos que intentaban realizar ingeniería inversa en esta API con IDA Pro, pero hasta ahora sin gran éxito.
jvarela
Independientemente de cómo Apple normalmente editaría la lista blanca, parece ser una base de datos sqlite estándar, como lo demuestra el hecho de que se puede abrir y leer en editores de bases de datos. Si hay otra razón por la cual el archivo es imposible de editar y reemplazar directamente (por ejemplo, si macOS almacena una suma de verificación de la base de datos, y esa suma de verificación está encriptada por Apple), me gustaría ver una explicación clara y completa de esto en tu respuesta! Gracias.
Wowfunhappy
1
+1, pero no confío en los blogs. ¿Podemos tomar el contenido de ese sitio web y citarlo directamente o agregarlo a la unidad o algo así?
JBis
2

Encontré esto para eliminar una entrada.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db 'eliminar del acceso donde el cliente como " %appnamehere%"'

Reemplace " appnamehere" con el nombre de la aplicación tal como aparece en la lista de Accesibilidad (mantenga los signos de%).

bmike
fuente
2
Esto eliminaría una aplicación de la base de datos, no agregaría permisos, ¿verdad? No parecía hacer nada cuando lo probé (agregar o quitar).
Wowfunhappy
1
En Catalina, inexplicablemente, ni siquiera puedes ver el archivo como root ... Error: unable to open database "/Library/Application Support/com.apple.TCC/TCC.db": unable to open database file, y si intento lsacceder al directorio como root, obtengo ls: : Operation not permitted.
Michael
@Michael, ¿pudiste leer TCC.dben Catalina? También tengo el mismo problema, ni siquiera puedo hacerlo lsen el com.apple.TCCdirectorio
WallTearer
1
@WallTearer Sí, tengo que habilitar el acceso completo al sistema de archivos a la Terminal y / o / bin / bash bajo seguridad y privacidad en Preferencias del Sistema
Michael
@Michael genial, gracias! En el mismo momento, también estaba leyendo el siguiente artículo con una sugerencia similar para habilitar Full Disk Access: blog.kolide.com/macos-catalina-osquery-a6753dc3c35c Al final, concedí acceso a iTerm2 y pude leer la configuración de seguridad con tccutil. utilidad py como sudo tccutil --list( github.com/jacobsalmela/tccutil )
WallTearer
0

SIP no es compatible con el directorio de la biblioteca. Por lo tanto, significa que aún puede escribir en el archivo TCC.db a través del terminal mediante algunos comandos.

Aquí está el enlace: Acerca de SIP

Codificador123
fuente
Los archivos TCC.db están protegidos por SIP aunque sus directorios no lo estén. Sin embargo, no me importa, me gustaría saber qué comandos me permitirán incluir en la lista blanca las aplicaciones.
Wowfunhappy
apple.stackexchange.com/questions/362865/… este enlace puede ayudar a su consulta
Coder123