Pada 28 Oktober, di konferensi OffensiveCon Tokyo, peneliti Saifeldeen Aziz menyampaikan presentasi tentang kerentanan zero-click pada stiker animasi Telegram — yaitu kerentanan yang tidak memerlukan interaksi pengguna: cukup dengan klien merender stiker yang diterima. Menurut abstrak, beberapa memory-corruption bugs ditemukan di pustaka rlottie, yang digunakan klien Telegram untuk merender stiker tersebut, dan pemeriksaan stiker di sisi server berhasil dilewati melalui kesalahan logis dalam pengirimannya. Untuk Telegram di iOS, rantai ini, menurut penulis, mengarah pada code execution. Ini paling relevan bagi pengguna iPhone dan iPad: di Android dan desktop, stiker sudah dirender oleh engine Telegram yang baru, sementara di iOS, rlottie masih digunakan.

Apa yang Diketahui tentang Presentasi Ini

Presentasi tersebut berjudul «Stickers r-lot-tie Handle: Vulns, Bypasses, and Telegram's Zero-Click Attack Surface» dan tercantum dalam program hari kedua konferensi, 28 Oktober pukul 10:30 waktu Tokyo. Penyelenggara menerbitkan sebuah foto dari panggung pada pukul 01:32 UTC, selama presentasi berlangsung. Rekaman, slide, analisis publik, dan nomor CVE untuk temuan Aziz belum tersedia, sehingga semua yang diketahui tentang isinya berasal dari abstrak.

Menurut abstrak, penelitian ini berlangsung sekitar satu tahun dan terdiri dari tiga langkah:

  • Fuzzing rlottie. Fuzzing adalah proses otomatis memasukkan jutaan file yang terdistorsi ke dalam program untuk mencari crash; di sini, proses ini dipimpin oleh language model. Ini menemukan beberapa memory-corruption bugs yang, menurut abstrak, memengaruhi klien Telegram di iOS, Android, dan desktop.
  • Melewati Pemeriksaan Server. Server Telegram memeriksa stiker dan tidak mengizinkan file mencurigakan — inilah yang menjadi dasar model ancaman. Abstrak menjelaskan kesalahan logis terpisah dalam cara stiker dikirim dan diperiksa, serta beberapa cara untuk melewati perlindungan di server dan klien.
  • Rantai Serangan terhadap iOS. Semua ini digabungkan menjadi sebuah exploit yang mengeksekusi kode di Telegram untuk iOS; batasan exploit dibahas secara terpisah oleh penulis.

Langkah-langkah reproduksi tidak ada dalam abstrak, dan juga tidak ada dalam artikel ini.

Mengapa Stiker Berbahaya Tanpa Klik

Stiker animasi adalah file TGS: JSON terkompresi gzip dalam format Lottie, di mana animasi dijelaskan oleh kontur vektor. Klien merasternya sendiri menggunakan pustaka native segera setelah stiker muncul di area yang terlihat: di chat, di pratinjau dialog, di reaksi, di emoji status kustom. Oleh karena itu, kesalahan pada renderer adalah permukaan serangan tanpa interaksi pengguna, dan satu-satunya filter antara pengirim dan kode yang rentan adalah server Telegram.

Dari sini muncul pertanyaan yang mengakhiri abstrak: jika keamanan klien bergantung pada penyedia yang memutuskan file mana yang akan mencapai kode yang rentan, maka apakah ini — tindakan perlindungan, risiko arsitektur, atau sesuatu yang lebih dekat dengan backdoor.

Kasus ZDI

Presentasi ini melanjutkan perdebatan yang dimulai pada musim semi. Pada 26 Maret, Zero Day Initiative melaporkan kepada Telegram tentang kesalahan di rlottie yang memungkinkan penulisan data sebelum awal buffer yang dialokasikan dan code execution. Pada 31 Maret, Telegram menjawab bahwa kerentanan telah ditutup dengan pemeriksaan di server, dan pada 14 April meminta rantai lengkap hingga code execution. Pada 15 Oktober, ZDI menerbitkan buletin ZDI-26-757 sebagai kerentanan tanpa perbaikan, dengan skor CVSS 7.0; pada musim semi, ketika kasus ini pertama kali diberitakan, skor 9.8 disebutkan (SecurityAffairs, CyberInsider). Presentasi Aziz dibangun sebagai sanggahan argumen Telegram: kode yang dianggap tidak dapat dijangkau ternyata dapat dijangkau.

rlottie itu sendiri bukanlah target baru bagi Telegram. Pada tahun 2020, Shielder menemukan 13 kesalahan di dalamnya, termasuk CVE-2021-31322; ini diperbaiki pada versi 7.1 pada musim gugur 2020, dan analisisnya dirilis pada Februari 2021. Pada September 2026, sebuah stiker yang menyebabkan aplikasi crash di semua klien kecuali web beredar di chat.

Apa yang Diubah Telegram dalam Kode

Telegram menulis renderer Lottie sendiri menggunakan Rust — tlottie. Dalam deskripsinya, secara eksplisit disebutkan bahwa JSON animasi dianggap sebagai input yang tidak tepercaya, dan dibandingkan dengan fork rlottie tahun 2019 yang digunakan oleh klien.

Dalam kode sumber Telegram untuk Android 13.1.1, rlottie native sudah tidak ada — yang ada adalah tlottie yang sudah dikompilasi; Android beralih ke sana pada versi 12.10.0, desktop pada bulan September.

Di Telegram untuk iOS, tlottie ditambahkan pada 11 September — sebagai engine kedua di samping rlottie, bukan sebagai pengganti. Stiker, emoji, reaksi, dan keyboard stiker memilih engine pada setiap rendering, dan server dapat mengembalikannya ke rlottie dengan flag ios_killswitch_disable_tlottie. Di 50 tempat lainnya — antarmuka sekunder, layar sebelum login, jendela "Bagikan", ekspor dari editor media — selalu dirender oleh rlottie. Apakah perubahan ini terkait dengan temuan Aziz, tidak terlihat dari kode; abstrak menyatakan bahwa kode rendering yang rentan tetap ada di klien resmi.