استیکر انیمیشنی در چت‌های تلگرام گسترش یافته که با نمایش آن، اپلیکیشن به طور کامل بسته می‌شود. این آسیب‌پذیری در iOS، اندروید، macOS و ویندوز قابل تکرار است؛ در حالی که نسخه وب تلگرام همچنان کار می‌کند. گزارش این آسیب‌پذیری از ژوئیه در بخش پشتیبانی تلگرام ثبت شده بود، و اصلاح آن در سپتامبر آغاز شد، زمانی که فایل به صورت گسترده منتشر شد. به عبارت دیگر، تلگرام خود را با یک استیکر خراب‌کننده مواجه کرده بود.

نحوه عملکرد خرابی

استیکر انیمیشنی در تلگرام فایلی با فرمت TGS است: یک فایل JSON فشرده‌شده با gzip که با استاندارد Lottie تعریف شده و انیمیشن با استفاده از مسیرهای برداری و نقاط تعریف می‌شود. مشتریان این فایل‌ها را با موتور انیمیشن داخلی خود رندر می‌کنند — و دقیقاً این موتور در برابر فایل‌های مخرب ناتوان است. در بحث‌های مربوط به این باگ گفته شده که مشکل از تعداد نقاط خیلی زیاد در مسیرهای انیمیشن ناشی می‌شود؛ فایل حاوی تعداد غیرعادی‌ای از رئوس (vertices) است و مشتری در هنگام تجزیه آن خراب می‌شود. نسخه وب تلگرام از موتور متفاوتی برای رندر کردن Lottie استفاده می‌کند، بنابراین تنها نسخه رسمی که از این مشکل مصون است، نسخه وب است.

نکته جالب دیگر این است که تلگرام یک سیستم بررسی سروری برای فایل‌های استیکر آپلود شده دارد — بخشی از فایل‌های نادرست توسط آپلودر رد می‌شوند — اما این استیکر خراب‌کننده از این سیستم عبور کرده و به مشتری رسیده است. مشتری فایل را به عنوان یک استیکر معمولی دریافت می‌کند و خرابی در مرحله رندر کردن رخ می‌دهد.

این موضوع باعث شده که گستره خرابی به هر کسی محدود شود که در رابط کاربری آن، انیمیشن در ناحیه دید قرار گرفته باشد — در چت، در پیش‌نمایش گفتگو یا در لیست واکنش‌ها.

زمان‌بندی رویداد

این آسیب‌پذیری از ژوئیه شناخته شده بود. باگ‌هانتر @w1r3l355 گزارشی در بخش پشتیبانی تلگرام ارسال کرد که حاوی استیکری بود که تمام مشتریان غیروب (به جز وب) را خراب می‌کرد — اما فایل را به صورت عمومی منتشر نکرد. این گزارش در Android، iPhone، Mac و ویندوز بررسی شد: مشتریان در تمام چهار پلتفرم خراب می‌شدند و چتی که استیکر در آن فرستاده شده بود، برای شرکت‌کنندگان دیگر دیگر باز نمی‌شد. هیچ پاسخی از سوی تلگرام دریافت نشد و پرداختی نیز صورت نگرفت.

در اوایل سپتامبر، فایل دوباره کشف شد — این بار به جای گزارش، به صورت گسترده در چت‌ها پخش شد. در ۸ سپتامبر، وکتور دوم ظاهر شد: از استیکر یک ایموجی سفارشی ساخته شد و در وضعیت (status) قرار گرفت در این پیام. ایموجی‌های سفارشی هم از نوع Lottie هستند و وضعیت در کنار نام کاربر در هر چتی که کاربر پیام می‌فرستد نمایش داده می‌شود — بنابراین خرابی دیگر نیاز به ارسال پیام نداشت.

اصلاح پس از انتشار گسترده فایل آغاز شد. در همین مدت، اینترنت آماری از تأثیرات این فایل جمع‌آوری کرد:

The post on Telegram — @adele_toberg
استیکر خراب شده در مقابل رکن

اقدامات پیش از اصلاح

تمام راه‌حل‌های جایگزین به یک نکته کلی منتهی می‌شوند: جلوگیری از رندر کردن انیمیشن توسط مشتری.

  • حالت صرفه‌جویی انرژی در تنظیمات تلگرام، پخش خودکار استیکرها و ایموجی‌های انیمیشنی را غیرفعال می‌کند — فایل تجزیه نمی‌شود و خرابی رخ نمی‌دهد. ایمن‌ترین راه‌حل.
  • اگر اپلیکیشن بلافاصله پس از راه‌اندازی بسته شود، هر اعلان تلگرامی را باز کنید: مشتری با افتتاح یک چت خاص شروع می‌شود و از چتی که باعث خرابی می‌شود، عبور می‌کند.
  • فشار طولانی روی آیکون تلگرام → «مورد علاقه» یا «نوشتن پیام» — اجرای اپلیکیشن بدون ورود به آخرین چت باز شده.
  • کلاینت وب کار می‌کند: با استفاده از آن می‌توانید فرستنده پیام را پیدا کنید، پیام را حذف کنید و گزارش دهید.

جمع‌بندی راه‌حل‌های جایگزین توسط کاربران جمع‌آوری شده است.

و یک قاعده ساده بهداشتی برای روزهای آینده: تا زمان اصلاح، از قرار دادن استیکرها یا نصب پک‌های تصادفی از پیام‌های ناشناخته یا پیام‌هایی با عنوان «بررسی کن که آیا این برای تو کار می‌کند» خودداری کنید — هر انیمیشن ناشناخته ممکن است همان فایل خراب‌کننده باشد. پک‌های معتبر را فقط در دسته‌بندی‌های ایموجی و استیکرها پیدا کنید.

اقتصاد گزارش

نکته جالب این است که خود آسیب‌پذیری نیست، بلکه مسیری که این مشکل طی کرده، مورد توجه است. گزارش اولیه در ژوئیه با مثالی غیرعمومی به مدت دو ماه بدون پاسخ ماند؛ اصلاح تنها پس از انتشار گسترده فایل آغاز شد. برای مقایسه، مبلغ پرداختی برای یک باگ دیگر که یک لینک خارجی را به صورت داخلی نمایش می‌داد و آدرس IP کاربر را فاش می‌کرد، ۱۰۰ دلار بود. در حالی که برای این انیمیشن که تمام مشتریان ناتیو را خراب می‌کرد، تاکنون هیچ پرداختی انجام نشده است.