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

    Специалисты 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.

    Share post

    Comments 22

      0
      Не хранить в галереи может не всем понравиться. Возможно решить эту проблему достаточно просто: перед отображением файла сверять контрольную сумму с сохранённой внутри мессенджера. Если файл изменился — не показывать или предупреждать. С видеофайлами несколько контрольных сумм по фрагментам, т.к. большой размер.
        0

        Или можно было бы шифровать все загружаемые файлы ключом пользователя. Но когда телегу волновала защита данных пользователя?..

        +5
        Проверил указанные настройки в Telegram и WhatsApp — отключение указанных настроек только добавляет в каталоги программ файл .nomedia, который запрещает галерее искать в данном каталоге изображения и видео. Файлы не перемещаются во внутреннюю память и доступ к ним никак не блокируется.
          +1

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

            +2
            В Telegram у меня изначально была отключена настройка «Сохранять в галерее». И тем не менее, все файлы он сохраняет в общедоступной папке. И, кстати, в Whatsapp четко написано мелким шрифтом, что настройка переключает отображение медиафайлов в галерее телефона. Про место хранения там ни слова.
          +3
          У меня внутренне хранилище телефона все забито предустановленными прогами, которые без рута не удалишь. Если еще не будет возможности хранить файлы на внешнем, то приложением просто будет невозможно пользоваться
            0
            Всегда, у любых приложений можно очистить кеш или внутренне хранилище приложения (даже у системных)
            0
            Наверное, можно эксплуатировать и иные уязвимости, подсовывая вредоносный код в мультимедии.
              0

              Не понял про "медиафайл домкрата". Поясните, пожалуйста

                0
                Похоже на трудности перевода))
                0

                Тривиальный фикс: проверять хэш файла при загрузке с внешнего хранилища.

                  0
                  Слишком накладно, вот сделали вы фото на телефон, телеграм должен будет подсчитать хеш и сохранить у себя, при попытке отправить этот же файл должен будет сверить с тем что у него в сохранено и так с каждым новым файлом.
                    0

                    Как вы думаете, что быстрее — шифровать поток передаваемый по TLS или посчитать хэш файла? Стоимость подсчёта хешей пренебрежима на фоне всех остальных операций (раскодирование того же самого jpg для показа).


                    time sha1sum  ~/Pictures/foto/20140922_113702.jpg
                    ...
                    real    0m0.037s
                    user    0m0.013s
                    sys 0m0.000s
                      0
                      Я не о времени в целом, а о вычислении хэша для каждого нового файла во всех папках. Вдруг пользователь захочет отправить этот файл в будущем.
                        0
                        Зачем вычислять до того, как файл будет отправляться/использоваться?
                        Но в любом случае вычисление хеша — задача крайне простая.
                          0
                          Так «вирус» может подменять и отправляемый файл, хотим отправить фотку из отпуска, отправляется экземпляр вируса например.
                          0
                          Как вариант проверять хеш всей папки после каждого изменения.
                            0

                            Если мы файл отправляем — как раз в этот момент и проверяем чексумму. С другой стороны я не понимаю, почему пользователь не может отредактировать картинку в фотошопе. Т.е. это не в модели угроз.


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

                      +2

                      Исследователи открыли, что оказывается установленное вредоносное ПО способно и в файлы писать! А эти файлы (о ужас!) могут использоваться другими приложениями. А пользователи более 8 лет дают приложениям доступ на запись и никто с этим ничего поделать не может! Вот опасность же, никогда не было и вот опять!

                        0

                        Читать надо точнее. Речь идёт о другом — файлы используются как кеш между моментом приёмки и показа пользователю. Вот в этот момент возможна модификация, так что в интерфейсе будет казаться, что прислали другой файл. Люди считают, что если im показывает что-то, то это то, что прислал собеседник, а не то, что ему рядом кто-то редактировал без его согласия.

                          0

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

                            0
                            А что тут за предположение? Вот сегодня случай из расследования

                            Файл с угрозой надодится в системной области (путь к файлу начинается с /system).
                            Android.Lqsoft.3 в Makeup_export.apk
                            Судя по всему, угроза в системной области была изначально — т.е. была предустановлена производителем.

                            И без рутования эту штуку не пролечишь. А рутовать — терять поддержку

                            На дешевых андроидах наличие троянов — совершенно естественно

                      Only users with full accounts can post comments. Log in, please.