4 puan yazan GN⁺ 2024-06-27 | 1 yorum | WhatsApp'ta paylaş
  • KakaoTalk Android uygulamasında derin bağlantı, WebView ve XSS'in birleşimi, kullanıcının kötü amaçlı bir bağlantıya yalnızca bir kez tıklamasıyla erişim belirtecinin sızdırılmasına ve hesap ele geçirmeye kadar gidebiliyordu
  • Temel giriş noktası, KakaoTalk 10.4.3 içindeki CommerceBuyActivity WebView'uydu; yetersiz derin bağlantı doğrulaması, etkin JavaScript ve Authorization başlığının açığa çıkması birlikte sorunu oluşturuyordu
  • Saldırı zinciri, buy.kakao.com yönlendirmesi ve m.shoppinghow.kakao.com üzerindeki DOM XSS kullanılarak WebView içinde rastgele JavaScript çalıştırma yöntemine dayanıyordu
  • Sızdırılan belirteç, Kakao Mail erişimi, parola sıfırlama ve Windows/Mac için KakaoTalk veya KiwiTalk istemcisini kaydetmek için kullanılabiliyordu
  • Zafiyet CVE-2023-51219 olarak tanımlandı ve bildirimden sonra Kakao Corp. buy.kakao.com alanını kapattı, ilgili yönlendirmeleri ve zafiyetli CommerceBuyActivity'yi kaldırdı

Zafiyetin kapsamı ve varsayımları

  • KakaoTalk, Google Play Store'da 100 milyondan fazla indirilen, ödeme, araç çağırma, alışveriş ve e-posta gibi işlevleri içeren Kore'nin önde gelen sohbet uygulaması ve bir tür hepsi bir arada uygulama niteliği taşıyor
  • Normal sohbet odalarında uçtan uca şifreleme (E2EE) varsayılan olarak açık değil; bu nedenle Kakao Corp. iletim halindeki mesajlara erişebilecek bir yapıya sahip
  • İsteğe bağlı E2EE özelliği olan Secure Chat mevcut, ancak grup mesajlaşmasını veya sesli aramaları desteklemiyor
  • PoC'nin amacı, kurban hesabına Windows/macOS için KakaoTalk veya açık kaynak istemci KiwiTalk kaydederek uçtan uca şifrelenmeyen sohbet mesajlarını okumaktı

Giriş noktası: CommerceBuyActivity WebView

  • CommerceBuyActivity WebView, saldırgan için avantajlı birden çok koşula sahipti
    • Dışarıya açık (exported) durumdaydı ve kakaotalk://buy gibi derin bağlantılarla başlatılabiliyordu
    • settings.setJavaScriptEnabled(true) ile JavaScript etkindi
    • JavaScript, intent:// şeması üzerinden dışarıya açık olmayan uygulama bileşenlerine bile veri gönderebiliyordu
    • intent:// URI'lerindeki Component veya Selector alanlarının null yapılmaması nedeniyle URI işleme de yetersizdi
  • Bu WebView, HTTP isteklerinin Authorization başlığında erişim belirtecini taşıyordu
  • WebView hata ayıklaması açıktı; chrome://inspect ile davranış gözlemlenebiliyordu ve harici bir adrese yönlendirildiğinde GET isteğiyle birlikte Authorization başlığı açığa çıkıyordu
  • Saldırgan bu WebView içinde JavaScript çalıştırabilirse, kötü amaçlı bir kakaotalk://buy derin bağlantısına tıklanmasıyla kullanıcının erişim belirtecini çalabiliyordu

