Telegram ломается от картинки меньше одного килобайта

Аномальный параметр Lottie превращает крошечный стикер в непосильную задачу для рендерера.


v8ezrpj4472w9rau0srwo529cbes87mk.jpg

Для сбоя Telegram не понадобились ни большой файл, ни сложная цепочка действий. В чатах начал распространяться стикер размером всего 269 байт , способный заставить приложение аварийно завершить работу уже при попытке показать сообщение. У части пользователей Telegram закрывается при открытии проблемного диалога, а в некоторых случаях сбой повторяется после нового запуска клиента.

Причина скрывается внутри анимированного изображения. Анимированные стикеры Telegram используют формат TGS , построенный на Lottie JSON. Формат описывает векторную графику и параметры анимации, а клиент превращает такое описание в изображение непосредственно на устройстве. В проблемном файле для небольшой звезды задано значение порядка 1038 точек. При обработке аномального параметра рендерер пытается построить фигуру с практически невозможным количеством элементов, резко увеличивает нагрузку на ресурсы и в итоге завершает работу приложения.

Нажимать на стикер при этом необязательно. Согласно публичному разбору инцидента, сбой может возникнуть уже при открытии чата, где находится специально подготовленная анимация. Сообщение сохраняется в истории, поэтому повторное открытие проблемного диалога способно снова запустить обработку файла. Признаков кражи переписки, ключей или доступа к аккаунту исследователи не обнаружили. По характеру воздействия проблема ближе к локальной DoS-атаке , при которой специально сформированные данные делают приложение или отдельный чат временно недоступными.

Масштаб проблемы зависит от используемого клиента и версии Telegram. Разработчики Telegram Desktop уже выпустили версию 7.2.7 , где прямо указали исправление сбоев при обработке некорректных Lottie-файлов. Пользователям настольного клиента достаточно установить актуальное обновление. Для iOS в начале недели сообщалось о подготовленном исправлении, которое ещё ожидало распространения в стабильной сборке.

Разработчики продолжают усиливать проверку анимаций. В репозитории Telegram Desktop появился отдельный запрос на перенос дополнительных защитных проверок из библиотеки tlottie ; автор запроса прямо упоминает DoS-ошибки при обработке недоверенных Lottie-файлов. Сама библиотека написана на Rust и проектировалась с расчётом на обработку Lottie JSON как потенциально недоверенного входного содержимого.

Похожий класс ошибок уже создавал проблемы Telegram несколько лет назад. В 2022 году пользователи описали сбой , при котором специально подготовленные анимированные стикеры огромного разрешения заставляли клиенты расходовать сотни мегабайт памяти на отрисовку одного кадра. Современный случай использует другой параметр, но причина остаётся похожей: компактный файл способен потребовать несоизмеримо больше ресурсов после распаковки и обработки графическим движком.

До установки исправлений лучше не открывать повторно диалог, после которого Telegram начал аварийно закрываться. Если доступ к чату сохраняется через обновлённую или невосприимчивую версию клиента, проблемное сообщение можно удалить из истории. Для Telegram Desktop главным способом защиты остаётся обновление до версии 7.2.7 или новее.