Pull to refresh

Подмена медиафайлов. Symantec указала на уязвимость WhatsApp и Telegram для Android

Reading time 7 min
Views 8.7K
Специалисты Symantec опубликовали описание уязвимости Media File Jacking в архитектуре популярных мессенджеров WhatsApp (для Android) и Telegram (для Android). Как понятно из названия и диаграммы слева, уязвимость связана с обработкой медиафайлов. Эксплоит работает при настройках WhatsApp по умолчанию, так что настройки лучше изменить (см. ниже).

Уязвимость связана с тем, что имеется определённый временной промежуток между тем, когда полученные медиафайлы записываются на диск, и моментом, когда они загружаются в пользовательский интерфейс (UI). Этот критический промежуток времени предоставляет возможность злоумышленникам вмешиваться и манипулировать медиафайлами без ведома пользователя.

При использовании уязвимости злоумышленник может манипулировать конфиденциальной информацией, такой как личные фотографии и видео, корпоративные документы, счета-фактуры и голосовые заметки, пишет Symantec: «Злоумышленники могут воспользоваться отношениями доверия между отправителем и получателем для личной выгоды».

Угроза Media File Jacking особенно актуальна в свете распространённого мнения о том, что новое поколение IM-приложений невосприимчиво к манипулированию контентом и рискам конфиденциальности благодаря сквозному шифрованию. Это миф. Пользователи совершенно напрасно доверяют мессенджерам, надеясь на истинность личности отправителя и аутентичность самого сообщения. Хотя здесь информацию подделать гораздо сложнее, чем в старых приложениях/протоколах, таких как SMS, где подделка сообщений выполняется элементарно.

Но ни один код не застрахован от уязвимостей безопасности.

Сквозное шифрование — эффективный механизм обеспечения целостности связи. Но его недостаточно, если в коде существуют уязвимости на уровне архитектуры. Media File Jacking позволяет успешно манипулировать медиафайлами, используя логические недостатки в приложениях, которые возникают до и/или после шифрования содержимого при передаче.

Технические детали


Android-приложения могут хранить файлы и данные в двух местах: внутреннее и внешнее хранилище. Файлы, сохранённые во внутренней памяти, доступны только самому приложению, то есть другие приложения не могут получить к ним доступ. Файлы, сохраненные в общедоступном каталоге внешнего хранилища, доступны для чтения и записи, поэтому они могут быть изменены другими приложениями или пользователями. Само приложение не контролирует эти файлы. Согласно документации Android для разработчиков, «внутреннее хранилище лучше всего использовать, когда вы хотите быть уверены, что ни пользователь, ни другие приложения не могут получить доступ к вашим файлам». Напротив, «внешнее хранилище является лучшим местом для файлов, которые не требуют ограничений доступа, и для файлов, которые вы хотите поделиться с другими приложениями или разрешить пользователю доступ с компьютера».

По умолчанию WhatsApp сохраняет полученные медиафайлы во внешнем хранилище по следующему пути: /storage/emulated/0/WhatsApp/Media/. Telegram тоже аналогичным образом хранит файлы в /storage/emulated/0/Telegram/, если пользователь включит опцию Save to Gallery, не осознавая риски безопасности. Оба этих каталога общедоступны. Приложения загружают оттуда полученные файлы в интерфейс соответствующего чата.

Тот факт, что файлы хранятся и загружаются из внешнего хранилища без надлежащих механизмов безопасности, позволяет другим приложениям с разрешением на запись во внешнее хранилище нарушить целостность мультимедийных файлов. Запись во внешнее хранилище (WRITE_EXTERNAL_STORAGE) — это общее разрешение, запрашиваемое приложениями Android, и более миллиона приложений в Google Play имеют этот доступ. На самом деле, основываясь на статистике Symantec по приложениям, почти у 50% приложений на устройстве есть такое разрешение.

Symantec изучила механизм обработки медиафайлов в WhatsApp и Telegram и обнаружила, что между записью файла и его отображением в UI возникает идеальная возможность для эксплуатации: в этот момент зловред может свободно работать с файлами (или просто заменить их на выбранные злоумышленником). Шифрование тут уже не работает, потому что файлы уже расшифрованы.

«Представьте это как гонку между злоумышленником и приложением, загружающим файлы. Если злоумышленник доберется до файлов первым — это может произойти почти в реальном времени, если вредоносная программа отслеживает общедоступные каталоги на предмет изменений — получатели увидят уже изменённые файлы, а не оригиналы. Кроме того, уменьшенная копия, которая появляется в уведомлении для пользователя, также покажет изменённое изображение или файл, так что у получателя не будут иметь никаких признаков того, что файлы изменены. Данные могут быть обработаны в WhatsApp не только при получении, но и при отправке файлов, то есть атаку можно проводить с устройства отправителя».

Разрешение на запись WRITE_EXTERNAL_STORAGE очень распространено среди приложений Android: как правило, пользователи спокойно предоставляют его всем подряд. Поэтому тут выше вероятность, что пользователь неосознанно установит вредоносную программу, ведь она не запрашивает каких-то агрессивных разрешений типа доступ к датчикам или доступ к ресурсам.

Кроме того, уязвимость Media File Jacking указывает на большую проблему небезопасного использования разработчиками приложений ресурсов хранения. В 2018 году исследователи сообщали о похожей атаке Man-in-the-Disk, в которой некоторые Android-приложения позволяют манипуляции данными со стороны злоумышленника. Это может привести к автоматической установке потенциально вредоносных приложений.