URL doğrulamasını atlatma ve DOM XSS zinciri

  • CommerceBuyActivity, saldırgana ait rastgele bir URL'yi doğrudan yüklemiyor, girilen derin bağlantıyı https://buy.kakao.com ile başlayan bir URL olarak birleştiriyordu
    • Örneğin kakaotalk://buy/foo, https://buy.kakao.com/foo olarak yükleniyordu
    • Yol, sorgu parametreleri ve fragment saldırgan tarafından kontrol edilebiliyordu
  • https://buy.kakao.com/auth/0/cleanFrontRedirect?returnUrl= uç noktası, rastgele bir kakao.com alan adına yönlendirme yapabildiği için kakao.com alt alanlarında XSS arama kapsamını genişletiyordu
  • m.shoppinghow.kakao.com üzerinde, arama sorgusunu innerHTML sink'ine aktaran bir uç nokta bulundu ve basit bir payload ile DOM XSS mümkün oldu
  • Daha önce var olan bir stored XSS de bulundu, ancak 2024 Mayıs itibarıyla düzeltilmiş göründüğü belirtildi
  • Bu kombinasyon sayesinde kullanıcı kötü amaçlı derin bağlantıya tıkladığında CommerceBuyActivity WebView içinde rastgele JavaScript çalışıyor ve Authorization başlığındaki erişim belirteci dışarıya gönderilebiliyordu

Belirteç ile Kakao Mail ve hesap sıfırlamasına erişim

  • Sızdırılan KakaoTalk erişim belirteci, kurbanın Kakao Mail hesabına erişmek için kullanılabiliyordu
  • Kurbanın Kakao Mail kullanıp kullanmadığı doğrulandıktan sonra ayrı bir belirteç alınarak talk.mail.kakao.com erişim akışı mümkün oluyordu
  • Kurbanın Kakao Mail hesabı olmasa bile onun adına yeni bir hesap oluşturulabiliyor, yeni e-posta adresi oluşturulurken Set As Primary Email seçilirse mevcut kayıtlı e-posta adresi ek doğrulama olmadan üzerine yazılabiliyordu
  • Kakao Mail erişiminden sonra bir sonraki adım KakaoTalk parola sıfırlamasıydı
    • Gerekli ek bilgiler olan kurbanın e-posta adresi, takma adı ve telefon numarası aynı hesap ayarları API çağrısından elde edilebiliyordu
    • accounts.kakao.com üzerindeki parola sıfırlama sürecinde SMS 2FA vardı, ancak Burp ile istek ve yanıtlar yakalanıp değiştirilerek e-posta doğrulama akışına çevrilebiliyordu
    • Doğrulama kodu kurbanın Kakao Mail hesabından görülebiliyordu

PC istemcisi kaydı ve mesaj erişimi

  • Kurbanın kimlik bilgileriyle Windows/macOS için KakaoTalk veya KiwiTalk'a giriş yapıldığında ikinci bir doğrulama faktörü gerekiyordu
  • Bu doğrulama 4 haneli PIN yöntemiyle yapılıyordu; PIN ya PC sürümünde gösterilip mobil uygulamaya giriliyor ya da tersine mobil uygulamaya gönderilip PC uygulamasına giriliyordu
  • PIN'i brute force ile denemek zordu ve ilgili uç noktada 5 denemeden sonra engelleme şeklinde oran sınırlaması vardı
  • Ancak sızdırılan erişim belirteci ile KakaoTalk arka ucuna PIN gönderilebiliyor veya PIN sorgulanabiliyordu
  • Bu süreç sayesinde saldırganın kontrolündeki cihaz kurbanın KakaoTalk hesabına kaydediliyor ve uçtan uca şifrelenmemiş sohbet mesajlarını okuyan PoC tamamlanıyordu

Açıklama, düzeltme ve araştırma kaynakları

  • Zafiyet CVE-2023-51219 olarak tanımlandı
  • Araştırmacı, diğer güvenlik araştırmacılarının KakaoTalk'un geniş saldırı yüzeyini analiz edebilmesi için araçlar yayımladı
  • Zafiyet, 2023 Aralık ayında Kakao Bug Bounty Program aracılığıyla bildirildi
  • Bildirimi yapan kişi, ödül kapsamının Kore vatandaşlarıyla sınırlı olması nedeniyle ödül alamadığını belirtti
  • Kakao Corp. hemen https://buy.kakao.com alanını kapattı, /auth/0/cleanFrontRedirect?returnUrl= yönlendirmesini kaldırdı ve sonraki sürümlerde zafiyetli CommerceBuyActivity'yi de çıkardı

