Eksploit 1-klik ditemukan di aplikasi chat mobile terbesar di Korea
(stulle123.github.io)- Di aplikasi KakaoTalk Android, kombinasi deep link, WebView, dan XSS dapat membuat token akses bocor hingga berujung pada pengambilalihan akun hanya dengan satu kali klik pada tautan berbahaya
- Titik masuk utamanya adalah WebView
CommerceBuyActivitydi KakaoTalk10.4.3, dan masalah muncul dari gabungan kurangnya validasi deep link, JavaScript yang diaktifkan, serta bocornya headerAuthorization - Rantai serangan memanfaatkan redirect
buy.kakao.comdan DOM XSS dim.shoppinghow.kakao.comuntuk menjalankan JavaScript arbitrer di dalam WebView - Token yang bocor dapat digunakan untuk mengakses Kakao Mail, mereset kata sandi, dan mendaftarkan klien KakaoTalk untuk PC/Mac atau KiwiTalk
- Kerentanan ini diberi kode CVE-2023-51219; setelah laporan masuk, Kakao Corp. menonaktifkan
buy.kakao.comdan menghapus redirect terkait sertaCommerceBuyActivityyang rentan
Cakupan dan prasyarat kerentanan
- KakaoTalk adalah aplikasi chat utama di Korea dengan lebih dari 100 juta unduhan di Google Play Store, dan bersifat aplikasi all-in-one yang mencakup pembayaran, pemesanan kendaraan, belanja, email, dan lainnya
- Ruang chat biasa tidak mengaktifkan enkripsi ujung-ke-ujung (E2EE) secara default, sehingga Kakao Corp. secara struktur dapat mengakses pesan saat transit
- Ada fitur E2EE opsional bernama Secure Chat, tetapi tidak mendukung pesan grup maupun panggilan suara
- Tujuan PoC adalah mendaftarkan KakaoTalk for Windows/macOS atau klien open-source KiwiTalk ke akun korban untuk membaca pesan chat yang tidak terenkripsi ujung-ke-ujung
Titik masuk: WebView CommerceBuyActivity
- WebView
CommerceBuyActivitymemiliki beberapa kondisi yang menguntungkan penyerang- Diekspos ke luar (
exported) dan dapat dijalankan lewat deep link sepertikakaotalk://buy - JavaScript diaktifkan melalui
settings.setJavaScriptEnabled(true) - Dari JavaScript, data juga bisa dikirim ke komponen aplikasi yang tidak diekspos ke luar melalui skema
intent:// - Pemrosesan URI juga kurang memadai karena
ComponentatauSelectorpada URIintent://tidak dibersihkan menjadinull
- Diekspos ke luar (
- WebView ini mengirim token akses di header
Authorizationpada permintaan HTTP - Debugging WebView aktif, sehingga perilakunya bisa diperiksa lewat
chrome://inspect; saat diarahkan ke alamat eksternal, headerAuthorizationikut terekspos bersama permintaan GET - Jika penyerang dapat menjalankan JavaScript di dalam WebView ini, token akses pengguna bisa dicuri hanya dengan klik pada deep link
kakaotalk://buyyang berbahaya
Bypass validasi URL dan rantai DOM XSS
CommerceBuyActivitytidak memuat URL penyerang secara langsung, melainkan menyusun deep link masukan menjadi URL yang diawalihttps://buy.kakao.com- Misalnya
kakaotalk://buy/fooakan memuathttps://buy.kakao.com/foo - Path, parameter query, dan fragment dapat dikendalikan penyerang
- Misalnya
- Endpoint
https://buy.kakao.com/auth/0/cleanFrontRedirect?returnUrl=dapat melakukan redirect ke domainkakao.commana pun, sehingga memperluas ruang serangan untuk mencari XSS di subdomainkakao.com - Di
m.shoppinghow.kakao.com, ditemukan endpoint yang meneruskan kueri pencarian ke sinkinnerHTML, sehingga DOM XSS dimungkinkan dengan payload sederhana - Disebutkan juga bahwa stored XSS yang pernah ada sebelumnya sempat ditemukan, tetapi per Mei 2024 tampaknya sudah diperbaiki
- Dengan kombinasi ini, ketika pengguna mengklik deep link berbahaya, JavaScript arbitrer dapat dijalankan di dalam WebView
CommerceBuyActivity, lalu token akses dari headerAuthorizationdapat dikirim ke luar
Akses ke Kakao Mail dan reset akun dengan token
- Token akses KakaoTalk yang bocor dapat digunakan untuk mengakses akun Kakao Mail milik korban
- Setelah memastikan korban menggunakan Kakao Mail, penyerang dapat memperoleh token terpisah dan mengakses
talk.mail.kakao.com - Bahkan jika korban belum memiliki akun Kakao Mail, akun baru bisa dibuat atas nama korban, dan saat membuat alamat email baru, memilih
Set As Primary Emaildapat menimpa alamat email terdaftar yang lama tanpa verifikasi tambahan - Setelah mendapat akses ke Kakao Mail, langkah berikutnya adalah reset kata sandi KakaoTalk
- Informasi tambahan yang dibutuhkan seperti alamat email, nama panggilan, dan nomor telepon korban bisa diperoleh dari panggilan API pengaturan akun yang sama
- Proses reset kata sandi di
accounts.kakao.commemiliki 2FA SMS, tetapi alur itu dapat diubah menjadi verifikasi email dengan mencegat dan memodifikasi request serta response menggunakan Burp - Kode verifikasi dapat dilihat di Kakao Mail milik korban
Pendaftaran klien PC dan akses pesan
- Saat login ke KakaoTalk for Windows/macOS atau KiwiTalk dengan kredensial korban, tetap dibutuhkan faktor autentikasi kedua
- Autentikasi ini menggunakan PIN 4 digit; PIN ditampilkan di versi PC untuk dimasukkan ke aplikasi mobile, atau sebaliknya dikirim ke aplikasi mobile untuk dimasukkan ke aplikasi PC
- PIN sulit di-bruteforce, dan endpoint terkait memiliki pembatasan laju berupa blokir setelah 5 kali percobaan
- Namun dengan token akses yang bocor, PIN dapat dikirimkan atau diambil dari backend KakaoTalk
- Melalui proses ini, perangkat yang dikendalikan penyerang dapat didaftarkan ke akun KakaoTalk korban, sehingga PoC untuk membaca pesan chat yang tidak terenkripsi ujung-ke-ujung pun selesai
Pengungkapan, perbaikan, dan materi riset
- Kerentanan ini diberi kode CVE-2023-51219
- Peneliti merilis alat agar peneliti keamanan lain dapat menganalisis luasnya permukaan serangan KakaoTalk
- Kerentanan ini dilaporkan pada Desember 2023 melalui Kakao Bug Bounty Program
- Pelapor menyatakan tidak menerima imbalan karena program tersebut membatasi penerima hadiah hanya untuk warga Korea
- Kakao Corp. segera menonaktifkan
https://buy.kakao.com, menghapus redirect/auth/0/cleanFrontRedirect?returnUrl=, dan pada versi berikutnya juga menghapusCommerceBuyActivityyang rentan
1 komentar
Opini Hacker News
Apalagi kalau kerentanannya membuat domain tampak sah, nenek-nenek akan sulit menyadari tautan mencurigakan, dan menurut saya budaya kerja Korea yang hierarkis juga ikut berperan
Atasan menetapkan tenggat fitur yang tidak bisa dinegosiasikan, kerentanan keamanan tidak terlihat sementara UI terlihat, jadi akhirnya dipangkas seadanya lalu dirilis
Ujung-ujungnya jadi aplikasi penuh celah keamanan, dan sepertinya tidak akan benar-benar diperbaiki sampai harga saham Kakao turun
Untuk sisi keamanan, menurut saya ini bukan karena budaya kerja Korea, karena perusahaan IT besar yang sering dikelompokkan sebagai Neka-Raku-Bae—Naver, Kakao, LINE, Coupang, Woowa Bros—cenderung punya budaya kerja dan kompensasi yang jauh di atas rata-rata
Kemungkinan lebih karena ini aplikasi untuk pasar domestik sehingga tidak mendapat pemeriksaan sebanyak aplikasi yang populer secara global. Namun berdasarkan pengalaman saya, kompensasinya lebih rendah dibanding AS atau sebagian startup Korea
Perbedaannya tampaknya di Korea sektor pemerintah dan chaebol mengambil porsi besar pasar IT, sehingga tidak banyak ruang bagi budaya startup untuk membuat perbedaan
Kakao juga dulu pernah menjadi startup yang keren, tetapi setelah sukses rasanya mereka berusaha meniru chaebol
Budaya mungkin membuatnya lebih parah di Korea, tetapi ini jelas juga terjadi di dunia Barat dan pada dasarnya merupakan masalah yang nyaris universal
Cukup bekerja beberapa tahun di perusahaan kantoran Amerika yang cukup besar, terutama teknologi, keuangan, konsultansi, atau FAANG, dan Anda akan tahu dunia Barat juga sama saja
Engineer tingkat menengah mengiyakan VP demi masuk siklus promosi berikutnya, dan perusahaan hanya pandai memasarkan “organisasi datar”, padahal kenyataannya itu lebih mirip slogan PR
Saat PM atau SVP memberi instruksi, sering kali tidak ada yang bertanya langsung, hanya menggerutu lalu mengerjakannya; yang lebih pahit adalah sikap yang begitu saja percaya pada pemasaran budaya perusahaan seperti ini berujung pada rasa superioritas yang dangkal
Dalam perjalanan terbaru ke Seoul, saya harus membuat akun aplikasi chat mobile itu untuk login ke aplikasi tersebut, pengalaman penggunanya juga tidak bagus, dan karena sebagian besar berbahasa Korea, saya cukup kesulitan
Saya tidak mendapat kesan bahwa operasinya sangat profesional
KakaoTalk dan Naver hampir menjalankan peran seperti WhatsApp/Meta dan Google di dunia Barat
Menurut saya hebat bahwa mereka tetap bertahan meski persaingan dengan perusahaan multinasional makin besar. Di banyak negara lain, perusahaan teknologi lokal nyaris menjadi tidak berarti dalam 10 tahun terakhir, dan itu disayangkan
Jadi menangkap taksi di jalan pun sulit, dan kebanyakan tampaknya hanya mengambil penumpang panggilan aplikasi
Sekali waktu saya akhirnya berhasil menghubungi sopir taksi, tetapi ia menolak mengangkut saya karena saya “orang asing”; saya tidak tahu apakah itu benar-benar kebencian, tidak suka pembayaran tunai, karena tidak bisa berbahasa Korea, atau salah paham
Perjalanan taksi yang akhirnya berhasil pun mengambil rute menyeberangi gunung ke sisi lain kota, sehingga saya harus menelepon orang yang saat itu saya kencani agar menjelaskan kepada sopir bahwa jalannya salah. Saya melihat ini sebagai risiko pergi ke negara asing tanpa persiapan yang cukup
Saat saya berkunjung pada awal 2015, Google adalah salah satu contohnya
Memang Anda berharap aplikasi Korea memakai bahasa apa, bahasa Prancis?
Namun setahu saya itu lebih mirip proxy KakaoTaxi yang memakai antarmuka Uber daripada Uber sungguhan
Aplikasi chat utamanya memang punya fitur tambahan seperti pemberian hadiah yang memungkinkan kerentanan ini, tetapi pemanggilan taksi dilakukan bukan di KakaoTalk, melainkan di aplikasi mobilitas Kakao T, yang juga menyediakan skuter sewaan, sepeda listrik, serta pemesanan kereta dan penerbangan
Ada integrasi dengan platform pembayaran KakaoPay, tetapi layanannya sendiri ada di aplikasi terpisah, lebih mirip Google di Android yang memakai ID pusat untuk mengakses berbagai layanan
Jadi saya pikir alasan aplikasi ini punya banyak titik akses juga karena integrasi layanan mereka sendiri
Seperti WeChat, KakaoPay cukup terintegrasi ke KakaoTalk, sehingga mayoritas pengguna memakai KakaoPay hanya di dalam KakaoTalk, bukan lewat aplikasi KakaoPay
Fakta bahwa ada aplikasi KakaoPay terpisah tidak banyak berpengaruh, dan tanpa aplikasi KakaoPay pun Anda bisa mengirim, menerima uang, dan membayar dari KakaoTalk
Ternyata klien itu penuh bug yang menampilkan pesan kepada pengguna yang salah
Aplikasi chat mobile tidak boleh dikembangkan dengan gaya “bergerak cepat dan merusak banyak hal”, dan menurut saya inilah hasil alami dari aplikasi all-in-one seperti Kakao
Kalau bukan itu, kelihatannya lebih dekat ke bug server daripada bug klien
Selain itu, Telegram termasuk aplikasi chat paling stabil, kaya fitur, dan mudah dipakai yang pernah saya gunakan
Tertulis harus “orang Korea yang tinggal di dalam atau luar negeri”
https://bugbounty.kakao.com/home
Akan lebih buruk jika seseorang mengirim laporan dengan harapan bisa dibayar lalu baru kemudian mengetahui bahwa itu dibatasi untuk warga negara Korea
Sebagai tambahan, hadiahnya juga sangat rendah: mulai minimal 50.000 won, sekitar 35 dolar, sampai maksimal 10 juta won, sekitar 7.100 dolar
Sebagai orang asing yang membangun startup di Seoul selama 9 tahun terakhir, saya sudah beberapa kali mengalami hal serupa
Perlu dipertanyakan apakah ini untuk permainan jangka panjang, atau untuk keuntungan jangka pendek yang dinikmati segelintir orang
Apakah ada yang diketahui soal eksploitasi di lingkungan nyata?