آسیبپذیری تلگرام دسکتاپ؛ افشای پیامها با فایل HTML آلوده
آسیبپذیری Telegram Desktop امکان اجرای جاوااسکریپت مخفی در فایلهای HTML و افشای پیامها را فراهم میکرد. نسخه آسیبپذیر و راهکار امنیتی را بخوانید.
پژوهشگران امنیت سایبری از کشف یک آسیبپذیری مهم در Telegram Desktop خبر دادهاند که میتوانست به مهاجمان اجازه دهد کدهای مخرب جاوااسکریپت را بهصورت مخفی در پیامها قرار دهند. این کدها در زمان خروجی گرفتن از چتها به فرمت HTML و باز کردن فایل در مرورگر، قابلیت اجرا داشتند.
این آسیبپذیری میتوانست اطلاعات موجود در فایل خروجی، از جمله متن پیامها، نام فرستندگان و برخی اطلاعات مربوط به گفتوگو را در معرض افشا قرار دهد.
آسیبپذیری تلگرام دسکتاپ چگونه عمل میکرد؟
بر اساس گزارش منتشرشده توسط پژوهشگران امنیتی، مشکل اصلی به نحوه پردازش متن دکمههای تعاملی یا Inline Keyboard در Telegram Desktop مربوط بود.
تلگرام دسکتاپ امکان خروجی گرفتن از یک گفتوگو یا تمام چتهای حساب کاربری را در قالب فایلهای HTML فراهم میکند. این فایلها سپس در مرورگر باز میشوند و تاریخچه پیامها را نمایش میدهند.
پژوهشگران دریافتند که در نسخههای آسیبپذیر، متن برخی دکمههای باتها هنگام ایجاد فایل HTML بهدرستی ایمنسازی یا اصطلاحاً Escape نمیشد. در نتیجه، یک بات میتوانست کد جاوااسکریپت را در متن دکمه قرار دهد.
مهاجم حتی میتوانست با استفاده از کاراکترهای نامرئی، کاری کند که دکمه در ظاهر خالی یا عادی به نظر برسد، در حالی که کد مخرب در دادههای خروجی HTML باقی مانده است.
کد مخرب چه زمانی اجرا میشد؟
نکته مهم این است که این اسکریپت در خود محیط تلگرام اجرا نمیشد. اجرای کد تنها زمانی اتفاق میافتاد که کاربر فایل HTML خروجی گرفتهشده را در یک مرورگر وب باز میکرد.
در این شرایط، جاوااسکریپت مخرب میتوانست بدون نیاز به کلیک اضافی اجرا شود و اطلاعات موجود در همان فایل خروجی را پردازش کند.
از جمله اطلاعاتی که میتوانست در معرض دسترسی قرار بگیرد عبارت بودند از:
- متن پیامهای موجود در فایل HTML
- نام فرستندگان پیامها
- زمان و تاریخ پیامها
- نام و نوع چت
- برخی اطلاعات مربوط به گروه یا گفتوگو
- مسیر محلی فایل در سیستم کاربر
بر اساس بررسی پژوهشگران، اسکریپت میتوانست این اطلاعات را به یک سرور تحت کنترل مهاجم ارسال کند.
امکان انتقال کد مخرب از طریق فوروارد پیام
یکی از نکات قابل توجه این آسیبپذیری، امکان باقی ماندن پیام آلوده در تاریخچه چت بود.
بات مهاجم لزوماً نیازی نداشت مستقیماً در گروه یا گفتوگویی که بعداً هدف قرار میگیرد حضور داشته باشد. اگر پیام بات شامل دکمههای لینکدار بود و توسط کاربران فوروارد میشد، پیام میتوانست همراه با کد مخرب به گروهها یا چتهای دیگر منتقل شود.
این پیام سپس ممکن بود برای مدت طولانی در تاریخچه گفتوگو باقی بماند و ماهها یا حتی سالها بعد، هنگام خروجی گرفتن از چت به فرمت HTML، مشکل ایجاد کند.
آیا تمام پیامهای تلگرام در معرض خطر بودند؟
خیر. دامنه این آسیبپذیری محدود به شرایط خاصی بود.
برای اجرای کد مخرب، سه شرط باید برقرار میبود:
- فایل HTML با یکی از نسخههای آسیبپذیر Telegram Desktop ایجاد شده باشد.
- پیام حاوی کد مخرب در میان پیامهای صادرشده قرار داشته باشد.
- فایل HTML در مرورگری باز شود که اجرای JavaScript در آن فعال است.
همچنین، خروجیهای طولانی در Telegram Desktop به فایلهایی با حداکثر ۱۰۰۰ پیام تقسیم میشوند. بنابراین، یک اسکریپت آلوده تنها میتوانست به اطلاعات موجود در همان فایل HTML دسترسی داشته باشد و نه تمام پیامهای حساب کاربری تلگرام.
امکان جعل و تغییر محتوای خروجی
این آسیبپذیری فقط به افشای اطلاعات محدود نمیشد.
پژوهشگران نشان دادند که یک اسکریپت مخرب میتواند محتوایی را که کاربر در مرورگر مشاهده میکند نیز تغییر دهد. برای مثال، در یکی از نمونههای آزمایشی، صفحه خروجی تلگرام با یک فرم جعلی «تأیید حساب» جایگزین شد.
همچنین امکان تغییر ظاهری اطلاعاتی مانند موارد زیر وجود داشت:
- تاریخ پیامها
- نام فرستندگان
- متن پیامها
- محتوای نمایشدادهشده در فایل خروجی
البته این تغییرات فقط در صفحه بازشده در مرورگر اعمال میشد و باعث تغییر پیامهای اصلی در سرورهای تلگرام یا فایل ذخیرهشده روی سیستم نمیشد.
نسخههای آسیبپذیر Telegram Desktop
بر اساس اطلاعات منتشرشده، این مشکل در نسخههای زیر وجود داشته است:
نسخههای آسیبپذیر:
Telegram Desktop از نسخه 4.15.1 که در مارس ۲۰۲۴ منتشر شد تا نسخه 6.9.3
نسخههای اصلاحشده:
- نسخه 6.9.4 Beta
- نسخه پایدار 7.0.1
- نسخههای جدیدتر
تلگرام این مشکل را با اصلاح نحوه پردازش و ایمنسازی متن دکمهها برطرف کرده است.
کاربران تلگرام چه کاری باید انجام دهند؟
اگر از Telegram Desktop استفاده میکنید، توصیه میشود اقدامات زیر را انجام دهید:
۱. تلگرام دسکتاپ را بهروزرسانی کنید
اطمینان حاصل کنید که از نسخه 7.0.1 یا جدیدتر Telegram Desktop استفاده میکنید. کاربران نسخه آزمایشی نیز باید حداقل نسخه 6.9.4 را نصب داشته باشند.
۲. خروجیهای قدیمی HTML را دوباره ایجاد کنید
نکته مهم این است که نصب نسخه جدید تلگرام، فایلهای HTML قدیمی را اصلاح نمیکند.
اگر پیش از انتشار نسخه اصلاحشده از چتهای خود خروجی HTML گرفتهاید، بهتر است پس از بهروزرسانی Telegram Desktop، در صورت نیاز خروجی جدید تهیه کنید.
۳. به فایلهای HTML قدیمی اعتماد کامل نکنید
فایلهای خروجی HTML که با نسخههای آسیبپذیر ایجاد شدهاند، بهویژه خروجی مربوط به گروههای بزرگ که منشأ همه پیامها مشخص نیست، باید بهعنوان فایلهای بالقوه ناامن در نظر گرفته شوند.
در صورت نیاز به باز کردن چنین فایلهایی، غیرفعال کردن JavaScript در مرورگر میتواند از اجرای کدهای احتمالی جلوگیری کند.
آیا این آسیبپذیری دارای CVE است؟
تا زمان انتشار گزارش، شناسه CVE رسمی برای این آسیبپذیری ثبت نشده بود و تلگرام نیز اطلاعیه امنیتی مستقلی درباره آن منتشر نکرده بود.
پژوهشگران امنیتی شدت این مشکل را بر اساس استاندارد CVSS 3.1 برابر با 8.2 از 10 ارزیابی کردهاند، هرچند این امتیاز یک ارزیابی رسمی از سوی تلگرام یا پایگاه ملی آسیبپذیری آمریکا (NVD) نبوده است.
جمعبندی
آسیبپذیری کشفشده در Telegram Desktop نمونهای از خطراتی است که حتی در فایلهای خروجی محلی نیز میتوانند وجود داشته باشند.
در این مورد، یک پیام ظاهراً عادی میتوانست شامل کدی باشد که هنگام خروجی گرفتن از چت و باز کردن فایل HTML در مرورگر اجرا شود. هرچند این مشکل در نسخههای جدید Telegram Desktop برطرف شده، اما فایلهای HTML ایجادشده با نسخههای قدیمی همچنان ممکن است حاوی کد مخرب باشند.
بنابراین، بهترین اقدام برای کاربران این است که Telegram Desktop را به آخرین نسخه بهروزرسانی کنند، خروجیهای HTML قدیمی را با احتیاط باز کنند و در صورت نیاز، پس از بهروزرسانی برنامه فایلهای خروجی جدید ایجاد کنند.