1 yorum

 
GN⁺ 2024-06-27
Hacker News yorumları
  • Kore’de yaşıyorsanız Kakao kullanmadan idare etmek zor; büyükannelerin kuşağına kadar herkesin kullandığı bir uygulamada bu kadar çok güvenlik açığı olması endişe verici
    Özellikle alan adının meşru gibi göründüğü bir zafiyetse, büyükannenizin şüpheli bir bağlantıyı fark etmesi zor olur; Kore’deki hiyerarşik iş kültürünün de bunda payı olduğunu düşünüyorum
    Yönetici özellik teslim tarihini pazarlığa kapalı şekilde dayatıyor; güvenlik açıkları görünmüyor ama UI görünüyor, bu yüzden bir yerlerden kırpıp yayınlıyorlar
    Sonuçta güvenlik deliği bol bir uygulama ortaya çıkıyor ve Kakao hissesi düşene kadar bunu düzgünce düzelteceklerini sanmıyorum
    • Koreliyim ama KakaoTalk da LINE da Facebook da kullanmıyorum. Biraz sıra dışı bir durum oluyor ama birçok hizmet SMS alternatifi sunduğu için onsuz yaşanabiliyor
      Güvenlik tarafında bunun Kore’nin iş kültüründen ziyade, Naver, Kakao, LINE, Coupang, Woowa Bros gibi “Nekarakubae” diye birlikte anılan büyük BT şirketlerinin ortalamanın çok üzerinde iş kültürü ve ücretlendirmeye sahip olmasından kaynaklandığını düşünüyorum
      Muhtemelen yerel pazara yönelik bir uygulama olduğu için, dünya çapında popüler uygulamalar kadar yeterince sınanmamış olmasına daha yakın. Yine de deneyimime göre ücretler ABD’ye veya bazı Koreli girişimlere kıyasla daha düşüktü
    • İmkânsız teslim tarihleri ve hiyerarşik iş kültürü yalnızca Kore’ye özgü değil, tüm dünyada var
      Fark, Kore’de kamu sektörü ve chaebol’lerin BT pazarının büyük bölümünü oluşturması; bu yüzden girişim kültürünün fark yaratabileceği çok az alan kalıyor gibi görünüyor
      Kakao da bir zamanlar havalı bir girişimdi ama başarılı olduktan sonra chaebol’leri taklit etmeye uğraşmış gibi geliyor
    • Yöneticinin ya da müşterinin UI’yi görebilip güvenlik sorunlarını görememesi yalnızca Kore’ye özgü bir durum değil
      Kültür nedeniyle Kore’de daha kötü olabilir ama Batı’da da kesinlikle yaşanıyor; hatta neredeyse evrensel bir sorun
    • Bu konunun Kore haberlerine ya da düzenleyici kurumların radarına girip girmeyeceğini merak ediyorum. Hisse fiyatı dışında da hesap sorulabilecek yollar olabilir
    • Hiyerarşik iş kültürü, Amerikalıların Doğu Asya’da hoşlarına gitmeyen şeyleri açıklarken başvurduğu evrensel bir bahane gibi kullanılıyor
      ABD’de belli büyüklükte herhangi bir beyaz yakalı şirkette, özellikle teknoloji, finans, danışmanlık veya FAANG’de birkaç yıl çalışsanız Batı’nın da aynı olduğunu anlarsınız
      Orta seviye mühendisler bir sonraki terfi döngüsüne girmek için VP’nin suyuna gidiyor; şirketler “yatay organizasyon” pazarlamasını iyi yapıyor ama gerçekte bu daha çok PR metni
      Bir PM ya da SVP talimat verdiğinde çoğu zaman kimse doğrudan sorgulamıyor, homurdanıp işi yapıyor; bu tür şirket kültürü pazarlamasına olduğu gibi inanmanın sığ bir üstünlük hissine dönüşmesi daha da üzücü
  • İlginç olan, Batı’daki araç paylaşım uygulamalarının Kore’de pek tutmaması ve bu şirketin Kore’nin önde gelen taksi çağırma uygulamasını da yapıyor olması
    Yakın zamanda Seul’e yaptığım seyahatte o uygulamaya giriş yapmak için mobil sohbet uygulaması hesabı açmam gerekti; kullanıcı deneyimi de iyi değildi ve çoğu Korece olduğu için epey zorlandım
    Çok profesyonel işletildiği izlenimini almadım
    • Birkaç yıl önce Kore’de yaşarken uygulama ve hizmet ekosisteminin ayrı şekilde oluşmuş olması ilgimi çekmişti
      KakaoTalk ve Naver, Batı’daki WhatsApp/Meta ve Google’ın rolünü neredeyse üstlenmişti
      Çok uluslu şirketlerle rekabet artmasına rağmen ayakta kalmaları bence etkileyici. Başka birçok ülkede yerel teknoloji şirketleri son 10 yılda neredeyse anlamsızlaştı ve bu üzücü
    • Yaklaşık 5 yıl önce gittiğimde Kore banka hesabım olmadığı için taksi uygulamalarını hiç kullanamıyordum
      Bu yüzden yoldan taksi çevirmek de zordu; çoğu yalnızca uygulama üzerinden çağıran müşterileri alıyor gibiydi
      Bir keresinde zar zor bir taksi şoförüyle iletişim kurdum ama “yabancı” olduğum için beni almayacağını söyledi; bunun gerçekten yabancı düşmanlığı mı, nakit ödemeden hoşlanmaması mı, Korece anlaşamamamız mı yoksa bir yanlış anlama mı olduğunu bilmiyorum
      Sonradan binebildiğim takside de rota şehrin öbür tarafına, dağın üzerinden gidiyordu; çıktığım kişiyi arayıp şoföre yolun yanlış olduğunu anlatmasını istemem gerekti. Hazırlıksız şekilde yabancı bir ülkeye gitmenin risklerinden biri olduğunu düşünüyorum
    • Kore’de beni şaşırtan şey, dünya çapında kullanıldığını sandığım teknoloji ürünlerinin yerel alternatiflerinin çok fazla olması ve küresel/ABD sürümlerinin pazara neredeyse hiç nüfuz etmemiş olmasıydı
      2015’in başında ziyaret ettiğimde Google buna örnekti
    • Kore uygulamasının “çoğunlukla” Korece olduğu gibi sağduyulu bir gerçeğin kullanıcı deneyimi ya da profesyonellik eksikliğiyle ne ilgisi var, anlamıyorum
      Bir Kore uygulamasının hangi dilde olmasını bekliyordunuz, Fransızca mı?
    • Başkalarının da söylediği gibi Uber Kore’de, en azından Seul’de çalışıyor
      Ancak bildiğim kadarıyla gerçek Uber’den çok, Uber arayüzünü kullanan bir KakaoTaxi proxy’si gibi
  • Küçük bir düzeltme gerekiyor. KakaoTalk, WeChat gibi “hepsi bir arada” bir uygulama değil
    Ana sohbet uygulamasında hediye gönderme gibi bu zafiyeti mümkün kılan ek özellikler var ama taksi çağırma KakaoTalk’ta değil; kiralık scooter, elektrikli bisiklet, tren ve uçak rezervasyonu da sunan mobilite uygulaması Kakao T üzerinden yapılıyor
    Ödeme platformu KakaoPay ile entegrasyon var ama hizmetin kendisi ayrı bir uygulamada; merkezi bir ID ile birden fazla hizmete erişilen Android’deki Google’a daha yakın
    Bu yüzden uygulamada çok sayıda erişim noktası olmasının nedeni de muhtemelen kendi hizmetleriyle entegrasyon
    • Bu doğru değil
      WeChat’te olduğu gibi KakaoPay, KakaoTalk’a yeterince entegre; kullanıcıların büyük çoğunluğu KakaoPay’i KakaoPay uygulamasında değil, yalnızca KakaoTalk içinde kullanıyor
      Ayrı bir KakaoPay uygulaması olması pek bir şeyi değiştirmiyor; KakaoPay uygulaması olmadan da KakaoTalk’ta para gönderebilir, alabilir ve ödeme yapabilirsiniz
  • Ödülün yalnızca Koreliler için geçerli olması... Bu noktada hacker’ların saldırısına uğramayı hak ediyorlar diye düşünmeden edemiyorum
    • Koreliler için bile en yüksek ödülün yaklaşık 7.000 dolar olması, birden çok güvenlik sorunu var gibi görünen bir uygulama için saçma derecede düşük
    • Bu, insanları bug satmaya teşvik eden bir yapı
  • Telegram kurucusunun mobil istemciyi tek bir geliştiricinin yaptığını söyleyerek ekibin yeteneğiyle övündüğünü hatırlıyorum
    Meğer o istemci, mesajları yanlış kullanıcıya gösteren bug’larla doluymuş
    Mobil sohbet uygulamaları “hızlı hareket et ve bir şeyleri boz” anlayışıyla geliştirilmemeli; Kakao gibi hepsi bir arada uygulamaların doğal sonucu da bence bu
    • Mobil uygulamaya birden fazla kullanıcı hesabı eklenmiş de bir hesabın mesajlarını diğer hesabın tarafında mı göstermiş, merak ediyorum
      Öyle değilse bu, istemci bug’ından çok sunucu bug’ına daha yakın görünüyor
    • Sohbet uygulamaları zordur; rakip uygulamalarda da benzer bug’lar çok olduğu için tek başına bunun kalitenin kötü olduğuna kanıt olduğunu sanmıyorum
      Ayrıca Telegram şimdiye kadar kullandığım sohbet uygulamaları arasında en kararlı, en özellikli ve kullanımı en kolay olanlardan biriydi
    • Telegram’ı savunmak gerekirse benzer şeyler Facebook, Google, Apple gibi büyük hizmetlerde de sıkça yaşandı
    • Komite usulü tasarımla yapılan yazılımlarda da korkunç bug’lar olabilir
    • Kakao kesinlikle hızlı hareket etmiyor
  • Kakao’nun Bug Bounty Programı üzerinden Aralık 2023’te zafiyeti bildirmiş ama ödül yalnızca Koreliler alabileceği için hiçbir şey alamamış olması şoke edici
    • En azından bug bounty sitesinde kısıtlama açıkça belirtilmiş
      “Yurt içinde veya yurt dışında yaşayan Koreli” olmak gerektiği yazıyor
      https://bugbounty.kakao.com/home
      Para alabileceğini bekleyerek gönderip sonradan bunun Kore vatandaşlarıyla sınırlı olduğunu öğrenseydi daha kötü olurdu
      Ayrıca ödüller de çok düşük: en az 50.000 won, yaklaşık 35 dolardan başlayıp en fazla 10 milyon won, yaklaşık 7.100 dolar seviyesinde
    • Kore’de bu tür şeyler oldukça yaygın
      Bir yabancı olarak son 9 yıldır Seul’de girişim kurarken benzer şeyleri defalarca yaşadım
  • Günümüzün yazılım mühendisliği yöntemlerini bir adım geri çekilip yeniden düşünmemiz gerekiyor
    Uzun vadeli bir oyun için mi, yoksa az sayıda kişiye giden kısa vadeli kârlar için mi olduklarını sorgulamalıyız
  • Kore’de konuşlu ABD ordusu mensuplarının bu zafiyetten ne kadar etkilendiğini merak ediyorum
    Gerçek ortamda istismar edildiğine dair bilinen bir şey var mı?
  • Hizmet 10 yıldan uzun süredir var ama hâlâ web sürümü yok; yine de bu habere bakınca bu belki de iyi bir şey olabilir
    • Yine de web sürümü olmasını isterdim. Çünkü Kakao uygulamasını Linux’ta wine ile kararlı şekilde çalıştırmak zor