Нетривиальный взлом браузера Safari

Нетривиальный взлом браузера Safari


Исследователь Райан Пикрен (Ryan Pickren) на прошлой неделе опубликовал подробную историю обнаружения цепочки уязвимостей в браузере Safari и в других компонентах операционной системы MacOS. Всего речь идет о четырех уязвимостях, которые в теории могли привести к удаленному перехвату доступа к веб-камере или, как красиво выразился автор работы, «к краже всех данных доступа ко всем сайтам, которые вы когда-либо посещали через Safari».





Есть более сдержанное описание работы Райана: он построил достаточно сложную, но вполне реалистичную атаку, воспользовавшись рядом уязвимостей (скорее даже логических ошибок) в MacOS. Главным элементом атаки является особенность формата для хранения копий веб-страниц, известного как Web Archive. При отображении такой сохраненной страницы браузер Safari по умолчанию наделяет копию правами оригинала. Модификация архива, соответственно, позволяет получить доступ к секретным данным или воспользоваться разрешениями сайта, например для доступа к веб-камере.


Это штатная фича архивов страниц, сомнительная сама по себе с точки зрения безопасности. Впрочем, заставить пользователя скачать и открыть модифицированный файл .webarchive достаточно сложно, в том числе благодаря встроенным средствам защиты. Обход этой защиты и представляет собой самую интересную часть исследования.


Пикрен последовательно рассказывает о поиске уязвимостей — как он по очереди натыкался на механизмы защиты в MacOS и обходил их. Смоделировав атаку с помощью копии в формате .webarchive, он начал искать способы передать такой файл удаленно и заставить пользователя открыть его. Это нелегко из-за настроек безопасности по умолчанию, которые прямо запрещают открывать «чужие» копии веб-страниц, считая их вредоносными. Тут на помощь приходит баг во встроенном в MacOS ПО для работы с облачными файлами в «нативном» сервисе iCloud. Сервис ShareBear вызывается по умолчанию, если кликнуть в браузере на ссылку с префиксом icloud-sharing:. Можно расшарить файл и вставить на веб-страницу эту ссылку, по клику на которую пользователь увидит такое окно:




Ошибка обработчика таких ссылок заключалась в том, что подобное разрешение демонстрировалось пользователю один раз. В дальнейшем при переходе по ссылке файл открывался автоматически — даже если его содержимое менялось. Можно подменить безобидную картинку на исполняемый файл, и он будет запущен, хотя пользователь ранее согласился только на картинку. Но и эта проблема не позволяла запустить файл .webarchive напрямую: он по определению проверяется системой Gatekeeper, которая блокирует копии веб-сайтов как вредоносные.




А дальше происходит самая красивая часть атаки. Райан нашел способ избежать проверки с помощью Gatekeeper. Оказалось, что если подсунуть браузеру Safari ссылку на файл в формате .url, то он обработает ее и выполнит файл, на который она указывает, без проверки! Этот формат, во-первых, древний, а во-вторых, был придуман вообще-то для Windows — Safari парсит его для совместимости. Осталось решить одну маленькую проблему: по умолчанию файл из iCloud сохраняется в папку с именем пользователя в пути, что усложняет его открытие с помощью ссылки .url. Райан добавил еще один этап: загрузку и выполнение дистрибутива в формате .dmg, который кладет файл .webarchive в папку с фиксированным путем.


В результате получилась хоть и реалистичная, но довольно сложная атака с несколькими «переменами файла» на стороне атакующего и многократным кликанием на ссылку на стороне жертвы. Apple сделала атаку невозможной двумя апдейтами. Во-первых, ShareBear запретили выполнять файлы. Во-вторых, обновление браузерного движка WebKit сделало невозможным открытие файлов «без карантина» при помощи метода со ссылкой .url.


Баг вполне можно квалифицировать как опасную уязвимость типа UXSS (Universal Cross Site Scripting). В итоге открытие копии веб-страницы с правами оригинала позволяет украсть любые данные с сайтов, где пользователь залогинен. Или же можно воспользоваться «унаследованными» разрешениями — например, сделать копию веб-страницы сервиса Zoom, которой позволено запускать веб-камеру. Можно активировать камеру удаленно и передать видеопоток злоумышленнику. По программе bug bounty Райан Пикрен получил 100 500 долларов. По имеющимся открытым данным, это, возможно, рекордная выплата от компании Apple за обнаруженную уязвимость.


В прошлом году Пикрен уже ломал Safari для получения доступа к веб-камере (и не только). Тогда он также нашел красивый баг: если обратиться из браузера к файлу с именем сайта (например, skype.com), то он унаследует разрешения и права реального сайта с таким URL.


Report Page