Пользователям Telegram на Android стоит установить версию 13.2.2: в ней исправлена ошибка, допускавшая выполнение машинного кода через сообщение с виджетом. Обновление выпущено 10 ноября. Возможность добавлять ботам такие виджеты появилась в мессенджере днём ранее, 9 ноября
Источником проблемы стал разбор сценариев в используемом мессенджером движке QuickJS — собственной версии проекта QuickJS-ng. Обработчик разрешал конструкцию await using внутри заголовка цикла в функции, которая не была асинхронной. Из-за этого после завершения функции вложенные функции сохраняли доступ к её локальным переменным в уже освобождённой памяти стека. Исправленный обработчик отвергает такую конструкцию как синтаксическую ошибку
Первоначальное сообщение касалось версии 13.2.1 для Android. Однако, по данным Telegram, ошибка распространялась на все платформы, для которых собирается его вариант движка. Поэтому упоминание Android не означает, что проблема ограничивалась этой системой
Появление дефектного кода в основном проекте QuickJS-ng относится к 16 мая, когда добавили явное управление ресурсами. Разработчик Андреас Рёсдал описал ошибку в опубликованном 9 ноября аудите движка, выполненном с помощью модели искусственного интеллекта. Эта проблема получила высокий уровень опасности и стала одной из 27 находок отчёта
Сообщите редакции. Существенные исправления мы отмечаем в материале