deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Telegram dışa aktarma XSS'i tek bir kaçırılmış alana dayanıyor: HTML üreten her uygulamadaki bir örüntü

Telegram Desktop'ın HTML dışa aktarma özelliğindeki depolanmış bir XSS, kaçırılmamış bot düğme metninden geliyordu ve grup sohbetlerinde, biri dosyayı dışa aktarıp açana dek sessizce bekliyordu. Bu örüntü, güvenilmeyen veriyi HTML'e yazan her uygulamayı etkiler.

Telegram dışa aktarma XSS'i tek bir kaçırılmış alana dayanıyor: HTML üreten her uygulamadaki bir örüntü

Dışa aktarmayı bekleyen bir payload

dev.to'da yayımlanan bir yazıya göre, ExPatch Vulnerability Research'den güvenlik araştırmacıları Denis Rostilov ve Aleksander Rostilov, Telegram Desktop'ın sohbet dışa aktarma özelliğinde depolanmış bir cross-site scripting açığı buldu. Telegram düzeltmeleri Temmuz 2026'da yayımladı ve araştırmacılar ayrıntıları 12 Eylül 2026'da yayımladı. Rapor, hiçbir CVE atanmadığını, Telegram'ın özel bir güvenlik bülteni yayımlamadığını ve savunmasız kodun yaklaşık iki yıl dört ay boyunca kararlı sürümlerde bulunduğunu belirtiyor.

Saldırı, kurbanın bir web sitesini ziyaret etmesini gerektirmiyor. Bir bot, inline düğmesinde gizli bir payload taşıyan tek bir mesaj gönderiyor. Biri mesajı bir gruba iletiyor ve payload aylarca orada bekleyebiliyor. Bir uyum uzmanı, gazeteci veya avukat daha sonra konuşmayı HTML olarak dışa aktarıp dosyayı açtığında, script sayfa yüklenirken ek bir tıklama veya uyarı olmadan çalışıyor.

Bir alan escaper'ı atladı

Telegram Desktop'ın export_output_html.cpp dosyasındaki dışa aktarma kodu, HTML'e duyarlı beş karakteri kaçış altına alan, yeni satırları br etiketlerine dönüştüren ve kontrol karakterlerini hex olarak kodlayan SerializeString() adlı bir yardımcı içeriyor. dev.to raporuna göre fonksiyon mesaj metnine, gönderen adlarına ve diğer kullanıcı kontrollü alanlara uygulanıyordu; ancak inline klavye düğmelerinin metnine uygulanmıyordu. Ham düğme dizisi doğrudan üretilen belgeye ekleniyordu.

Telegram Desktop geliştiricisi John Preston'ın 8457d13a numaralı commit'i olan düzeltme, o tek alanı SerializeString() üzerinden geçirmekten ibaret. Aynı commit, aynı dosyadaki ikinci bir enjeksiyonu da kapattı; orada kopyalama düğmesinin içeriği, ters eğik çizgiler ve tek tırnaklar kaçış altına alınmadan bir onclick niteliğindeki JavaScript dizisine yerleştirilmişti. İki atlama, tek dosya, ikisi de yıllarca yayımlandı.

İki tüketici, iki kural kümesi

Masaüstü istemcisi mesajları bir tarayıcı motoru yerine kendi UI çatısıyla render ettiği için, düğme metnindeki düz bir script etiketi sıradan karakterler olarak görüntüleniyordu. Araştırmacılar payload'u görünmez Unicode karakterlerle doldurarak düğmenin uygulamada boş görünmesini sağladı. Açık, yalnızca metni HTML olarak ele alan dışa aktarma hattı aynı diziyi bir tarayıcının sonra işaretleme olarak yorumladığı bir dosyaya yazdığında ortaya çıktı.

dev.to yazısı bunu tüketiciler arasındaki bir güven sorunu olarak çerçeveliyor: özdeş veri, farklı ayrıştırma kurallarına sahip iki bileşenden geçiyor ve birinin güvenliği öbürü için sessizce varsayılıyor. Kullanıcı girdisini JSON olarak saklayıp sonra HTML e-postalara, webview'lere veya PDF üreticilerine gömmek aynı hatayı yineliyor.

