
Эксплойт для CVE-2023-38571
macOS Music и TV выполняют небезопасное переименование, что приводит к получению полного контроля над TCC.db пользователя (FDA).
Я сообщил об этой ошибке в отдельных тикетах для каждого приложения; при необходимости объедините их.
Основная проблема в том, что эти приложения имеют FDA, но не очищают свои файловые операции.
Music и TV в этом отношении почти одинаковы, различаются только пути.
Далее я буду использовать Music в качестве примера. Для TV, пожалуйста, проверьте код эксплойта — он очень прост.
Music имеет функциональность копирования файлов в библиотеку пользователя через специальную папку, в которую пользователь может 'перетаскивать' файлы.
Пользователь может просто создать файл в
~/Music/Music/Media.localized/Automatically Add to Music.localized/
Music возьмёт этот файл и выполнит небезопасное переименование в "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized".
Если мы используем валидный TCC.db (который генерирует эксплойт), он будет скопирован в папку "Not Added.localized", так как не является медиафайлом. Это очень полезно, поскольку мы можем перенаправить это переименование в реальное расположение TCC.db с помощью простой гонки символических ссылок.
Технически эксплойт является состоянием гонки, однако он настолько надёжен, что я даже не реализовал повторные попытки, так как он всегда успешно срабатывает с первой попытки.
Использование для music:
DEBUG=1 ./librarian.py 1
Использование для tv:
DEBUG=1 ./librarian.py 2
Для сброса tcc db между тестами:
launchctl stop com.apple.tccd launchctl start com.apple.tccd sleep 1 tccutil reset All