В Telegram Desktop найдена уязвимость, через которую можно было внедрить JavaScript-код в HTML-файлы с экспортом переписки. При открытии файла в браузере скрипт автоматически запускался и получал доступ ко всем сообщениям в экспорте — тексты, имена отправителей, время отправки, название чата и его тип.
Денис и Александр Ростиловы выявили проблему. Причина — неправильная обработка inline-кнопок, которые боты добавляют под сообщениями. При экспорте чата Telegram экранировал спецсимволы в текстах, но не делал этого для текста на кнопках. Бот мог поместить туда тег script, замаскировав его невидимыми символами. В самом Telegram такое сообщение выглядело нормально.
Боту даже не нужно было находиться в целевой группе. Если сообщение содержало только кнопки со ссылками, они сохранялись при пересылке. Вредоносное сообщение могло годами лежать в истории чата, ожидая попадания в экспорт.
Запущенный скрипт получал доступ ко всем данным в файле экспорта и мог отправить их на сервер атакующих. Telegram Desktop разбивает крупные экспорты по 1000 сообщений, поэтому вредоносный код получал доступ только к одному файлу.
Помимо кражи данных, скрипт позволял менять содержимое страницы — подменять текст сообщений, даты, имена отправителей. Исследователи продемонстрировали замену всей страницы на поддельную форму верификации Telegram. При этом оригинальная переписка и файл не изменялись.
Уязвимость присутствовала в Telegram Desktop с версии 4.15.1 (март 2024 года) до версии 6.9.3. Исправление вышло в бета 6.9.4 (3 июля 2026 года) и в стабильной версии 7.0.1 (14 июля).
Исследователи уведомили Telegram 3 июня 2026 года. Разработчики подтвердили проблему 1 июля и предложили вознаграждение 500 долларов. Ростиловы отказались от выплаты и попросили перечислить деньги благотворительным организациям, а также согласовать дату публичного раскрытия информации. Telegram ответил отказом, заявив, что публикация сведений об уязвимости может использоваться для атак.
Исследователи не подписывали соглашение о неразглашении, а патч давно вышел. В минувшие выходные они опубликовали свой отчет.
Обновление клиента не обезвреживает созданные ранее HTML-файлы, которые могут содержать вредоносный код. Рекомендуется заново экспортировать старые чаты после обновления Telegram Desktop или открывать прежние экспорты с отключенным JavaScript. К архивам больших групп следует относиться особенно осторожно — сложно проверить происхождение каждого сообщения.
