Спецпроекты

iPhone и Android можно взломать, отправив ссылку в мессенджер

Безопасность Стратегия безопасности Пользователю Техника

Генерация предварительного просмотра пересылаемых ссылок мессенджерами для мобильных устройств, в том числе Facebook, Instagram и другими, может составлять риск для пользователей и серверов.

Удалённый запуск и утечка IP-адресов

Во множестве приложений под iOS и Android, снабжённых средствами мгновенной отправки приложений существует весьма серьёзная уязвимость, которая при некоторых условиях позволяет запустить произвольный код удалённо.

Речь идёт, в первую очередь, об Instagram и LinkedIn, однако проблемы встречаются и в других - Facebook Messenger, LINE, Slack, Twitter DM, Zoom и так далее.

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

Как выяснили независимые исследователи Талал Хадж Бакри и Томми Миск (Talal Haj Bakry, Tommy Mysk), эта функция может приводить к утечке IP-адресов, ссылок, пересланных по закрытым каналам, а кроме того, минимум один раз исследователи наблюдали «ненужную закачку гигабайтов данных в фоновом режиме».

Существуют три варианта формирования предварительного просмотра, отмечают исследователи: он создаётся на стороне отправителя; он формируется на стороне получателя; его формирует сервер.

fbm600.jpg
Превью ссылок в мессенджерах составляет риск для пользователей и серверов

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

Вдобавок, в некоторых случаях приложения готовы закачивать гигантские файлы, переданные по ссылке, целиком, - например, видео или крупный архив. Как это сказывается на батарее и расходовании трафика, можно не объяснять.

На серверной стороне

В свою очередь, генерация предварительного просмотра на сервере также чревата проблемами. Утечки IP-адреса не происходит, зато сервер, в зависимости от того, какие данные ему направляются (т.е., что содержится в ссылке) и какое количество данных используется для предварительного просмотра, может столкнуться с вредоносным софтом.

«Допустим, вы отправляете кому-то приватную ссылку на Dropbox, и не хотите, чтобы кто-то ещё знал, что там. Возникает вопрос... скачивают ли серверы файлы целиком или только часть для демонстрации превью? Если скачиваются целые файлы, хранятся ли их копии на сервере и как долго? Безопасно ли хранятся эти копии, или люди, под чьим контролем находятся серверы, имеют возможность их просматривать?» - пишут исследователи.

Исследователи выяснили, что разные приложения закачивают на серверы разный объём данных. Например, Discord - до 15 мегабайт любого файла; Facebook Messenger скачивает изображения и видео целиком, даже если файлы имеют гигабайтные размеры. Instagram делает то же самое, только уже с любыми файлами. Google Hangout и LINE закачивают до 20 мегабайт любых файлов, Twitter - до 25 мегабайт, Zoom - до 30 мегабайт, а мессенджеры LinkedIn и Slack - до 50 мегабайт любых файлов.

Исследователи отмечают, что большинство передаваемых через мессенджеры файлов имеют размеры менее 15 мегабайт (особенно это касается изображений и документов). А значит, если копии этих файлов хранятся на серверах и хранятся недостаточно надёжно, соответственно, может происходить утечка. Особенно остро вопрос стоит в связи с LINE. Сервис обещает пользователям сквозное шифрование, но исследователи полагают, что в условиях, когда важные данные могут перекачиваться через серверы LINE, в ней пропадает смысл.

Всё работает как положено

Администрация LINE после общения с экспертами обновила свой раздел FAQ, дополнив его информацией о том, что для генерации превью используются сторонние серверы, и инструкции, как отключить эту функцию.

В Facebook/Instagram и Twitter заявили, что всё работает так, как предполагали разработчики.

Между тем, Миск и Бакри продемонстрировали запуск кода на JavaScript на серверах Instagram и на LinkedIn. Во втором случае тестовая атака позволила обойти ограничение на скачивание 50-мегабайтных файлов для создания предварительного просмотра.

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

В Facebook, как и в LinkedIn сослались на дополнительные меры защиты, которые препятствуют запуску действительно вредоносного кода. В частности LinkedIn допускает запуск JavaScript, но исключительно в сэндбоксе.

В разговоре с журналистами Threatpost, Миск отметил, что сэндбокса может быть недостаточно: существует слишком много примеров того, как злоумышленники успешно выходили за пределы изолированных сред.

«Запуск любого произвольного кода - это риск для безопасности, и Миск и Бакри показывают, что свобода вредоносных действий в контексте мессерджеров хоть и ограничена, но не отсутствует полностью, - говорит Алексей Водясов, технический директор компании SEC Consult Services. - А это открывает некоторые возможности умелым и целеустремлённым хакерам. Возможности, которые делают общение через такие мессенджеры небезопасным».

Эксперты отметили, что существуют мессенджеры, которые вовсе не генерируют превью - Signal (надо отключать принудительно), Threema, TikTok и WeChat относятся к таковым. Впрочем, у них есть свои проблемы с безопасностью.