Temukan Kelemahan 'Login with Facebook', Peneliti Diganjar Rp 298 Juta

Ilustrasi

Cyberthreat.id - Seorang peneliti cybersecurity mendapatkan US$ 20.000 atau setara dengan Rp 298 juta setelah mengidentifikasi kelemahan Cross-Site Scripting (XSS) pada tombol "Login with Facebook". Facebook memberikan reward kepada peneliti bernama Vinoth Kumar karena menemukan kerentanan XSS berbasis Document Object Model (DOM) di metode window.postMessage() dari kode platform.

Masalah ini muncul karena implementasi API postMessage yang cacat, dimana window.postMessage () memungkinkan komunikasi lintas asal antara objek window, misalnya antara halaman web dan iframe yang tertanam di dalamnya.

Kumar menemukan kelemahan tersebut ketika mengamati kerentanan dari sisi klien secara lebih khusus, XSSI, JSONP dan juga postMessage. Namun karena sulit untuk membuktikannya, ia hanya fokus pada masalah postMessage.

"Karena ini sebagian besar diabaikan oleh peneliti keamanan, tetapi sangat mudah untuk di-debug dan tidak perlu mem-bypass firewall," kata Kumar dalam posting blognya baru-baru ini.

Tak hanya itu, Kumar juga membuat ekstensi Chrome untuk mencatat komunikasi lintas-window yang terjadi pada halaman untuk mempermudah pencariannya.

Ia pertama kali menjelajahi plug-in pihak ketiga Facebook langsung di situs pengembangnya untuk mencoba menemukan masalah iframe. iframes digunakan untuk menyematkan satu dokumen ke dalam dokumen HTML lain. Kumar menemukan masalah pada Facebook Login SDK untuk JavaScript.

Ia juga berhasil menemukan SDK sedang membuat proksi iframe v6.0/plugins/login_button.php untuk komunikasi lintas domain, sedangkan bingkai proxy akan membuat tombol "Login with Facebook".

Menurut dia, yang menarik adalah JavaScript SDK mengirimkan muatan ke frame proxy, yang berisi URL klik tombol. Jadi, ketika pengguna mengklik tombol "Login with Facebook", URL dari muatan postMessage dieksekusi di iframe proxy, yang mengarah pada pelaksanaan JavaScript di Facebook.com.

Namun, tidak ada validasi URL atau skema dalam JavaScript untuk memeriksa apakah permintaan URL berasal dari sumber yang sah, sehingga hal ini akan membuka pintu untuk pembajakan yang membahayakan pengguna.

"Jadi, jika kami mengirim payload dengan URL 'javascript: alert (document.domain)' ke https://www.facebook.com/v6.0/plugins/login_button.php iframe dan pengguna mengeklik "Login with Facebook", javascript: alert (document.domain) akan dieksekusi di domain facebook.com."

Ada dua cara untuk mengeksploitasi kerentanan. Salah satunya adalah dengan membuka jendela pop-up, dan yang kedua adalah dengan membuka iframe, kemudian berkomunikasi dengan keduanya.

Dia memberikan contoh kode untuk kedua eksploitasi ini dan memposting bukti video konsep (PoC) pada kanal YouTube-nya. Hasil dari salah satu serangan adalah penyerang dapat membajak dan mengambil alih akun seseorang.

Kumar memberitahu Facebook tentang kerentanan pada 17 April 2020. Tiga hari kemudian Facebook melakukan perbaikan dengan menambahkan domain regex facebook.com dan skema periksa di parameter URL payload. Pada 29 April 2020, Facebook mengonfirmasi bug diperbaiki dan membayar Kumar hadiah bug-nya pada 1 Mei 2020.

Facebook telah memiliki program bug-bounty sejak 2011. Menurut pedoman program tersebut, $ 20.000 adalah jumlah uang yang signifikan yang harus dibayar untuk setiap identifikasi kerentanan.

Hadiah tertinggi yang telah dibayarkan Facebook hingga saat ini adalah $ 50.000, untuk seorang peneliti yang mengidentifikasi bug dalam mekanisme berlangganan developer Facebook yang dapat memungkinkan penyalahgunaan pemberitahuan tentang jenis aktivitas pengguna tertentu. []

Redaktur: Arif Rahman