В HTML-виджетах Telegram нашли уязвимость: код выполнялся на устройстве.
В HTML-виджетах Telegram обнаружена первая серьёзная уязвимость. Через неё скрипт из обычного сообщения мог выполнить на устройстве собственный машинный код.
Telegram уже закрыл уязвимость в новых HTML-виджетах. Проблему описали на примере Telegram для Android 13.2.1, но команда мессенджера признала, что ошибка была на всех платформах, где собирается движок Telegram.
Ошибка находилась в QuickJS. Это небольшой JavaScript-движок, на котором работают скрипты виджетов. Telegram использует собственную версию открытого проекта QuickJS-ng.
Как это работало
- движок разрешал писать
await usingв заголовке цикла даже в обычных, неасинхронных функциях; - из такой функции он выходил как из асинхронной и не закрывал ссылки на её переменные;
- вложенные функции продолжали обращаться к уже освобождённой памяти, и скрипт выбирался из песочницы.
Уязвимость нашли с помощью ИИ. Разработчик прогнал весь движок через Claude Fable 5.1 и выложил аудит с 27 находками. Эта проблема значится в списке третьей и отмечена высокой опасностью.
Исправление вышло 10 ноября, в тот же день появилась версия для Android 13.2.2. Пользователям стоит обновиться.
Ботам открыли виджеты только 9 ноября, а через два дня исследователи V12 показали через них выполнение кода на Android. Уязвимый код находился в движке ещё с мая.
Мы ожидаем новые находки в HTML-виджетах.

