macOS Dangerous Entitlements & TCC perms
Ten en cuenta que los entitlements que comienzan con com.apple
no están disponibles para terceros, solo Apple puede otorgarlos.
Alto
com.apple.rootless.install.heritable
com.apple.rootless.install.heritable
El entitlement com.apple.rootless.install.heritable
permite burlar SIP. Consulta esto para más información.
com.apple.rootless.install
com.apple.rootless.install
El entitlement com.apple.rootless.install
permite burlar SIP. Consulta esto para más información.
com.apple.system-task-ports
(anteriormente llamado task_for_pid-allow
)
com.apple.system-task-ports
(anteriormente llamado task_for_pid-allow
)Este entitlement permite obtener el puerto de tarea para cualquier proceso, excepto el kernel. Consulta esto para más información.
com.apple.security.get-task-allow
com.apple.security.get-task-allow
Este entitlement permite a otros procesos con el entitlement com.apple.security.cs.debugger
obtener el puerto de tarea del proceso ejecutado por el binario con este entitlement e inyectar código en él. Consulta esto para más información.
com.apple.security.cs.debugger
com.apple.security.cs.debugger
Las aplicaciones con el Entitlement de Herramienta de Depuración pueden llamar a task_for_pid()
para recuperar un puerto de tarea válido para aplicaciones no firmadas y de terceros con el entitlement Get Task Allow
establecido en true
. Sin embargo, incluso con el entitlement de herramienta de depuración, un depurador no puede obtener los puertos de tarea de procesos que no tienen el entitlement Get Task Allow
, y que por lo tanto están protegidos por la Protección de Integridad del Sistema. Consulta esto para más información.
com.apple.security.cs.disable-library-validation
com.apple.security.cs.disable-library-validation
Este entitlement permite cargar frameworks, complementos o bibliotecas sin estar firmados por Apple o firmados con el mismo ID de equipo que el ejecutable principal, por lo que un atacante podría abusar de alguna carga de biblioteca arbitraria para inyectar código. Consulta esto para más información.
com.apple.private.security.clear-library-validation
com.apple.private.security.clear-library-validation
Este entitlement es muy similar a com.apple.security.cs.disable-library-validation
pero en lugar de deshabilitar directamente la validación de la biblioteca, permite al proceso llamar a una llamada al sistema csops
para deshabilitarla.
Consulta esto para más información.
com.apple.security.cs.allow-dyld-environment-variables
com.apple.security.cs.allow-dyld-environment-variables
Este entitlement permite utilizar variables de entorno DYLD que podrían usarse para inyectar bibliotecas y código. Consulta esto para más información.
com.apple.private.tcc.manager
o com.apple.rootless.storage
.TCC
com.apple.private.tcc.manager
o com.apple.rootless.storage
.TCC
Según este blog y este blog, estos entitlements permiten modificar la base de datos TCC.
system.install.apple-software
y system.install.apple-software.standar-user
system.install.apple-software
y system.install.apple-software.standar-user
Estos entitlements permiten instalar software sin solicitar permisos al usuario, lo cual puede ser útil para una escalada de privilegios.
com.apple.private.security.kext-management
com.apple.private.security.kext-management
Entitlement necesario para solicitar al kernel cargar una extensión de kernel.
com.apple.private.icloud-account-access
com.apple.private.icloud-account-access
Con el entitlement com.apple.private.icloud-account-access
es posible comunicarse con el servicio XPC com.apple.iCloudHelper
que proporcionará tokens de iCloud.
iMovie y Garageband tenían este entitlement.
Para obtener más información sobre la explotación para obtener tokens de iCloud de ese entitlement, consulta la charla: #OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula
com.apple.private.tcc.manager.check-by-audit-token
com.apple.private.tcc.manager.check-by-audit-token
TODO: No sé qué permite hacer esto
com.apple.private.apfs.revert-to-snapshot
com.apple.private.apfs.revert-to-snapshot
TODO: En este informe se menciona que esto podría usarse para actualizar los contenidos protegidos por SSV después de un reinicio. Si sabes cómo hacerlo, envía un PR por favor!
com.apple.private.apfs.create-sealed-snapshot
com.apple.private.apfs.create-sealed-snapshot
TODO: En este informe se menciona que esto podría usarse para actualizar los contenidos protegidos por SSV después de un reinicio. Si sabes cómo hacerlo, envía un PR por favor!
keychain-access-groups
keychain-access-groups
Esta lista de entitlements los grupos de llaveros a los que la aplicación tiene acceso:
kTCCServiceSystemPolicyAllFiles
kTCCServiceSystemPolicyAllFiles
Proporciona permisos de Acceso completo al disco, uno de los permisos más altos de TCC que se pueden tener.
kTCCServiceAppleEvents
kTCCServiceAppleEvents
Permite que la aplicación envíe eventos a otras aplicaciones que se utilizan comúnmente para automatizar tareas. Al controlar otras aplicaciones, puede abusar de los permisos otorgados a esas otras aplicaciones.
Como hacer que le pidan al usuario su contraseña:
O hacer que realicen acciones arbitrarias.
kTCCServiceEndpointSecurityClient
kTCCServiceEndpointSecurityClient
Permite, entre otros permisos, escribir en la base de datos TCC de los usuarios.
kTCCServiceSystemPolicySysAdminFiles
kTCCServiceSystemPolicySysAdminFiles
Permite cambiar el atributo NFSHomeDirectory
de un usuario que cambia la ruta de su carpeta de inicio y, por lo tanto, permite burlar TCC.
kTCCServiceSystemPolicyAppBundles
kTCCServiceSystemPolicyAppBundles
Permite modificar archivos dentro de los paquetes de aplicaciones (dentro de app.app), lo cual está desactivado de forma predeterminada.
Es posible verificar quién tiene este acceso en Preferencias del Sistema > Privacidad y Seguridad > Gestión de Aplicaciones.
kTCCServiceAccessibility
kTCCServiceAccessibility
El proceso podrá abusar de las funciones de accesibilidad de macOS, lo que significa que, por ejemplo, podrá presionar teclas. Por lo tanto, podría solicitar acceso para controlar una aplicación como Finder y aprobar el diálogo con este permiso.
Medio
com.apple.security.cs.allow-jit
com.apple.security.cs.allow-jit
Este permiso permite crear memoria que es escribible y ejecutable al pasar la bandera MAP_JIT
a la función del sistema mmap()
. Consulta esto para más información.
com.apple.security.cs.allow-unsigned-executable-memory
com.apple.security.cs.allow-unsigned-executable-memory
Este permiso permite anular o parchear código C, usar el obsoleto NSCreateObjectFileImageFromMemory
(que es fundamentalmente inseguro) o usar el marco DVDPlayback. Consulta esto para más información.
Incluir este permiso expone tu aplicación a vulnerabilidades comunes en lenguajes de código no seguros en memoria. Considera cuidadosamente si tu aplicación necesita esta excepción.
com.apple.security.cs.disable-executable-page-protection
com.apple.security.cs.disable-executable-page-protection
Este permiso permite modificar secciones de sus propios archivos ejecutables en disco para salir de forma forzada. Consulta esto para más información.
El Permiso de Deshabilitar Protección de Páginas Ejecutables es un permiso extremo que elimina una protección de seguridad fundamental de tu aplicación, lo que hace posible que un atacante reescriba el código ejecutable de tu aplicación sin ser detectado. Prefiere permisos más estrechos si es posible.
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
Este permiso permite montar un sistema de archivos nullfs (prohibido de forma predeterminada). Herramienta: mount_nullfs.
kTCCServiceAll
kTCCServiceAll
Según esta publicación de blog, este permiso de TCC se encuentra generalmente en la forma:
Permitir que el proceso solicite todos los permisos de TCC.
kTCCServicePostEvent
kTCCServicePostEvent
Última actualización