
Artigo técnico sobre CVE-2025-24104: um escape da sandbox do iOS via bypass de validação de symlink na restauração de backup, permitindo leitura arbitrária de arquivos fora da sandbox.
Relatei um bug que a Apple posteriormente registrou como CVE-2025-24104. No meu relatório original, demonstrei como um backup malicioso poderia ser usado para contornar as restrições da sandbox. No entanto, a descrição inicial da Apple afirmava que essa vulnerabilidade poderia levar a modificações de arquivos protegidos do sistema. Quero esclarecer os fatos: na verdade, esse bug permite que um invasor leia arquivos arbitrários fora da sandbox.
Quando investiguei o problema, descobri que a vulnerabilidade decorre da falta de validação adequada de symlinks durante o processo de restauração de backup. Especificamente, se você criar um backup onde o arquivo
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/CloudConfigurationDetails.plist
é substituído por um link simbólico, o sistema acaba lendo um arquivo de sua escolha — mesmo que esteja fora da sandbox.
A Falha:
O serviço de bloqueio mc_mobile_tunnel não verifica se CloudConfigurationDetails.plist é um symlink. Se for, o serviço segue o link, permitindo que um invasor recupere o conteúdo de qualquer arquivo restrito.
Passos para Reproduzir:
CloudConfigurationDetails.plist é um symlink que aponta para qualquer arquivo restrito.GetCloudConfiguration para o serviço com.apple.mobile.MCInstall. Em vez de obter o conteúdo esperado do arquivo, o serviço retornou o conteúdo do arquivo para o qual meu symlink apontava.A capacidade de ler arquivos arbitrários fora da sandbox é um problema sério. Isso significa que dados sensíveis do sistema, que deveriam permanecer protegidos, podem ser expostos a invasores. Não é apenas um bug menor — é uma falha fundamental de segurança na forma como os backups são tratados.
Para corrigir isso, o processo de restauração de backup precisa de uma verificação mais rigorosa:
CloudConfigurationDetails.plist, o serviço deve verificar se é um arquivo regular e não um symlink. Se for um symlink, a restauração deve rejeitá-lo ou tratá-lo de forma segura.Com o lançamento do iOS 18.3, a Apple introduziu verificações adicionais no framework ManagedConfiguration para remover quaisquer symlinks encontrados na pasta ConfigurationProfiles. Especificamente:
MCRemoveFileIfSymlink foi adicionada.MCFixHostileSymlinks.ConfigurationProfiles é identificado como um symlink, ele é imediatamente excluído.Você pode ver os detalhes do bindiff aqui:
https://github.com/blacktop/ipsw-diffs/blob/main/18_2_22C152__vs_18_3_22D5034e/DYLIBS/ManagedConfiguration.md
Abaixo está uma captura de tela do meu próprio diff mostrando onde as novas verificações foram adicionadas:

Vale mencionar que essa nova mitigação não corrige o problema 100%. Já encontrei um método para contorná-la porque a Apple não implementou minha correção recomendada, mas manterei esses detalhes em sigilo.
Este é meu relato pessoal sobre a CVE-2025-24104, enfatizando que a descrição original da Apple não acertou o alvo. O verdadeiro risco é a leitura não autorizada de arquivos fora da sandbox, e não modificações em arquivos do sistema.
Exploit encontrado por Hichem Maloufi (ifpdz)