Сценарии атаки


Symantec описывает несколько теоретических сценариев атаки:

  1. Манипуляции с изображением. В этом сценарии кажущееся невинным приложение, загруженное пользователем, может манипулировать личными фотографиями почти в реальном времени и без ведома жертвы. Приложение работает в фоновом режиме и выполняет атаку на медиафайл, когда жертва использует WhatsApp или Telegram. Например, зловред отслеживает фотографии, идентифицирует лица на фотографиях и заменяет их чем-то другим, например, лицами других людей или объектами. Пользователь WhatsApp может отправить одному из своих контактов какую-то фотографию, а получатель получит изменённый вариант. Хотя эта атака может показаться тривиальной и просто не опасной, но на показывает возможность манипулирования изображениями на лету. В аналогичном сценарии с более широкими последствиями можно манипулировать медиафайлами политика, баллотирующегося в президенты, или директора компании, подставляя его или открывая возможности для вымогательства.


  2. Манипуляции с платежами. В одной из самых разрушительных атак злоумышленник может манипулировать счётом, который компания выставляет клиенту, так что деньги будут отправлены по другому адресу, то есть на другой счёт. Как и в предыдущем сценарии, приложение, которое кажется нормальным, но на самом деле является вредоносным, следит за файлами PDF, полученными через WhatsApp, а затем программно подменяет информацию о номере банковского счёта в счёте-фактуре. Клиент получает счет, который он ждал — и относится с доверием к этому документу. К тому времени, когда трюк будет раскрыт, деньги могут уже исчезнуть. Что ещё хуже, эту атаку можно проводить направленным образом против избранных жертв, которые используют WhatsApp или Telegram для обмена важными документами. В случае направленной атаки зловред долгое время останется необнаруженным.


  3. Подмена звуковых сообщений. В этом случае злоумышленник использует доверительные отношения между сотрудниками в организации. Генеральный директор отправляет своему финансовому директору аудиосообщение через WhatsApp, запрашивая обновленные слайды для заседания совета директоров на следующей неделе. Злоумышленник, используя восстановление голоса с помощью технологии глубокого обучения — то, что сегодня становится всё более и более возможным — изменяет исходный аудиофайл, чтобы сообщить финансовому директору собственным голосом генерального директора, что платёж должен быть немедленно передан фиктивной стороне, которая на самом деле является злоумышленником. Злоумышленник не только манипулирует коммуникациями генерального директора, но и подменяет его голос, что приводит к очень эффективной технике обмана. Исходное сообщение от генерального директора заменяется, когда поступает на телефон финансового директора.


  4. Фейковые новости. В Telegram администраторы используют каналы для трансляции сообщений подписчикам. Злоумышленник может в режиме реального времени изменять медиафайлы, отображаемые в канале. Интересно, что это может произойти без ведома и согласия как владельца канала, так и конечной жертвы. Этот пример иллюстрирует, что жертвами атаки становятся и отправитель, и получатель: люди читают фейковые новости, при этом страдает репутация или доверие к владельцу канала.


Что могут сделать разработчики


Как уже упоминалось, WhatsApp сохраняет файлы на внешнее хранилище автоматически, а Telegram делает это, когда включена функция Save to Gallery. В обоих случаях ни одно из приложений не предпринимает никаких мер для защиты своих пользователей от взлома медиафайлов.

Чтобы обеспечить безопасность медиафайлов от вредоносных участников, Symantec рекомендует следующие меры:

  • Проверка целостности файлов: перед записью на диск желательно сохранить в файле метаданных хэш каждого полученного медиафайла. Затем убедиться, что файл не изменён (хеш тот же), прежде чем загружать его в чат для пользователей.
  • Внутреннее хранилище: если возможно, хранить файлы в непубличном каталоге, например, во внутреннем хранилище. Так поступают некоторые приложения IM.
  • Шифрование: стараться шифровать конфиденциальные файлы, как это обычно делается для текстовых сообщений в современных мессенджерах. Недостаток в том, что другие приложения, такие как приложения для резервного копирования фотографий, не смогут легко получить доступ к этим файлам.

С выпуском Android Q компания Google планирует внести изменения в способы доступа приложений к файлам на внешнем хранилище. Это поможет смягчить последствия от архитектурных уязвимостей WhatsApp и Telegram. У хранилища появится «область действия» (Scoped Storage), то есть у каждого приложения будет собственная область хранения в каталоге, но им будет запрещён доступ к остальным файлам, если пользователь не предоставит явное разрешение. Это улучшит защиту, но предусматривает внесение изменений в миллионы приложений. Частично из-за этих проблем Google планирует принудительно применять API только в 2020 году, со следующего крупного релиза платформы. Даже тогда эффект от принудительного введения API проявится не сразу из-за большой фрагментации версий Android.

Как защититься самостоятельно


Пользователям WhatsApp и Telegram для защиты от этого типа атаки нужно просто запретить хранение медиафайлов на внешнем хранилище.

В WhatsApp это делается в меню Settings → Chats → Media Visibility


В Telegram настройки по умолчанию запрещают такое хранение, а соответствующая опция находится в меню Settings → Chat Settings → Save to Gallery.

Tags:
Hubs:
+12
Comments 22
Comments Comments 22

Other news