Payload bir gruba nasıl ulaşıyor

Teslimatı kolaylaştıran üç platform mekanizması bir araya geldi. Botlar inline klavye düğmesi metnini tamamen kontrol ediyor ve Bot API burada işaretleme dahil rastgele Unicode kabul ediyor. Düğmeleri tamamen URL olan inline klavyeler iletmeyi atlattığı için, hazırlanmış mesaj bir grubun üyelerinden biri tarafından herhangi bir gruba aktarılabilir. Ayrıca botun hedef gruba hiç katılması gerekmiyor.

Botlara varsayılan olarak sıradan grup trafiğini gizleyen Telegram'ın bot gizlilik modeli tamamen atlatılıyor: payload hiçbir zaman Bot API üzerinden mesaj okumuyor. Mesajları olaydan sonra, kurbanın tarayıcısındaki dışa aktarılmış dosyadan okuyor.

Script neye erişebilirdi

Dışa aktarma JavaScript etkin biçimde açıldığında, enjekte edilen kod belgedeki her şeyi okuyabilirdi: mesaj metni, gönderen adları ve zaman damgaları; ad, tür ve üye sayısı gibi sohbet üst verisi; ayrıca işletim sistemi kullanıcı adını ve dizin düzenini sızdıran location.href üzerinden yerel dosya yolu. Araştırmacıların kavram kanıtı, sayfayı sahte Telegram markalı bir doğrulama formuna dönüştürdü; bu da adlar ve zaman damgaları dahil render edilen içeriğin sessizce değiştirilebileceğini gösteriyor.

Araştırmacılar sorunu, etkinin Bot API'nin hiç erişmesi amaçlanmayan bir bağlama düştüğü için, kapsam değişikliğiyle CVSS 3.1 8.2, Yüksek olarak derecelendirdi. Gerçek bir sınır var: Telegram uzun dışa aktarmaları 1.000 mesajlık dosyalara bölüyor, dolayısıyla zehirli bir dosya en fazla kendi dilimini ortaya çıkarıyor. Ancak sohbet dışa aktarımları anlaşmazlıklarda, soruşturmalarda ve uyum incelemelerinde kayıt olarak kullanılıyor; bir kanıt dosyasına yönelik sunum katmanı değiştirme vektörü kendi başına ciddi. Kurbanın kendi diskinde duran bir dosyadan şüphelenmek için bir nedeni yok.

Güncellemeler diskteki dosyaları düzeltmiyor

Rapora göre kod 3 Temmuz 2026'da beta 6.9.4'te ve 14 Temmuz 2026'da kararlı 7.0.1'de düzeltildi. Bu sürümlerden önce oluşturulan dışa aktarma dosyaları birinin diskinde düz metin olarak duruyor ve yamalanmış bir istemci onları yeniden yazmıyor. Eski bir dışa aktarma hâlâ zehirli olabilir.

Neden önemli

Hata gerçekte Telegram'la ilgili değil. Güvenilmeyen içerikten HTML üreten her uygulamada — dışa aktarma özellikleri, rapor üreticileri, HTML ara adımı içeren fatura hatları, diske yazılan test sonucu panoları — aynı yüzey var. Kaçış hataları nadiren bir ekibin kaçışın ne olduğunu bilmemesinden kaynaklanır; onUncategorized kaynaklandıkları yer, on alanın kaçış altına alındığı ve on birincinin hareketsiz bir etiket olduğu varsayılan bir şablondur. Bir HTML belgesine geçen her değerin, istisnasız aynı kapıdan geçmesi gerekir. Aynı verinin farklı ayrıştırma kurallarıyla birden çok tüketiciye ulaştığı mimariler ikinci bir bakışı hak ediyor. Ve üretilen yapıtlar yamalardan uzun ömürlü: üreticiyi düzeltmek, disklerde duran dosyalara hiçbir şey yapmaz.

  • #security
  • #xss
  • #telegram
  • #html-escaping
  • #vulnerability

İlgili yazılar