ExPatch güvenlik araştırmacılarının 12 Eylül'de yayımladığı teknik analize göre, Telegram Desktop'taki bir açık, bir botun gönderdiği mesajın, kullanıcıların HTML dosyası olarak dışa aktardığı sohbetlerin içine gizli JavaScript kodu yerleştirmesine olanak tanıyordu.
Telegram içinde mesaj tamamen sıradan görünüyordu; üzerinde bir bağlantı düğmesi vardı. Kod yalnızca biri dışa aktarım dosyasını tarayıcıda açtığında çalışıyordu. Kod, dosyadaki tüm mesajları saldırganın kontrolündeki bir sunucuya kopyalayabiliyor ya da sayfada görünen içeriği değiştirebiliyordu.
Telegram düzeltmeyi temmuz ayında yayımladı. Ancak uygulama güncellemesi, eski sürümlerle oluşturulmuş dışa aktarım dosyalarını güncellemiyor. Yani eski HTML dışa aktarımları hâlâ bu kodu taşıyabiliyor.
Telegram'ın Windows, macOS ve Linux uygulaması olan Telegram Desktop, tek bir sohbeti ya da hesaptaki tüm sohbetleri tarayıcıda açılabilen HTML sayfaları olarak kaydedebiliyor. Botlar mesajlarının altına düğme sıraları ekleyebiliyor; Telegram bunlara satır içi klavye adını veriyor ve her düğmede görünecek metni bot belirliyor.
Araştırmacılar Denis Rostilov ve Aleksander Rostilov, düzeltmeden önce dışa aktarım kodunun bu düğme metnini HTML sayfasına hiçbir kaçış işlemi uygulamadan doğrudan yazdığını tespit etti.
Kaçış işlemi, "<" gibi karakterleri dönüştürerek tarayıcının bunları kod yerine düz metin olarak göstermesini sağlıyor. Dışa aktarım kodu bu işlemi mesaj metnine, gönderen adlarına ve diğer alanlara uyguluyordu.
Bu yüzden bir bot, düğme metnine bir script etiketi yerleştirebiliyordu. Araştırmacıların test ettiği Telegram Desktop sürümünde düğme, görünmez karakterlerle doldurulduğu için boş görünüyordu.
Botun hedef aldığı sohbette bulunması da gerekmiyor. Düğmeleri yalnızca web bağlantılarından oluşan bir mesaj, iletildiğinde düğmelerini koruyor. Yani botun mesajını bir gruba ileten herhangi bir üye, kodu da beraberinde taşıyor. Mesaj, silinene kadar sohbet geçmişinde diğer mesajlar gibi duruyor ve aylar, hatta yıllar sonra dışa aktarılabiliyor.
Araştırmacılar açığı bulduktan iki gün sonra, 3 Haziran'da Telegram'a bildirdiklerini ve yalnızca kendi hesapları ile test gruplarında denediklerini belirtiyor. Yazılarında açığın gerçek kullanıcılara karşı kullanıldığına dair bir iddiada bulunmuyorlar.
Araştırmacılara göre, mesajı içeren bir dışa aktarım dosyası açıldığında kod başka hiçbir tıklama gerektirmeden çalışıyordu. Kod; dosyadaki tüm mesajları, gönderen adlarını ve zaman damgalarını, sohbetin adını, türünü, üye sayısını ve yerel dosya yolunu okuyup hepsini saldırganın sunucusuna gönderebiliyordu.
Telegram Desktop'ın dışa aktarım kodu uzun aktarımları her biri 1.000 mesajlık dosyalara bölüyor. Dolayısıyla tek bir dosya, en fazla kendi içeriğini ifşa ediyor; sohbetin tamamını ya da Telegram hesabını değil.
Kod sayfayı yeniden de yazabiliyordu. Araştırmacıların gösteriminde kod, dışa aktarımın tamamını sahte bir Telegram "doğrulama" formuyla değiştirdi.
Aynı kontrol, kayıt olarak kullanılan bir dosyadaki tarihleri, gönderenleri ya da mesaj metinlerini de değiştirebiliyordu. Ancak Telegram'ın kendi sunucusundaki sohbet kopyasını ya da diskteki dışa aktarım dosyasını değiştirmiyordu.
Araştırmacılar açığa CVSS 3.1 ölçeğinde 10 üzerinden 8.2 puan verdi. 14 Eylül itibarıyla Telegram'dan ya da ABD Ulusal Güvenlik Açığı Veritabanı'ndan (NVD) bir puanlama bulunmuyor.
Kodun çalışması için üç koşulun aynı anda sağlanması gerekiyordu: HTML dışa aktarımın düzeltmeden önceki bir Telegram Desktop sürümüyle yapılmış olması, kodu taşıyan mesajın dışa aktarılan sohbetin içinde yer alması ve dosyanın JavaScript etkin bir tarayıcıda açılması.
Araştırmacılar yalnızca Telegram Desktop'ın HTML dışa aktarımını inceledi; JSON dışa aktarım biçimini ve Telegram'ın diğer uygulamalarındaki dışa aktarım özelliklerini ele almadı.
İletilen bir bot mesajının dışa aktarıma girip girmeyeceği, aktarımın nasıl yapıldığına bağlı. Menüden tek bir sohbet dışa aktarıldığında tüm üyelerin mesajları dahil oluyor. Dışa aktarım koduna ve Telegram'ın dokümantasyonuna göre tam hesap aktarımında ise varsayılan olarak grup ve kanallarda yalnızca hesap sahibinin kendi mesajları; bire bir sohbetlerde ve botlarla yapılan sohbetlerde ise tüm mesajlar yer alıyor.
Düzeltme, Telegram Desktop geliştiricisi John Preston'ın 8457d13a numaralı commit'iyle geldi ve eksik kaçış işlemini ekledi. Kod 30 Haziran'da yazıldı, 3 Temmuz'da 6.9.4 beta sürümüne, 14 Temmuz'da ise 7.0.1 kararlı sürümüne ulaştı. Bunlar GitHub'da yayımlanan ilk düzeltilmiş sürümler oldu. Kaçış işlemi uygulanmamış satır, Mart 2024'teki 4.15.1 sürümünden beri kararlı sürümlerde bulunuyordu; yani yaklaşık iki yıl dört aydır.
Etkilenen sürümler: Telegram Desktop 4.15.1 (Mart 2024) ile 6.9.3 arası.
Düzeltilen sürümler: 6.9.4 beta (3 Temmuz 2026), 7.0.1 (14 Temmuz 2026) ve sonrası.
Araştırmacılar kullanıcılara şunları öneriyor:
Telegram Desktop'ı 7.0.1 veya üzerine, beta kanalındaysanız 6.9.4 veya üzerine güncelleyin.
Güncellemeden sonra, düzeltmeden önce HTML olarak dışa aktarılmış sohbetleri yeniden dışa aktarın ya da eski dosyaları yalnızca JavaScript kapalıyken açın.
Düzeltmeden önce oluşturulmuş her HTML dışa aktarımını güvenilmez kabul edin; özellikle her mesajın kaynağını doğrulamanın zor olduğu büyük gruplardan alınanları.
Uygulama güncellenene kadar yeni HTML dışa aktarımı oluşturmayın; çünkü açığı yalnızca eski kodla üretilen aktarımlar taşıyor.
14 Eylül itibarıyla Telegram, eski dışa aktarım dosyalarına sahip kullanıcılar için herhangi bir yönlendirme yayımlamış değil.
Ne güvenlik duyurusu var ne de CVE kaydı
6.9.4 ve 7.0.1 sürüm notlarında, uygulamanın değişiklik günlüğünde ve Telegram'ın 14 Temmuz'daki güncelleme duyurusunda bu düzeltmeden söz edilmiyor. GitHub'daki Telegram Desktop deposunda da herhangi bir güvenlik danışma belgesi yer almıyor.
Açık için bir CVE kimliği de bulunmuyor. Araştırmacılar 11 Eylül itibarıyla bir kayıt olmadığını belirtti; The Hacker News'in 14 Eylül'de kamuya açık güvenlik açığı veritabanlarında yaptığı arama da sonuç vermedi.
Araştırmacılar, Telegram'ın açığı 1 Temmuz'da doğruladığını ve 500 dolar hata ödülü teklif ettiğini söylüyor. Ödülü kabul etmeyip bir hayır kurumuna bağışlanmasını istemişler. Ayrıca ortak bir yayın tarihi talep etmişler ve yama çıkana kadar sessiz kalmayı teklif etmişler.
Araştırmacıların ekran görüntüsü olarak yayımladığı 1 Temmuz tarihli e-postada Telegram Destek şöyle yazıyor: "Kamuya açıklama ihtimalini de değerlendirdik ancak bunu onaylayamayız; çünkü giderilmiş sorunların bile açıklanması gelecekte daha fazla Telegram kullanıcısını riske atabilir. Örneğin bir güvenlik açığıyla ilgili bilgi kamuya açılırsa, kötü niyetli kişiler bunu istismar etmeye çalışabilir ve bu da Telegram kullanıcılarının maddi zarar görmesine yol açabilir."
Araştırmacılar bunu, düzeltme yayımlandıktan sonra bile açıklamaya izin verilmediği şeklinde yorumladı. Raporlarını kapsayan bir gizlilik sözleşmesi olmadığını belirtiyorlar ve düzeltme çıktıktan sonra, 12 Eylül'de yayımladıklarını söylüyorlar.
Telegram'ın yayımladığı hata ödülü kuralları, "giderilmeden önce kamuya ya da üçüncü taraflara açıklanan" güvenlik açıklarının ödüle uygun olmadığını belirtiyor. Sayfada, düzeltmeden sonra yapılacak açıklamalarla ilgili herhangi bir ifade yer almıyor.