[Перевод] Zero Click уязвимость в Apple MacOS Mail

5332962bf94e4ba30be841e8ed2b54f6.png

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 автоматически распаковывает эти файлы.

fba3747797ba4bf7e20d06b9e752d187.png

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.

0C8B9B35–2F89–418F-913F-A6F5E0C8F445

SyncedRules.plist содержит правило, соответствующее «AnyMessage», и правило, при котором PoC приложение Mail воспроизводит звук Морзе при получении любого сообщения.

Criteria

CriterionUniqueId

0C8B9B35–2F89–418F-913F-A6F5E0C8F445

Header

AnyMessage

SoundName

Morse

Вместо воспроизведения звука Морзе это может быть, например, правило переадресации для утечки конфиденциальных данных электронной почты.

Возможные последствия

Этот произвольный доступ позволяет злоумышленнику манипулировать всеми файлами в $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 за быстрые исправления. Огромное спасибо моим коллегам, которые помогли мне с этой статьей!

© Habrahabr.ru