deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Telegram Desktop'ta tek tıkla hesap ele geçirme, IPC'deki kaçırılmamış bir noktalı virgülden kaynaklandı

BeakSec'in açıkladığı açığa göre, hazırlanmış bir sohbet bağlantısı saldırganların Telegram Desktop kullanıcılarının yerel dosyalarını okuyup oturumlarını ele geçirmesini sağlıyordu; 7.2.9 sürümünde düzeltildi.

Telegram Desktop'ta tek tıkla hesap ele geçirme, IPC'deki kaçırılmamış bir noktalı virgülden kaynaklandı

Ne oldu

BeakSec güvenlik araştırmacılarının teknik incelemesi, Telegram Desktop'taki iki aşamalı bir açığı anlatıyor; bu açık, tek bir sohbet bağlantısına tıklamayı tam bir hesap ele geçirmeye dönüştürüyordu. CVE-2026-107181 olarak kayıt altına alınan ve 8.1 Yüksek (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N) olarak derecelendirilen bu zincir, uzaktan bir saldırganın kurbanın makinesindeki istediği dosyaları okuyup bunları saldırganın kontrolündeki bir sohbete ulaştırabilmesini sağlıyordu. Yazıya göre 7.2.9'a kadar olan sürümler etkileniyordu ve hata Windows'ta doğrulandı; düzeltme db3405699f commit'i ile 7.2.9 sürümünde yayınlandı.

BeakSec'in çizdiği senaryo yalın: kurban bir Telegram grubuna eklenir, sohbette bir bağlantı belirir ve ona tıklamak hesabı başka birine teslim eder; Telegram'ın varsayılan indirme davranışı da işin bir kısmını sessizce halleder.

Enjeksiyon

Telegram Desktop, işletim sistemine tg:// URI şemasını kaydeder. Bir tg:// bağlantısına tıklandığında ve uygulama henüz çalışmıyorsa, yeni süreç URL'yi içeriden işler. Ancak bir örnek zaten çalışıyorsa, işletim sistemi yine de ikinci bir süreç başlatır; bu süreç mevcut örneği yerel bir socket üzerinden tespit eder, bağlantıyı ona devreder ve kapanır.

Socket nesne değil bayt taşır; bu yüzden bağlantı metne serileştirilir: her talimat bir anahtar kelime, bir argüman ve sonlandırıcı bir noktalı virgülden oluşur, tıpkı OPEN:url; örneğindeki gibi. Uzun süre çalışan örnek gelen akışı her noktalı virgülden böler ve her parçayı başlı başına bir komut olarak ele alır.

Ayraç hiçbir zaman escape'lenmez. Sorgu kısmında noktalı virgül içeren bir URL, istemci süreci açısından tek bir bağlantıdır; ama sunucu tarafındaki bölme işlemi onu birkaç komuta dönüştürür — ders kitabındaki bir enjeksiyon vakası. Kendi başına enjekte edilen komut seti zararsız görünür (yalnızca show ve quit'i kabul eder), ancak OPEN: talimatı ardından gelen her şeyi şemada hiçbir kısıtlama olmayan bir URL olarak yeniden oluşturur ve giriş kapısı tam olarak budur.

Korumasız bir iç şema

Araştırmacı kodu incelerken, işletim sistemine hiç kaydedilmeyen ikinci bir URI şeması daha buldu: interpret:. Bu şema yalnızca Telegram'ın kendi kodunda var ve yayınları duyurmak için tasarlanmıştı: bir script, hedef kanalı, eklenecek dosyayı ve bir açıklamayı içeren küçük bir talimat dosyası yazıyor, ardından Telegram'ı bu dosyaya yönelik şekilde başlatıyordu.

Arkasındaki fonksiyon olan InterpretSendPath, belirtilen dosyayı diskten okur ve hiçbir onay istemeden, eylemi kimin istediğini denetlemeden bir sohbete gönderir. Operatörün yanlış hesaptan yayın yapmasını engellemek için tasarlanmış isteğe bağlı from: satırı yalnızca mevcut olduğunda doğrulanır; bu yüzden atlamak kontrolü tamamen atlatır. channel: ile belirlenen hedefin bir kanal veya süper grup olması gerekir — ki bunu saldırgan da sağlayabilir.

Güvenilir bir operatör tarafından yerel komut satırından çağrıldığında bunda sıra dışı bir şey yoktu. Ancak socket enjeksiyonu üzerinden OPEN:interpret:... yoluyla erişilebilir hale gelince, ayrıcalıklı dosya gönderme primi tek bir bağlantı tıklamasıyla tetiklenebilir hale geldi.

Payload'u diske yerleştirmek

Saldırganın, kurbanın makinesinde öngörülebilir bir yolda bir talimat dosyasına hâlâ ihtiyacı var. BeakSec, Telegram Desktop'ın varsayılan yapılandırmasında grup sohbetlerinde alınan 8 MiB'a kadar dosyaları, gönderenin seçtiği dosya adını koruyarak standart bir klasöre otomatik indirdiğini belirtiyor (yayın kanallarında otomatik indirme kapalıdır). Bu nedenle talimat dosyasını grup eki olarak göndermek, onu kurbanın hiçbir eylemi olmadan diske yerleştirir.

Hazırlanmış bağlantı daha sonra bu indirilen dosyaya karşı interpret: açan bir talimat enjekte eder; dosya file: ile çalınmaya değer herhangi bir şeye, channel: ile saldırganın hedefine işaret eder. Sonuç, saldırganın kontrolündeki bir sohbete sızdırılan serbest yerel dosya okumasıdır. Kurbanın oturumunu oluşturan dosyalara yönlendirildiğinde ise hesap ele geçirmeye dönüşür.

Neden önemli

  • Kök kusur eski bir kusur: güven sınırını geçen, kaçırılmamış bir ayraç içeren serileştirilmiş veri. Yapılandırılmış komutları yerel bir socket, pipe veya komut satırı üzerinden aktaran her uygulamanın yalnızca bölmeye değil, escape'lemeye de ihtiyacı var.

  • İkinci kusur daha öğretici bir ders. Orijinal bağlamında güvenli olan bir işlev — operatör makinesindeki bir yayın script'i — başka bir hata onu uzaktan erişilebilir kıldığı anda tehlikeli oldu. Yetkilendirme kontrolleri, bir özelliğin nasıl çağrıldığına bağlı olmamalı.

  • Yalnızca dahili URI şemaları, işletim sistemi onları hiç görmese bile yine de bir saldırı yüzeyidir; izin verici URL işleme (şema beyaz listesinin olmaması) iki kusuru birbirine bağlayan şeydi.

  • Grup sohbetlerindeki varsayılan otomatik indirme, kurbanın başka türlü atması gereken adımları ortadan kaldırarak eşiği somut biçimde düşürdü.

  • Pratikte öneri basit: Telegram Desktop'ı 7.2.9 veya sonraki bir sürüme güncelleyin.

  • #telegram
  • #security
  • #vulnerability
  • #desktop
  • #ipc

İlgili yazılar