Уязвимость Telegram Desktop позволяет скрытому JavaScript красть сообщения из HTML-экспорта

Telegram безопасность уязвимость Javascript экспорт бот thehackernews.com

Уязвимость Telegram Desktop: бот внедряет JavaScript в HTML-экспорты. Украденные сообщения, поддельные формы. Обновите приложение и избегайте старых экспортов.

Уязвимость в Telegram Desktop позволяла боту внедрять скрытый JavaScript в экспортируемые пользователями файлы HTML, сообщили исследователи безопасности из ExPatch в статье, опубликованной 12 сентября. В Telegram сообщение выглядело обычным, с кнопкой-ссылкой, и скрипт запускался только при открытии файла экспорта в веб-браузере. После этого он мог скопировать каждое сообщение из файла на сервер злоумышленника или перезаписать отображаемое содержимое страницы.
Telegram выпустил исправление в июле, но обновление приложения не затрагивает файлы, экспортированные более ранними версиями, поэтому старые HTML-экспорты по-прежнему могут содержать скрипт.
Telegram Desktop, приложение Telegram для Windows, macOS и Linux, может сохранять отдельный чат или все чаты учетной записи в виде HTML-страниц, открывающихся в браузере. Боты могут добавлять под своими сообщениями ряды кнопок, которые Telegram называет встроенными клавиатурами, и бот выбирает текст, отображаемый на каждой кнопке.
До исправления код экспорта записывал текст этой кнопки непосредственно в HTML-страницу без экранирования, как обнаружили исследователи Денис Ростилов и Александр Ростилов. Экранирование преобразует такие символы, как <, чтобы браузер отображал их как текст, а не как код, и экспорт применял это к тексту сообщений, именам отправителей и другим полям. Таким образом, бот мог поместить тег скрипта в текст кнопки, заполнив его невидимыми символами, чтобы кнопка выглядела пустой в протестированной версии Telegram Desktop.
Боту не нужно находиться в целевом чате. Сообщение, единственными кнопками которого являются веб-ссылки, сохраняет эти кнопки при пересылке, поэтому любой участник, пересылающий сообщение бота в группу, переносит вместе с ним скрипт. Затем сообщение остается в истории чата как любое другое до момента удаления и может быть экспортировано через месяцы или годы, обнаружили исследователи.
Они сообщили об уязвимости Telegram 3 июня, через два дня после ее обнаружения, и заявили, что тестировали ее только на своих учетных записях и тестовых группах. В их статье не утверждается, что кто-либо использовал эту уязвимость против реальных пользователей.
При открытии файла экспорта, содержащего сообщение, скрипт запускался без каких-либо дополнительных действий, сообщили исследователи. Он мог прочитать каждое сообщение в этом файле, включая имена отправителей и временные метки, название чата, его тип и количество участников, а также локальный путь к файлу, и отправить все это на сервер злоумышленника. Код экспорта Telegram Desktop разбивает большие экспорты на файлы по 1000 сообщений каждый, поэтому один файл раскрывает максимум свое собственное содержимое, а не весь чат или учетную запись Telegram.
Скрипт также мог перезаписать страницу. В демонстрации исследователей он заменил весь экспорт поддельным формой “верификации” Telegram. Тот же контроль мог изменять даты, отправителей или текст сообщений в файле, используемом в качестве записи, заявили они. Это не изменило собственную копию чата в Telegram или файл экспорта, сохраненный на диске.
Исследователи оценили уязвимость в 8,2 балла из 10 по шкале CVSS 3.1, при этом по состоянию на 14 сентября оценка от Telegram или от Национальной базы данных уязвимостей США (NVD) отсутствовала.
Чтобы скрипт запустился, должны были совпасть три условия: HTML-экспорт был создан с использованием версии Telegram Desktop до исправления, сообщение, содержащее скрипт, попало в экспортируемый чат, и файл был открыт в браузере с включенным JavaScript. Исследователи изучали только HTML-экспорт Telegram Desktop и не рассматривали формат экспорта JSON или функции экспорта других приложений Telegram.
Попадет ли пересланное сообщение бота в экспорт, зависит от способа экспорта. Экспорт отдельного чата из его меню включает сообщения всех участников. Экспорт всей учетной записи по умолчанию включает только собственные сообщения владельца учетной записи в группах и каналах, но все сообщения в личных чатах и чатах с ботами, согласно коду экспорта и документации Telegram.
Исправление, коммит 8457d13a от разработчика Telegram Desktop Джона Престона, добавляет недостающее экранирование. Он был написан 30 июня и попал в бета-версию 6.9.4 3 июля, а в стабильную версию 7.0.1 14 июля — первые исправленные версии, опубликованные на GitHub. Строка без экранирования присутствовала в стабильных версиях с 4.15.1 в марте 2024 года, примерно два года и четыре месяца.
Исследователи советуют пользователям:
До обновления приложения нет смысла создавать новые HTML-экспорты, поскольку только экспорты, созданные старым кодом, содержат уязвимость.
По состоянию на 14 сентября Telegram не опубликовал никаких рекомендаций для пользователей, хранящих старые экспорты.
В примечаниях к выпуску 6.9.4 и 7.0.1, журнале изменений приложения и объявлении об обновлении от 14 июля не упоминается исправление, а в репозитории Telegram Desktop на GitHub нет никаких уведомлений о безопасности.
Идентификатор CVE для уязвимости также отсутствует. Исследователи отметили, что по состоянию на 11 сентября поиск в общедоступных базах уязвимостей, проведенный The Hacker News 14 сентября, не выявил ни одного.
Исследователи сообщают, что Telegram подтвердил уязвимость 1 июля и предложил вознаграждение за ошибку в размере 500 долларов США, от которого они отказались, попросив передать его на благотворительность. Они запросили скоординированную дату публикации и предложили молчать до выхода исправления. «Мы также рассмотрели возможность публичного раскрытия, но не можем одобрить это, поскольку раскрытие даже уже устраненных проблем может поставить под угрозу больше пользователей Telegram в будущем. Например, если информация об уязвимости станет общедоступной, злоумышленники могут попытаться использовать ее, причинив тем самым финансовый ущерб пользователям Telegram», — написал Telegram Support в электронном письме от 1 июля, которое исследователи опубликовали в виде скриншота. Они восприняли это как отказ разрешить публикацию даже после исправления. Они утверждают, что никакого соглашения о неразглашении не было, и опубликовали информацию 12 сентября, после выхода исправления. Правила программы вознаграждений за ошибки, опубликованные Telegram, гласят, что уязвимости, «раскрытые общественности или третьим сторонам до их устранения», не подлежат вознаграждению. На странице ничего не говорится о публикации после исправления.

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

Похожие новости: