28 октября на конференции OffensiveCon в Токио исследователь Сайфельдин Азиз прочитал доклад о zero-click уязвимостях в анимированных стикерах Telegram — то есть таких, для которых пользователю не нужно ничего нажимать: достаточно, чтобы клиент отрисовал присланный стикер. По анонсу, в библиотеке rlottie, которой клиенты Telegram рисуют такие стикеры, нашлось несколько ошибок порчи памяти, а серверную проверку стикеров удалось обойти логическими ошибками в их доставке. Для Telegram на iOS цепочка, по словам автора, доводит до исполнения кода. Больше всего это касается владельцев iPhone и iPad: в Android и десктопе стикеры уже рисует новый движок Telegram, а в iOS rlottie по-прежнему стоит.
Что известно о докладе
Доклад называется «Stickers r-lot-tie Handle: Vulns, Bypasses, and Telegram's Zero-Click Attack Surface» и стоял в программе второго дня конференции, 28 октября в 10:30 по Токио. Организаторы опубликовали кадр со сцены в 01:32 UTC, во время выступления. Записи, слайдов, публичного разбора и номеров CVE для находок Азиза пока нет, поэтому всё, что известно о содержании, — это анонс.
По анонсу, исследование шло около года и состоит из трёх шагов:
- Фаззинг rlottie. Фаззинг — автоматическая подача в программу миллионов искажённых файлов в поисках падений; здесь его вела языковая модель. Он нашёл несколько ошибок порчи памяти, которые, по анонсу, затрагивают клиенты Telegram на iOS, Android и десктопе.
- Обход серверной проверки. Сервер Telegram проверяет стикеры и не пропускает подозрительные файлы — на этом и держалась модель угроз. В анонсе описаны отдельные логические ошибки в том, как стикеры доставляются и проверяются, и несколько обходов защит на сервере и в клиенте.
- Цепочка против iOS. Всё вместе собрано в эксплойт, который исполняет код в Telegram для iOS; ограничения эксплойта автор разбирает отдельно.
Шагов воспроизведения в анонсе нет, и в этой статье их тоже нет.
Почему стикер опасен без нажатия
Анимированный стикер — это файл TGS: сжатый gzip JSON формата Lottie, где анимация описана векторными контурами. Клиент растеризует его нативной библиотекой сам, как только стикер попадает в видимую область: в чате, в превью диалога, в реакциях, в кастомных эмодзи статуса. Поэтому ошибка в рендерере — это поверхность атаки без участия пользователя, а единственный фильтр между отправителем и уязвимым кодом — сервер Telegram.
Отсюда вопрос, которым заканчивается анонс: если безопасность клиента держится на том, что провайдер решает, какой файл дойдёт до уязвимого кода, то что это — мера защиты, архитектурный риск или нечто ближе к бэкдору.
Дело ZDI
Доклад продолжает спор, начавшийся весной. 26 марта Zero Day Initiative сообщила Telegram об ошибке в rlottie, которая позволяет записать данные перед началом выделенного буфера и исполнить код. 31 марта Telegram ответил, что уязвимость закрыта проверкой на сервере, 14 апреля попросил полную цепочку до исполнения кода. 15 октября ZDI опубликовала бюллетень ZDI-26-757 как уязвимость без исправления, с оценкой CVSS 7.0; весной, когда о деле впервые написали, называлась оценка 9.8 (SecurityAffairs, CyberInsider). Доклад Азиза построен как опровержение аргумента Telegram: код, который считался недостижимым, оказался достижимым.
Сам rlottie у Telegram — не новая мишень. В 2020 году Shielder нашёл в нём 13 ошибок, в том числе CVE-2021-31322; их исправили в версиях 7.1 осенью 2020 года, а разбор вышел в феврале 2021-го. В сентябре 2026 года по чатам ходил стикер, закрывавший приложение на всех клиентах, кроме веба.
Что Telegram меняет в коде
Telegram пишет собственный рендерер Lottie на Rust — tlottie. В его описании прямо сказано, что JSON анимации считается недоверенным входом, а сравнивается он с форком rlottie 2019 года, который используют клиенты.
В исходниках Telegram для Android 13.1.1 нативного rlottie уже нет — лежит собранный tlottie; Android перешёл на него к версии 12.10.0, десктоп — в сентябре.
В Telegram для iOS tlottie добавили 11 сентября — вторым движком рядом с rlottie, а не вместо него. Стикеры, эмодзи, реакции и клавиатура стикеров выбирают движок при каждой отрисовке, и сервер может вернуть их на rlottie флагом ios_killswitch_disable_tlottie. Ещё в 50 местах — второстепенный интерфейс, экраны до входа, окно «Поделиться», экспорт из редактора медиа — всегда рисует rlottie. Связаны ли эти правки с находками Азиза, по коду не видно; в анонсе сказано, что уязвимый код рендеринга остаётся в официальных клиентах.




