Security Week 2402: атака «Триангуляция» и аппаратная уязвимость в iPhone
В конце прошлого года исследователи «Лаборатории Касперского» опубликовали новую статью, в которой разбирают детали атаки «Триангуляция» (см. также новость на Хабре и видео с конференции 37c3). Про эту атаку мы писали в прошлом году дважды. В июне был опубликован общий отчет, из которого впервые стало известно об атаке на устройства Apple, принадлежащие сотрудникам «Лаборатории Касперского». В этом отчете рассказывалось о методе обнаружения идентификаторов компрометации в бэкапах iPhone. В октябре исследователи рассказали, как удалось достать вредоносный код, который использовался на всех этапах атаки, вплоть до изначального вредоносного сообщения. Из самой свежей публикации можно узнать о результатах анализа вредоносного кода.
Атака «Триангуляция» начиналась с отправки на телефон вредоносного сообщения через сервис iMessage. Сообщение содержало вложенный файл в формате PDF. Как теперь известно, в этом файле был спрятан эксплойт, который задействовал уязвимость в обработчике шрифтов TrueType в iOS. Крайне интересно, что уязвимость была найдена в недокументированной инструкции Adjust: информации о ней практически нет, лишь в древних версиях Windows есть ссылка на эту инструкцию с указанием, что она применяется только в компьютерах Apple. Ошибка в коде (который патчем от Apple был просто удален и, скорее всего, не менялся с 90-х годов прошлого века) приводила к выполнению произвольного кода. Важно, что владельцу телефона даже не надо было каким-то образом взаимодействовать с присылаемым сообщением или аттачем.
В процессе развития атаки также обходилась система Pointer Authentication Code, которая в более современных устройствах Apple отвечает за требование подписи указателей в коде. В результате эксплуатации уязвимости в ядре iOS, известном как XNU, организаторы атаки получили доступ на чтение и запись ко всей оперативной памяти устройства. Еще одна уязвимость позволила обойти механизм защиты Page Protection Layer, который в теории затрудняет проведение атаки, даже если злоумышленник получает максимальные привилегии в системе. А вот дальше в процессе атаки происходил интересный сюжетный поворот: хотя на данном этапе вредоносный код имел полный контроль над устройством и мог выполнять любые операции, например, по слежке за действиями владельца, вместо них он всего лишь запускал второй этап атаки. В фоне запускался браузер Safari, открывалась веб-страница, с помощью которой потенциальная жертва верифицировалась, и происходила загрузка уже эксплойта для Safari.
Эксплойт для Safari задействовал уязвимость, позволяющую выполнить шелл-код. Этот код еще раз задействовал уязвимости для обхода систем защиты Pointer Authentication Code и Page Protection Layer. В результате вредоносный код снова получал привилегии суперпользователя и дальше уже запускал шпионское ПО. Именно уязвимость CVE-2023-38606 для обхода Page Protection Layer представляет в данной атаке особый интерес. Система-на-чипе, используемая в мобильных устройствах Apple, имеет помимо центрального процессора и графической подсистемы множество других периферийных устройств. Взаимодействие с ними осуществляется при помощи специальных аппаратных регистров, которые отображаются в память (так называемый Memory Mapped Input-Output). Диапазоны используемых адресов для работы с периферийными устройствами можно извлечь из прошивки. При анализе вредоносного кода «Триангуляции» выяснилось, что он обращается к адресам MMIO, которых в прошивке нет.
Из шести используемых в атаке адресов MMIO два представляют наибольшую опасность: они позволяют непосредственно обращаться к оперативной памяти и записывать туда произвольные данные. Таким образом можно перезаписывать код пользовательских программ, ядра ОС, а также обходить различные механизмы защиты, включая Page Protection Layer. Для того чтобы команда на запись в память была выполнена, в регистры MMIO нужно записать сами данные в особом формате, а также их хеш, рассчитанный по уникальному алгоритму. Метод расчета хеш-функции был без особого труда восстановлен экспертами «Лаборатории Касперского» путем анализа вредоносного кода. То есть он работает как средство защиты только до тех пор, пока никто не знает о существовании такой функциональности. Примечательно, что эти же регистры присутствуют в SoC Apple M1 и M2, но ссылок на них в коде настольной операционной системы Mac OS также нет.
Ответа на логичный вопрос, откуда такая опасная аппаратная фича взялась в SoC Apple, нет. Можно предположить, что эта функция использовалась при отладке, и потом ее забыли выключить. Как о ней узнали злоумышленники? Тут тоже можно строить разные теории. Например, что информация о «секретных» регистрах MMIO была в какой-то момент случайно опубликована либо в исходных кодах ядра, либо в какой-то документации для разработчиков. Apple закрыла данную уязвимость, запретив отображение конкретных аппаратных регистров в память.
Операция «Триангуляция» представляет пример крайне сложной атаки, в которой использовалось сразу несколько уязвимостей «нулевого дня». То, что атаку удалось не только обнаружить, но также получилось подробно проанализировать всю цепочку событий, начиная с первоначального заражения, — это большое достижение специалистов «Лаборатории Касперского». Организаторы атаки предприняли немало усилий для того, чтобы сохранить информацию о своих инструментах взлома в тайне. Исследователи предполагают, что вся сложная конструкция с «двойным» получением прав суперпользователя была сделана для того, чтобы шпионское ПО запускалось только на избранных устройствах, после двухэтапной проверки. Расследование вновь подтверждает, что метод защиты security through obscurity, в надежде на то, что скрытые механизмы безопасности никогда не будут проанализированы, не работает. Несмотря на то что для крайне опасной аппаратной «функции» был применен механизм авторизации, расчет был только на то, что о фиче никто никогда не узнает. Но рано или поздно даже такие секреты становятся достоянием общественности.
Что еще произошло
Еще одна интересная презентация с конференции 37с3 посвящена тем самым поездам в Польше, производитель которых сделал в коде закладки для борьбы с конкурентами. Ранее был доступен только пересказ выступления исследователей, принимавших участие в реверс-инжиниринге программного обеспечения, на локальном мероприятии в Польше. Здесь же можно послушать их историю от первого лица. В том числе в презентации показаны доказательства «закладок», например управляющие сообщения, пересылаемые по CAN-шине, которые отличались на несколько байт у рабочего поезда и у «сломавшегося». Изменение этих сообщений позволило запустить поезд, который ранее отказывался работать. Дальнейший анализ прошивки выявил правила вроде «если поезд стоит без движения 10 дней, отключить подачу напряжения». Производитель электропоездов, впрочем, продолжает отрицать обвинения в наличии закладок в коде, делающих невозможным обслуживание и ремонт сторонними компаниями.
Также можно посмотреть это видео, в котором рассказывается о получении прав Root в мультимедийной системе автомобиля Tesla. Исследователи задействовали уязвимость в TPM-модуле процессора AMD Ryzen и получили доступ как к данным CAN-шины, так и к информации, передаваемой на серверы автопроизводителя.
Интересная публикация посвящена поиску уязвимостей в древней игре Warcraft 2.
28 декабря компания Microsoft запретила обработку обращений по протоколу ms-appinstaller, позволяющих автоматизировать установку ПО. Это уже второй раз, когда данная фича блокируется, первый раз это было сделано в феврале 2022 года.