Una nueva era de los escapes del sandbox de macOS: superficies de ataque pasadas por alto y descubrimiento de más de 10 nuevas vulnerabilidades
- En los sistemas macOS, la mayoría de los procesos se ejecutan en un entorno de sandbox restringido. Incluso si un atacante obtiene ejecución remota de código (RCE), sus capacidades siguen siendo limitadas. El siguiente paso es evadir el sandbox para obtener un acceso más amplio a los archivos.
- Al revisar problemas existentes para encontrar vulnerabilidades de escape del sandbox, se descubrió una importante superficie de ataque pasada por alto y nuevas técnicas de ataque. Esto llevó al hallazgo de múltiples nuevas vulnerabilidades de escape del sandbox: CVE-2023-27944, CVE-2023-32414, CVE-2023-32404, CVE-2023-41077, CVE-2023-42961, CVE-2024-27864, CVE-2023-42977, entre otras.
Sobre el sandbox de macOS
Sandbox de aplicaciones
- Debido a los requisitos de la Mac App Store, la mayoría de las aplicaciones se ejecutan con restricciones de sandbox de aplicaciones. Las aplicaciones en sandbox deben tener permisos específicos y, una vez dentro del sandbox, quedan contenorizadas, por lo que sus operaciones sobre archivos se limitan.
- Los archivos creados por una aplicación en sandbox quedan aislados de forma predeterminada, y la app en sandbox no puede eliminar ese atributo.
- Las aplicaciones sin sandbox pueden acceder sin restricciones a todos los datos del usuario y recursos del sistema. En cambio, las aplicaciones con restricciones de sandbox solo tienen acceso limitado.
- Los procesos hijo creados mediante fork heredan las restricciones de sandbox del proceso padre, pero los procesos iniciados a través de
LaunchService.framework no heredan esas restricciones.
Sandbox de servicios
- La mayoría de los servicios daemon de Apple se ejecutan dentro de un contexto de sandbox de servicios. Están restringidos por perfiles de sandbox definidos en ubicaciones del sistema.
- El sandbox de servicios por lo general no está contenorizado, y los archivos no quedan aislados de forma predeterminada.
Superficie de ataque
Métodos comunes existentes
Ataque mediante LaunchService.framework
- Existe un método para atacar aplicaciones sin sandbox a través del framework LaunchService del sistema. Por ejemplo, CVE-2021-30864 puede manipular la variable de entorno $HOME de la aplicación del sistema sin sandbox Terminal.app.
- Es posible soltar y ejecutar una nueva aplicación sin sandbox, pero la aplicación recién soltada queda aislada, lo que impide su ejecución.
Ataque a servicios Mach accesibles
- Existe un método para atacar servicios Mach accesibles listados en el perfil del sandbox de aplicaciones. Toda la información sobre los servicios Mach del sistema se almacena en el archivo
/System/Library/xpc/launchd.plist.
Nuevos métodos pasados por alto
- Los servicios XPC que existen en el dominio PID son servicios que habían sido pasados por alto. Son iniciados por las aplicaciones bajo demanda y terminan cuando la aplicación que los solicitó finaliza.
- Los servicios XPC del dominio PID pueden ser invocados desde aplicaciones en sandbox, sin verificaciones adicionales de permisos ni comprobaciones de sandbox.
Nuevas vulnerabilidades y exploits
Beta-No-CVE-1
- Esta vulnerabilidad solo afecta a versiones beta de macOS Sonoma.
- La vulnerabilidad existe en el servicio XPC
/System/Library/PrivateFrameworks/StorageKit.framework/XPCServices/storagekitfsrunner.xpc.
- Este servicio puede ejecutarse sin restricciones de sandbox y puede ejecutar comandos arbitrarios del sistema.
Beta-No-CVE-2
- Esta vulnerabilidad también afecta únicamente a software beta.
- La vulnerabilidad existe en el servicio XPC
/System/Library/PrivateFrameworks/AudioAnalyticsInternal.framework/XPCServices/AudioAnalyticsHelperService.xpc.
- Puede comprimir rutas arbitrarias, y el archivo zip generado no queda aislado.
CVE-2023-27944
- La vulnerabilidad existe en el servicio XPC
/System/Library/PrivateFrameworks/TrialServer.framework/XPCServices/TrialArchivingService.xpc.
- Este servicio sí entra en el sandbox de servicios, pero los archivos soltados no quedan aislados.
CVE-2023-32414
- La vulnerabilidad existe en el servicio XPC
/System/Library/PrivateFrameworks/DesktopServicesPriv.framework/XPCServices/ArchiveService.xpc.
- Este servicio entra en el sandbox de servicios, pero los archivos soltados no quedan aislados.
CVE-2023-32404
- La vulnerabilidad existe en el servicio XPC
/System/Library/PrivateFrameworks/WorkflowKit.framework/XPCServices/ShortcutsFileAccessHelper.xpc.
- Este servicio puede ejecutarse sin restricciones de sandbox y tiene un permiso TCC especial para acceso total al disco.
CVE-2023-41077
- La vulnerabilidad existe en el servicio XPC
/System/Library/Frameworks/ImageCaptureCore.framework/XPCServices/mscamerad-xpc.xpc.
- Este servicio puede ejecutarse sin restricciones de sandbox y tiene un permiso TCC especial para acceder directamente a Fotos y volúmenes extraíbles.
1 comentarios
Comentarios en Hacker News
Parchear los servicios XPC de forma individual es extraño; esto parece un problema de diseño del propio sandbox. Se cuestiona por qué tantas funciones XPC son accesibles desde apps en sandbox
sandbox-execse encarga de elloLos frameworks de seguridad causan nuevos problemas y no da la impresión de que la seguridad realmente haya mejorado
Es muy probable que se sigan encontrando fallas relacionadas con XPC, y se espera una cadena continua de CVE a menos que Apple rediseñe su enfoque de endurecimiento de servicios
Aman y odian el sandbox al mismo tiempo
macOS no fue diseñado para permisos granulares, y eso no puede añadirse encima de la tecnología heredada de Mac OS y NeXTSTEP
También existen vulnerabilidades en iOS, y hay alrededor de 2 mil millones de dispositivos activos
Los servicios XPC del dominio PID son una forma ingeniosa de eludir las restricciones del sandbox, y el parche de Apple parece una solución temporal
Se preguntan si escapar del sandbox significa volver a un estado sin sandbox o pasar a un estado con privilegios más altos