Пользователей WhatsApp и Telegram можно обокрасть, прислав одну картинку
В мессенджерах WhatsApp и Telegram найдена уязвимость, которая позволяет хакеру получить доступ ко всей информации аккаунта. Для этого достаточно прислать жертве картинку, на которую она кликнет. Пользователь WhatsApp узнает о взломе, так как система распознает его как второй сеанс и вышлет предупреждение. Пользователь Telegram не узнает ничего .
Уязвимость в WhatsApp и Telegram
В WhatsApp и Telegram обнаружена уязвимость, которая позволяет хакеру завладеть всеми данными пользователя, прислав ему безобидную с виду картинку. Уязвимость присутствует только в онлайн-версиях мессенджеров – WhatsApp Web и Telegram Web. Благодаря полной синхронизации мессенджеров на всех платформах, онлайн-версии содержат сообщения, отправленные пользователем из приложения.
Присланное изображение содержит вредоносный код, для его активации жертве достаточно кликнуть на изображение. Картинку хакер может создать любую, в том числе такую, у которой высоки шансы на привлечение внимания пользователя. После клика на изображении хакер получает полный доступ к локальному хранилищу. В его руки попадает вся переписка пользователя, список его контактов, а также фото, видео и другие файлы, которыми он обменивался через мессенджер. Завладев списком контактов, злоумышленник может разослать вредоносный файл всем собеседникам жертвы от ее имени.
Уязвимость была обнаружена сотрудниками компании Check Point Software Technologies. По словам Одеда Вануну, главы подразделения Check Point по исследованиям и поиску уязвимостей, найденная уязвимость «подвергла риску полного захвата аккаунты миллионов пользователей». В случае с WhatsApp жертва узнает о взломе, так как мессенджер идентифицирует атаку как сеанс на другом устройстве, и предупредит пользователя. В случае с Telegram, который позволяет вести одновременные сеансы на разных устройствах, предупреждение не поступит.
Реакция WhatsApp и Telegram
Check Point направил информацию об уязвимости в компании WhatsApp и Telegram, которые подтвердили существование проблемы и выпустили патчи для своих продуктов. Check Point уточняет, что данные были переданы 8 марта 2017 г., и обе компании отреагировали оперативно. Чтобы начать пользоваться новой версией онлайн-мессенджера, достаточно просто перезапустить браузер.
Чтобы устранить уязвимость, WhatsApp и Telegram пришлось доработать механизм проверки контента. Оба мессенджера пользуются сквозным шифрованием, которое не позволяет кому-либо, кроме участников беседы, получать доступ к сообщениям и файлам. Однако вредоносное изображение шифруется непосредственно отправителем, что не дает мессенджеру возможности проверить контент. То есть, уязвимость является следствием сквозного шифрования. Внесенные изменения заключаются в том, что теперь контент проверяется до шифровки.
Как это работает в WhatsApp
Механизм загрузки файлов WhatsApp поддерживает несколько определенных типов документов, таких как Office, PDF, аудиофайлы, видео и изображения. Но исследователям Check Point удалось обойти ограничения этого механизма, загрузив вредоносный HTML-документ с легитимным предварительным просмотром изображения, чтобы обмануть пользователя.
Как только жертва пытается открыть документ, веб-клиент WhatsApp запускает API FileReader HTML 5 для создания уникального URL-адреса BLOB. К адресу прикрепляется содержимое файла, отправленного злоумышленником. Далее пользователь перенаправляется по этому URL-адресу.
Веб-клиент WhatsApp хранит допустимые типы документов в клиентской переменной W[“default”].DOC_MIMES. Поскольку зашифрованная версия документа отправляется на серверы WhatsApp, для этой переменной можно добавить новый тип MIME, такой как «текст/html», чтобы обойти ограничение клиента и загрузить вредоносный HTML-документ. После добавления нового типа к клиентской переменной, клиент шифрует содержимое файла с помощью функции encryptE2Media и затем загружает его в зашифрованном виде как BLOB на сервер WhatsApp.
Изменение имени и расширения документа, а также создание поддельного предварительного просмотра путем изменения переменных клиента делает документ более безобидным в глазах жертвы. Кликнув на файле, пользователь увидит забавную кошку в объекте BLOB, которая является объектом FileReader HTML 5 по адресу web.whatsapp.com. Это означает, что злоумышленник может получить доступ к ресурсам в браузере по этому адресу.
При просмотре страницы данные локального хранилища жертвы будут отправлены хакеру, что позволит ему захватить аккаунт. Преступник создает функцию JavaScript, которая будет каждые 2 секунды проверять, появились ли в бэкэнде новые данные, и обновлять украденное им локальное хранилище.
Однако WhatsApp разрешает пользователю вести одновременно только один сеанс в мессенджере, с какого-то одного устройства. Поэтому программа предупредит жертву, что был запущен второй сеанс, и спросит, какой из них она желает продолжить. Чтобы противодействовать этому, хакер должен дописать небольшой фрагмент кода на JavaScript, который спровоцирует зависание окна браузера у пользователя.
Как это работает в Telegram
Telegram поддерживает несколько типов документов, которые могут отправляться в веб-приложении, но только файлы изображений и видеозаписей хранятся в разделе «Файловая система» в браузере. Исследователям Check Point удалось обойти эту политику отправки файлов и загрузить вредоносный HTML-документ с типом MIME видеофайла «video/mp4». Затем они смогли отправить его жертве по зашифрованному каналу через серверы Telegram. Как только жертва откроет видео в новой вкладке браузера, начнется его воспроизведение, и данные пользователя будут отправлены хакеру.
Клиент Telegram сохраняет тип MIME в объекте t и во время процесса загрузки проверяет, соответствует ли он типу видео или изображения MIME. В случае совпадения файл будет храниться под URI-идентификатором файловой системы. Поскольку зашифрованная версия файла отправляется на серверы Telegram, можно изменить тип MIME на «video/mp4», чтобы обойти ограничение клиента и загрузить вредоносный HTML-документ в Telegram в виде видео.
После изменения типа MIME файла, клиент загружает его в зашифрованном виде на сервер Telegram. Когда пользователь захочет воспроизвести видео, файл html будет загружен в память браузера по адресу web.telegram.org. Пользователь должен открыть видео в новой вкладке, чтобы получить доступ к ресурсу в браузере с URI web.telegram.org. При просмотре видео в новой вкладке данные локального хранилища жертвы будут отправлены злоумышленнику, что позволит ему захватить аккаунт. С функцией JavaScript, которая проверяет бэкэнд, все обстоит так же, как и в случае с WhatsApp.
Поскольку Telegram позволяет пользователю вести одновременно несколько сеансов с разных устройств, жертва не узнает о взломе.