Исследователи ExPatch нашли в Telegram Desktop уязвимость типа Stored XSS. Текст сообщений при формировании HTML экранируется функцией SerializeString(), а содержимое inline-кнопок записывается в файл напрямую, без санитизации. Поэтому HTML внутри кнопки браузер воспринимает как настоящий код, включая JavaScript.
Как это работает. Злоумышленник отправляет в чат сообщение с вредоносной inline-кнопкой, например пересылкой. Пользователь позже экспортирует историю в HTML и открывает файл, и код выполняется в контексте страницы. Между размещением payload и его срабатыванием может пройти много времени.
Что мог получить атакующий: тексты сообщений, имена отправителей, временные метки, название и метаданные чата, содержимое всей страницы и локальный путь к файлу. Через XSS также можно подменить содержимое экспорта, например подсунуть поддельную форму авторизации. Серверная история Telegram при этом не менялась.
Telegram исправил проблему в коммите 8457d13a, теперь текст кнопок тоже проходит SerializeString(). Патч вышел в Beta v6.9.4 и Stable v7.0.1, публичного CVE на момент публикации не было.
Старые экспорты, созданные уязвимой версией, обновление не трогает. Такие файлы стоит открывать осторожно.
Полная статья: https://clck.su/UoJao