Экспорт переписки из Telegram Desktop мог превратиться в ловушку для кражи данных. Обнаруженная уязвимость позволяла незаметно внедрять JavaScript в HTML-файлы истории чатов. Ошибка существовала примерно два года и четыре месяца — созданные до исправления архивы остаются уязвимы даже после обновления приложения.

Проблема относилась к хранимому XSS-атакам. Когда пользователь сохранял переписку в виде HTML-страницы, Telegram Desktop экранировал опасные символы в тексте сообщений и именах отправителей, но пропускал текст кнопок Telegram-ботов. Вредоносный код попадал в файл без обработки.

Бот мог поместить JavaScript-тег прямо в название кнопки. Сам мессенджер не исполнял такой код — собственный интерфейс показывает только текст, не интерпретируя его как веб-разметку. Опасность срабатывала позже, при открытии экспортированного файла в браузере.

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

После открытия HTML-файла JavaScript получал полный доступ к содержимому страницы: тексты сообщений, имена авторов, время публикации, названия чатов. Код мог отправлять эти данные на внешний сервер или полностью менять отображение архива — подменять сообщения, даты, имена, показывать фальшивую форму входа. Изменения касались только отображения в браузере, не трогая оригинальную переписку на серверах Telegram.

Бот с режимом конфиденциальности обычно не видит обычную переписку и старые сообщения группы. Вредоносный код обходил эту границу: запускался в браузере пользователя и получал доступ ко всему содержимому открытой HTML-страницы. Серьёзность уязвимости оценена в 8,2 балла по CVSS 3.1.

Ошибка появилась в Telegram Desktop 4.15.1 в марте 2024 года. Исследователи Денис и Александр Ростиловы нашли проблему 1 июня 2026 года. Через два дня отправили Telegram подробное описание с демонстрацией и доказательством концепции. Разработчики выпустили патч 30 июня, а 2 июля код попал в репозиторий. Исправление добавило экранирование текста кнопок и закрыло дополнительный путь для внедрения через обработчик копирования.

Первая исправленная версия Telegram Desktop 6.9.4 вышла 3 июля 2026 года, стабильная версия 7.0.1 — 14 июля. Новые экспорты теперь безопасны, но обновление клиента не чистит старые файлы.

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

Telegram подтвердил отчёт 1 июля и предложил $500 вознаграждения. Исследователи отказались и попросили отправить деньги благотворительной организации. По их словам, Telegram отказался согласовывать публичное раскрытие деталей даже после выпуска патча, опасаясь будущих злоупотреблений. На момент опубликования исследования 12 сентября официального бюллетеня безопасности и номера CVE не было.