
Разбор и доказательства концепции для CVE-2021-30862, 1-кликовая RCE-уязвимость в iOS iTunes U
В 2021 году CodeColorist опубликовал свои статьи об уязвимостях Mistuned, серии уязвимостей, затрагивающих iTunes Store и позволяющих выполнить удаленный код одним щелчком мыши. Примечательно, что он продемонстрировал запуск калькулятора без повреждения памяти, используя лишь логическую ошибку. В тот период я исследовал схемы URL в различных приложениях, поскольку двумя годами ранее я сообщил о проблеме безопасности, связанной со схемой URL itms-services:// в App Store. Одна из найденных мной очень похожих схем URL была itms-itunesu:// из iTunes U. Однако тогда я не подозревал, что она принимает пользовательский ввод, и думал, что она используется только для открытия приложения, но позже понял, что это не так.
Прочитав его статью, я обратил особое внимание на одну вещь: обход песочницы Джун Хуна Ли с использованием itmss:// во время Pwn2Own 2014. Тогда iTunes Store принимал произвольные URL и с радостью загружал их в свой SUWebView, даже если они были не от Apple (CVE-2014-8840). На этом этапе вы, вероятно, уже догадываетесь, к чему я клоню. Я заметил, что itmss:// очень похожа на схему URL iTunes U, поэтому решил проверить, загрузит ли iTunes U google.com в свое веб-представление. И, о чудо, загрузил. Затем я решил попробовать использовать тот же API iTunes, который использовался в ошибках Mistuned, чтобы запустить калькулятор, совершенно не ожидая, что это сработает, но, к моему величайшему удивлению, сработало. Оказалось, что iTunes Store и iTunes U используют один и тот же API. А что насчет UAF из Mistuned? Было ли это и в iTunes U? Оказалось, тоже да, и я смог создать proof-of-concept, который приводит к сбою iTunes U из-за двойного освобождения памяти (POC_6.html). Я приложил некоторые из отправленных Apple POC, а также попытку создать примитив fakeobj/addrof на основе этой уязвимости в main.js с помощью статьи о Mistuned, хотя, насколько я помню, мне не удалось полностью заставить работать примитив fakeobj. Вы можете прочитать статью CodeColorist для получения дополнительной информации о влиянии этих уязвимостей, но, вкратце, они позволяют извлечь много конфиденциальных данных от жертвы, а также потенциально выполнить RCE одним щелчком мыши.