
Технический разбор CVE-2025-24104: обход песочницы iOS через обход проверки симлинков при восстановлении резервной копии, позволяющий произвольное чтение файлов за пределами песочницы.
Я сообщил об ошибке, которую Apple позже отследила как CVE-2025-24104. В моём первоначальном отчёте я продемонстрировал, как вредоносная резервная копия может использоваться для обхода ограничений песочницы. Однако в первоначальном описании Apple говорилось, что эта уязвимость может привести к изменению защищённых системных файлов. Я хочу внести ясность: эта ошибка на самом деле позволяет злоумышленнику читать произвольные файлы за пределами песочницы.
Когда я углубился в проблему, я обнаружил, что уязвимость возникает из-за отсутствия надлежащей проверки символических ссылок в процессе восстановления резервной копии. В частности, если создать резервную копию, в которой файл /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/CloudConfigurationDetails.plist заменён символической ссылкой, система в итоге считывает файл по вашему выбору — даже если он находится за пределами песочницы.
Суть проблемы:
Служба lockdown mc_mobile_tunnel не проверяет, является ли CloudConfigurationDetails.plist символической ссылкой. Если это так, служба переходит по ссылке, что позволяет злоумышленнику получить содержимое любого ограниченного файла.
Шаги для воспроизведения:
CloudConfigurationDetails.plist — это символическая ссылка, указывающая на любой ограниченный файл.GetCloudConfiguration в службу com.apple.mobile.MCInstall. Вместо ожидаемого содержимого файла служба вернула содержимое файла, на который указывала моя символическая ссылка.Возможность чтения произвольных файлов за пределами песочницы — серьёзная проблема. Это означает, что конфиденциальные системные данные, которые должны оставаться защищёнными, могут быть раскрыты злоумышленникам. Это не просто незначительная ошибка — это фундаментальный недостаток безопасности в том, как обрабатываются резервные копии.
Чтобы исправить это, процесс восстановления резервной копии нуждается в более строгой проверке:
CloudConfigurationDetails.plist, служба должна проверять, что это обычный файл, а не символическая ссылка. Если это символическая ссылка, восстановление должно либо отклонить её, либо безопасно обработать.С выходом iOS 18.3 Apple добавила дополнительные проверки в фреймворк ManagedConfiguration, чтобы удалять любые символические ссылки, найденные в папке ConfigurationProfiles. В частности:
MCRemoveFileIfSymlink.MCFixHostileSymlinks.ConfigurationProfiles идентифицируется как символическая ссылка, он немедленно удаляется.Вы можете увидеть детали bindiff здесь:
https://github.com/blacktop/ipsw-diffs/blob/main/18_2_22C152__vs_18_3_22D5034e/DYLIBS/ManagedConfiguration.md
Ниже приведён скриншот моего собственного диффа, показывающий, где были добавлены новые проверки:

Стоит упомянуть, что это новое смягчение не устраняет проблему на 100%. Я уже нашёл способ обойти его, поскольку Apple не реализовала мою рекомендованную проверку, но я оставлю эти детали в тайне.
Это мой личный отчёт о CVE-2025-24104, подчёркивающий, что первоначальное описание Apple не попало в точку. Реальная угроза — несанкционированное чтение файлов за пределами песочницы, а не изменение системных файлов.
Эксплойт найден Hichem Maloufi (ifpdz)