# HTML-виджеты Telegram получили RCE за неделю: хронология фиксов и ответ Дурова

> 2026-11-14 · AI Release · @ai_release1

> #Telegram #безопасность #QuickJS #RCE #HTML-виджеты #информационная_безопасность #AI #кибербезопасность

### ⚡ Главное за 5 секунд - HTML-виджеты открыли всем ботам 9 ноября в Bot API 10.4 — и за первую неделю движок QuickJS-ng дважды правили из-за выполнения кода. - Фиксы шли волнами: движок v0.6.1 (6 ноября) и v0.6.4 (10 ноября), клиент Telegram Desktop 7.4.2 и 7.4.3 (13 ноября, ночь по Москве). - Атака требовала, чтобы человек сам запустил бота; Telegram называет сценарий закрытым на сервере, но независимого подтверждения этому в поводе нет. ### 🔍 Что случилось 5 ноября в описании Telegram Desktop 7.4.0 появилась ровно одна строка — «HTML widgets in bots». Через четыре дня, 9 ноября, виджеты открыли всем ботам в Bot API 10.4, и в тот же день Андреас Рёсдал выложил аудит движка QuickJS-ng на 27 находок. К 13 ноября Telegram выпустил уже 7.4.3. Механика такая: виджет — это сообщение с HTML и JavaScript, до 4 КБ. Скрипт крутится в песочнице без сети и без ввода с клавиатуры, но под ним лежит QuickJS, движок на C, и ошибка работы с памятью выносит скрипт за пределы песочницы. Первый баг — use-after-free в `replace`: регулярка пересобиралась прямо посреди операции, старый байткод освобождали, а движок продолжал читать его по прежнему адресу. Второй — use-after-return: `await using` внутри обычной функции, движок принимал код, который должен был отклонить, функция завершалась, а замыкания лезли в её бывшую память. В журнале исправлений запись о RCE стоит 6 ноября — за три дня до открытия виджетов всем ботам. 11 ноября, на следующий день после статьи автора разбора на Хабре, V12 выложила ролик: виджет запускает калькулятор на Android. Дальше Павел Дуров ответил постом — «Проблемы не существует. Никого нельзя было взломать одним лишь получением сообщения», а закрыл тему предложением «Попробуйте взломать мой аккаунт: t.me/monk». ### 🧠 Наш разбор Совпадение по датам выглядит некрасиво. Функцию выкатили всем ботам 9 ноября, хотя запись про RCE в журнале движка появилась тремя днями раньше. Наша оценка: это не злой умысел, а нормальная для быстро катящихся фич гонка — сначала доступ, потом закрытие дыр, и посторонние исследователи успевают быстрее. Но именно поэтому фраза «уязвимости нет, и мы её исправили» в одном посте и звучит как мем. Что это меняет по сути: у мессенджера появился свой рантайм для чужого кода. Раньше риск от сообщения сводился к фишингу, теперь — к запуску кода на JS-движке. Требование «сначала нажми Старт у бота» сужает сценарий, но человек идёт в чат не за этим: под предлогом верификации для входа «Старт» нажимают не глядя. Это рассуждение, а не свидетельство конкретной атаки. Выигрывают, похоже, обе стороны сразу. Аудит Рёсдала писали с помощью Claude Fable 5.1, ошибку памяти 11 ноября нашла Mythos 5.2, а Коннор Ши подтвердил результат. Нейросети ускорили поиск багов в чужом C-коде — и заодно ускорили гонку для тех, кто катит этот код в прод. Кто проигрывает — зависит от того, сколько таких находок ещё лежит в отчёте без PoC. ### ⚠️ Чего мы не знаем Все 27 находок Рёсдал проверил по коду и не пытался воспроизвести — это его собственная оговорка. Неизвестно, какой именно баг использовала V12 и был ли вообще реальный инцидент помимо демонстрации калькулятора. Telegram — заинтересованная сторона, и его «полностью закрыто на сервере» никем в поводе не подтверждено. Список исправлений в журналах тоже не гарантирует, что он полный. ### 💬 О чём спорить Обязан ли мессенджер с миллиардом пользователей держать новую исполняемую поверхность за флагом дольше одной недели — или скорость раскатки тут важнее? Считать ли требование «сам запусти бота» защитой или перекладыванием ответственности на человека, который просто читает сообщения? Стоит ли верить аудитам, где нейросеть искала баги, а человек проверял их по коду без воспроизведения? **Прогноз:** в течение квартала выйдет минимум один независимый публичный разбор или PoC по QuickJS-ng в контексте виджетов — при условии, что исследователи не упрутся в отсутствие тестового стенда. **Дисклеймер:** хронология и детали уязвимостей взяты из одного авторского разбора; официально Telegram подтвердил только исправление на сервере. **Источник:** Хабр

[Источник](https://habr.com/ru/articles/1107658/)
