Zip Zero-Click TL;DR
Я обнаружил Zero-Click уязвимость(не требующая от пользователя никаких дополнительных действий, например, нажатия, скачивания и т.п.) в Apple Mail, которая позволяла добавлять или изменять любой произвольный файл в среде местной песочницы. Эта уязвимость могла привести к различным неприятностям, включая несанкционированное раскрытие конфиденциальной информации третьим лицам. Злоумышленник мог изменить конфигурацию почты жертвы, например, переадресацию почты, что позволяет захватить другие учетные записи жертвы с помощью сброса пароля. Эта уязвимость могла быть использована для изменения настроек пользователя, чтобы он сам распространял вирус, общаясь с другими пользователями. Apple исправила эту уязвимость в июле 2020 года.
История
Однажды я изучал Apple Bug Bounty и начал думать, какие атаки могут быть запущены без действий пользователя. Первой идеей, очевидно, был Safari. Я немного поиграл с Safari, но не нашел интересных зацепок. Следующее, что у меня было на уме — это Mail или iMessage. Я сосредоточился на Mail, потому что подозревал, что устаревшие функции скрываются в старом коде. Я начал экспериментировать с почтой, отправляя тестовые сообщения и вложения, пытаясь найти аномалию по сравнению с обычной отправкой и получением электронной почты. Я отправлял эти сообщения и отслеживал системные вызовы, чтобы узнать, что происходит под капотом при получении электронной почты, и вот что я нашел.
Технический аспект
Описание
Mail имеет функцию, которая позволяет автоматически распаковывать вложения, которые были автоматически архивированы другим пользователем.
В допустимом варианте использования, если пользователь создает электронную почту и добавляет папку в качестве вложения, она автоматически сжимается с помощью .zip и настройки x-mac-auto-archive = yes и затем добавляется в заголовки MIME. Когда другой пользователь почты получает это электронное письмо, сжатые данные автоматически распаковываются.
Во время своего исследования я обнаружил, что части несжатых данных не очищаются из временного каталога, и этот каталог не является уникальным в среде Mail. Это можно использовать для получения несанкционированного доступа к записи в ~ /Library/Mail и в $TMPDIR, используя символические ссылки внутри этих заархивированных файлов.
Символические ссылки
Символическая ссылка - это специальный файл в файловой системе, в котором вместо пользовательских данных содержится путь к файлу, открываемому при обращении к данной ссылке.
Вот что происходит
Злоумышленник отправляет жертве эксплойт по электронной почте, который включает в себя два zip-файла в качестве вложений. Сразу же, когда пользователь получает электронное письмо, Apple Mail анализирует его и ищет любые вложения с заголовком x-mac-auto-archive = yes. Mail автоматически распаковывает эти файлы.
1 этап
Первый zip-архив включает символическую ссылку Mail, которая отсылает к «$ HOME / Library / Mail» и файл 1.txt. Zip распаковывается в «$TMPDIR/com.apple.mail/bom/». На основе заголовка «filename = 1.txt.zip» 1.txt копируется в почтовый каталог, и все работает так, как положено. Однако очистка выполняется неправильно, и символическая ссылка остается на месте.
2 этап
Второй прикрепленный zip-архив содержит изменения, которые вы хотите внести в «$ HOME/Library/Mail». Это предоставит произвольное разрешение на запись файла в Library/Mail.
В моем примере я написал новые правила для почты. При этом вы можете добавить их в приложение почты.
Mail/ZCZPoC
Mail/V7/MailData/RulesActiveState.plist
Mail/V7/MailData/SyncedRules.plist
Mail/ZCZPoC включает в себя просто текстовый файл, который будет записан в ~/Library/Mail.
Переписать список правил почты
Файлы могут быть перезаписаны, и именно это происходит с файлами RulesActiveState.plist и SyncedRules.plist.
Главное в RulesActiveState.plist — это активировать новое правило в SyncedRules.plist.
…
<dict>
<key>0C8B9B35–2F89–418F-913F-A6F5E0C8F445</key>
<true/>
</dict>
…
SyncedRules.plist содержит правило, соответствующее «AnyMessage», и правило, при котором PoC приложение Mail воспроизводит звук Морзе при получении любого сообщения.
…
<key>Criteria</key>
<array>
<dict>
<key>CriterionUniqueId</key>
<string>0C8B9B35–2F89–418F-913F-A6F5E0C8F445</string>
<key>Header</key>
<string>AnyMessage</string>
</dict>
</array>
…
<key>SoundName</key>
<string>Morse</string>
Вместо воспроизведения звука Морзе это может быть, например, правило переадресации для утечки конфиденциальных данных электронной почты.
Возможные последствия
Этот произвольный доступ позволяет злоумышленнику манипулировать всеми файлами в $HOME/Library/Mail. Это могло привести к передаче конфиденциальных данных третьим лицам путем изменения конфигурации почты. Один из доступных вариантов конфигурации — это подпись пользователя, которая может быть использована для исправления уязвимости.
Также есть вероятность, что это могло привести к уязвимости удаленного выполнения кода (RCE), но я не зашел так далеко.
Хронология событий
2020–05–16: обнаружена проблема
2020–05–24: PoC готов и сообщается в Apple
2020-06-04: Выпуск Catalina 10.15.6 Beta 4 с исправлением
2020–07–15: macOS Mojave 10.14.6, macOS High Sierra 10.13.6, macOS Catalina 10.15.5 Обновление с исправлением выпущено
2020–11–12: выпущена CVE-2020–9922
2021–03–30: Bug Bounty еще не оценена
Спасибо коллегам-исследователям, которые поделились своими открытиями и знаниями, и спасибо Apple за быстрые исправления. Огромное спасибо моим коллегам, которые помогли мне с этой статьей!
Дата-центр ITSOFT — услуги размещения и аренды серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.
vanyas
Т.е. прошёл почти год, но Apple так и не заплатили? Не ожидал от них такого