20 poin oleh kuroneko 2023-10-27 | 3 komentar | Bagikan ke WhatsApp
  • Salt Labs menemukan bahwa melalui kelemahan dalam implementasi OAuth, pengambilalihan akun dimungkinkan pada layanan raksasa yang digunakan ratusan juta orang seperti Booking.com, Grammarly, Vidio, Bukalapak, serta framework mobile Expo.
  • OAuth pada dasarnya adalah protokol yang aman, tetapi ini menunjukkan bahwa cara implementasinya dapat menimbulkan kerentanan yang fatal.
  • Booking.com
    • Dalam implementasi Facebook OAuth, ada masalah yang memungkinkan redirect_uri diubah ke path lain pada host yang sama.
    • Di dalam booking.com terdapat endpoint yang akan melakukan redirect ke alamat yang diberikan jika disuplai alamat dalam bentuk base64.
    • Dengan menggabungkan keduanya, token OAuth dapat dimanipulasi agar diarahkan ke alamat lain.
    • Pada versi web, tidak ada kerentanan karena redirect_uri divalidasi saat memproses login, tetapi pada versi mobile terdapat masalah yang memungkinkan redirect_uri juga dimanipulasi sehingga pengambilalihan akun menjadi mungkin.
    • Artinya, ini adalah kerentanan di mana pengguna cukup mengklik tautan yang tampak sangat sah dan menjalankan alur OAuth secara normal, lalu akunnya bisa diambil alih.
  • Expo
    • Kerentanan yang ditemukan pada implementasi OAuth bawaan Expo, framework mobile.
    • Dalam implementasi tersebut, returnUrl seharusnya berisi tautan khusus aplikasi Expo seperti exp://~~, tetapi ada masalah yang memungkinkan alamat web seperti hTTps://~~ dimasukkan.
      • Input https:// memang diblokir, tetapi dapat dilewati hanya dengan mengubah huruf besar-kecil.
    • Akibatnya, informasi returnUrl disimpan dalam cookie bernama RU, dan setelah OAuth selesai, server OAuth Expo membaca cookie tersebut lalu melakukan redirect.
    • Namun, sebelum berpindah dari Expo ke Facebook, muncul pesan peringatan bertuliskan ...mempercayai https://~~ ... dan pengguna harus menyetujuinya.
    • Untuk melewati ini, digunakan metode membuka 2 tautan secara otomatis.
      • Tautan pertama dibuka lalu segera ditutup agar hanya cookie RU yang tersetel.
      • Tautan kedua langsung memberikan tautan Facebook OAuth sehingga pesan peringatan RU diabaikan.
    • Dengan metode ini, mereka berhasil mengambil alih akun di Codecademy.com.
    • Kerentanan ini diberi CVE-2023-28131, dan tim Expo memperbaiki masalah ini hanya dalam beberapa jam setelah laporan awal.
  • Grammarly, Vidio, Bukalapak
    • Ketiga situs tersebut semuanya dapat diambil alih akunnya dengan cara yang sama.
    • Pertama, dibuat situs web sah untuk mengumpulkan token login Facebook.
    • Setelah itu, pada Vidio dan Bukalapak, jika diberikan token dari Facebook (yang dibuat untuk situs web lain), login tetap berhasil.
      • Ini adalah kerentanan yang terjadi karena App ID dari token Facebook tidak diperiksa. (serangan reuse token)
    • Grammarly sedikit berbeda karena menggunakan code, bukan token, sehingga tidak memiliki kerentanan di atas.
    • Namun, ditemukan bahwa jika token dikirim ke API pengiriman code dengan nama "access_token" alih-alih "code", login tetap berhasil.
    • Karena itu, pada ketiga situs tersebut, jika pengguna melakukan integrasi Facebook di situs sah lain, akunnya dapat langsung diambil alih.
  • Saat mengimplementasikan OAuth, perlu memeriksa bagian-bagian yang dapat menimbulkan kerentanan keamanan dan melakukan validasi yang teliti di seluruh proses untuk mencegah kerentanan.

3 komentar

 
ironlung 2023-10-28

Ini cukup bikin waspada. Benar-benar harus hati-hati.

 
[Komentar ini disembunyikan.]
 
kuroneko 2023-10-27

Ternyata cukup banyak situs besar yang memiliki kerentanan seperti ini.
Ini jelas terasa seperti fitur yang harus ditangani dengan sangat hati-hati.

Saya juga sempat berpikir, mungkin sebaiknya memakai library autentikasi...,
tetapi melihat kasus Expo, rasanya itu pun tetap perlu diverifikasi sendiri.