- Регистрация
- Окт 16, 2022
- Сообщения
- 1,233
- Реакции
- 214
- Награды
- 2


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

