Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Компания Cellebrite производит программное обеспечение для автоматизации извлечения и индексирования данных с мобильных устройств. Они работают в "серой" зоне, где корпоративный брендинг идёт бок о бок с "цифровой разведкой", если конечно можно так называть воровство.
В список их клиентов входят авторитарные режимы в Беларуси, России, Венесуэле и Китае; отряды смерти в Бангладаше; военные хунты в Мьянме; а также те, кто жаждет насилия и гнёта в Турции, ОАЭ и других странах.
Несколько месяцев назад они объявили, что добавили в своё программное обеспечение поддержку Signal.
Их продукты часто связывали с преследованиями журналистов и активистов по всему миру, но о том, как их программы работают и что они делают в действительности было написано гораздо меньше. Поскольку программы Cellebrite ассоциируются с обходом систем защиты, давайте уделим некоторое время изучению безопасности их собственных программ.
Предыстория
Во-первых, всё, что касается Cellebrite, начинается с того, что кто-то другой уже держит ваше устройство в руках. Cellebrite не осуществляет перехвата данных или удалённого наблюдения. Их основных программных продукта два (и оба для Windows): UFED и Physical Analyzer (физический анализатор).
UFED создаёт резервную копию вашего устройства на машине под управлением Windows (по сути, это фронтенд для adb backup
на Android и резервной копией от iTunes на iPhone, с извлечением некоторых дополнительных данных). После создания резервной копии, Physical Analyzer затем разбирает файлы из резервной копии, чтобы отобразить данные в обозримом виде.
Когда компания Сellebrite объявила, что они добавили поддержку мессенджера Signal, это на самом деле означало то, что в Physical Analyzer они добавили поддержку для форматов файлов, используемых Signal. Это позволяет Physical Analyzer отображать данные мессенджера, которые были извлечены из разблокированного устройства, находящегося в физическом владении пользователя Cellebrite.
Если кто-то держит ваше разблокированное устройство в руках, то он может открыть любое приложение и делать скриншоты всего, что в нём есть, чтобы сохранить их и повторно посмотреть их позже. По сути, Cellebrite автоматизирует этот процесс для того, кто физически владеет вашим устройством.
В нужное время, в нужном месте...
По поистине невероятному стечению обстоятельств, недавно я выходил на прогулку и увидел, как маленький кейс упал с грузовика впереди меня. По мере моего приближения, скучный корпоративный шрифт на кейсе постепенно становился всё более чётким. Подойдя вплотную, я увидел: "Cellebrite".
Внутри него мы нашли последние версии программного обеспечения Cellebrite, железный замочек, предназначенный для предотвращения пиратства (это кое-что говорит о их клиентах, наверное), и необычайно большое количество переходников и адаптеров для кабелей.
Программное обеспечение
Любой, кто знаком с программной безопасностью, сразу поймёт, что основно задачей программного обеспечения Cellebrite является анализ "ненадёжных" ("untrusted") данных из самых разных форматов, используемых различными приложениями. То есть, данные, которые программное обеспечение Cellebrite должно извлекать и отображать, в конечном счёте, генерируются и контролируются приложениями на устройстве, а не "доверенным" источником, поэтому Cellebrite не может делать никаких предположений о "правильности" упорядоченных данных, которые он получает. Вот в этом месте возникают практически все уязвимости в безопасности.
Поскольку почти весь код Сellebrite существует для разбора недоверенных входных данных, которые могут быть отформатированы неожиданным образом для эксплуатации повреждения памяти или других уязвимостей в обрабатываемых программах, можно ожидать, что Cellebrite действуют крайне осторожно.
Однако, глядя на UFED и Physical Analyzer, мы были удивлены, обнаружив, что, кажется, очень мало заботы было уделено безопасности собственного программного обеспечения Сellebrite. Отраслевые стандарты защиты от эксплойтов отсутствуют, и есть много разных возможностей для эксплуатации.
В качестве лишь одного примера (не связанного с тем, что следует далее), их программное обеспечение укомплектовано с библиотеками FFmpeg, которые были скомпилированы ещё в 2012 году, и в дальнейшем не менялись. За это время было выпущено более ста обновлений безопасности для FFmpeg, ни одно из которых не было применено в Сellebrite.
Уязвимости
Учитывая количество имеющихся возможностей, мы обнаружили, что можно выполнить произвольный код на машине с Cellebrite, просто добавив специально отформатированный, но в остальном безобидный файл в любое приложение на устройстве, которое впоследствии подключается к Cellebrite и сканируется. Ограничений на код, который может быть выполнен, практически нет.
Например, таким образом можно выполнить код, который модифицирует не только созданный в этом сканировании отчёт Сellebrite, но и все предыдущие и будущие отчёты Cellebrite со всех ранее отсканированных устройств, а также со всех будущих устройств любым произвольным способом (вставляя или удаляя текст, электронную почту, фотографии, контакты, файлы или любые другие данные), без каких-либо обнаруживаемых изменений временных меток или сбоях в проверках контрольных сумм. Это даже может быть сделано случайным образом, что серьёзно подставит под сомнение целостность данных в отчётах Cellebrite.
Любое приложение может содержать такой файл, и до тех пор, пока Cellebrite не сможет точечно устранить все уязвимости в своём программном обеспечении, с чрезвычайно высокой степенью уверенности можно сказать, что единственное средство, которое есть у пользователя Cellebrite - это не сканировать устройства. Cellebrite может снизить риск для своих пользователей, обновив их программное обеспечение, чтобы прекратить сканирование приложений, которые Сellebrite посчитает очень рискованными для такого типа проблем целостности данных, но даже это не является гарантией.
Мы же, конечно, готовы ответственно сообщать Cellebrite о конкретных уязвимостях, известных нам, если они сделают тоже самое для всех уязвимостей, которые они используют в физическом извлечении данных с устройств, а также в других сервисах их соответствующим поставщикам, сейчас и в будущем.
Ниже приведён пример видео эксплойта для UFED (аналогичные эксплойты существуют и для Physical Analyzer). В видео, UFED достигает файла, который выполняет произвольный код на машине Cellebrite. Этот эксплойт использует MessageBox в Windows API, чтобы отобразить диалоговое окно с сообщением. Это делается в демонстрационных целях; можно выполнить любой код, и реальный эксплойт, скорее всего, попытается скрытным образом изменить предыдущие отчёты, подорвать целостность будущих отчётов (возможно, случайным образом!) или извлечь данные с машины Cellebrite.
Авторское право
Ещё, из интересного, установщик для Physical Analyzer содержит два пакета установщиков MSI под названием AppleApplicationsSupport64.msi
и AppleMobileDeviceSupport6464.msi
. Эти два пакета MSI имеют цифровую подпись Apple и, кажется, были извлечены из установщика для Windows программы iTunes версии 12.9.0.167.
Программа установки Physical Analyzer устанавливает эти MSI-пакеты на C:\Program Files\Common Files\Apple
. Они содержат библиотеки (DLL), реализующие тот функционал, который iTunes использует для взаимодействия с iOS устройствами.
Cellebrite iOS Advanced Logical Tool загружает эти библиотеки Apple и использует их функциональность для извлечения данных с мобильных устройств на базе iOS. На скриншоте ниже показано, что библиотеки от Apple загружаются в процесс UFED iPhone Logical.exe, который является именем для процесса iOS Advanced Logical Tool.
Нам кажется маловероятным, что Apple предоставила Сellebrite лицензию на повторное распространение и включение собственных библиотек в продукты Cellebrite, так что этот факт может понести за собой определённые юридические риски для Сellebrite и их пользователей.
Совершенно не связанное
По странному совпадению, будущие версии мессенджера Signal будут периодически загружать файлы для размещения в хранилище приложения (App Storage). Эти файлы никогда не используются ни для чего внутри Signal и никогда не взаимодействуют с самим мессенджером или данными, но они просто выглядят эстетично, а эстетика в программном обеспечении важна.
Такие файлы будут создаваться только для постоянных пользователей приложения в течении некоторого времени, и только в низком процентном соотношении, основанном на шардинге телефонных номеров.
У нас есть несколько различных версий файлов, которые мы считаем эстетически привлекательными, и с течением времени мы будем их медленно перебирать. Иного предназначения у этих файлов нет.