Tantangan dalam Mengeksploitasi Redirect URI Kami menemukan bahwa sebagian besar situs web membatasi parameter redirect_uri ke jalur absolut, sehingga hampir mustahil untuk dieksploitasi karena penyerang tidak dapat memanipulasi URI untuk mengarahkan pengguna ke lokasi berbahaya. Salah satu pengujian dalam penelitian kami adalah melihat apakah kami dapat mengubah jalur endpoint setelah nama domain. Sebagai contoh, kami memeriksa apakah terjadi error setelah perubahan berikut: Sebelum: https://www.example.com/oauth/callback Sesudah: https://www.example.com/any/callback Kami menemukan bahwa 28 situs tidak menggunakan pembatasan jalur absolut (karena penggunaan wildcard domain, misalnya “domain.com/*”), dan 18 di antaranya memungkinkan kami menambahkan jalur apa pun setelah nama domain. Namun, perilaku ini tidak memungkinkan kami mengubah domain asli ke domain kami sendiri. Ini berarti kami masih harus menemukan kerentanan open redirect di situs target, karena kami tidak dapat mengubah domain. Metode untuk Melewati redirect_uri Kami mencari lebih banyak metode untuk melewati validasi redirect_uri dengan mencoba berbagai teknik untuk memanipulasi parser. Pada awalnya, kami fokus pada upaya melewati validasi domain redirect_uri. Jika kami dapat mengatur domain kami sendiri, kami bisa langsung meneruskan kode otorisasi tanpa memerlukan kerentanan open redirect. Kami mengumpulkan beberapa teknik bypass yang kami temukan terkait OAuth, beberapa di antaranya berasal dari skenario dunia nyata (misalnya, melewati OAuth menggunakan IDN homograph), dan menyusunnya dalam sebuah daftar (Lampiran A). Untuk mengujinya secara efektif, kami membuat “oauth-hunter” (Gambar 4), sebuah alat penelitian keamanan open-source yang mengotomatisasi kesalahan konfigurasi OAuth. Saat ini, sebagian besar teknik bypass yang kami coba tidak mengungkap banyak kerentanan. Meskipun ada skenario dunia nyata di mana metode ini berhasil (misalnya, melewati OAuth menggunakan IDN homograph), sebagian besar tidak efektif dalam penelitian kami. Hal ini mungkin disebabkan oleh fokus utama kami pada penyedia identitas (IdP) populer seperti Facebook dan GitHub, yang memiliki perlindungan kuat terhadap teknik bypass semacam ini. Manipulasi Parameter state Masalah kedua yang kami periksa adalah validasi parameter state. Seperti yang kami sebutkan sebelumnya, peran parameter state adalah untuk mencegah serangan CSRF. CSRF adalah serangan berbasis web yang menipu pengguna agar secara tidak sadar mengirimkan permintaan berbahaya, memungkinkan penyerang melakukan tindakan atas nama pengguna tanpa persetujuan mereka. Dalam konteks OAuth, serangan CSRF dapat memungkinkan penyerang mengeksploitasi sesi pengguna untuk mendapatkan akses tidak sah ke sumber daya yang dilindungi. Kami menemukan bahwa 21 dari situs web yang kami teliti tidak memverifikasi parameter state dengan benar. Parameter state dapat diatur dan digunakan kembali secara bebas, dan dalam beberapa kasus, bahkan memungkinkan penyerang membuat URL OAuth yang dapat menipu pengguna agar secara tidak sadar terhubung ke sesi milik penyerang. Akibatnya, korban masuk ke akun penyerang tanpa disadari dan berinteraksi dalam sesi tersebut. Setiap tindakan yang dilakukan—seperti memasukkan data pribadi—dapat diakses oleh penyerang, yang kemudian dapat mengambil dan menyalahgunakannya. Dari jumlah tersebut, kami mengidentifikasi delapan situs web yang secara aktif rentan terhadap serangan ini (Gambar 5). Proses serangan berlangsung sebagai berikut: Penyerang mencegat permintaan OAuth awal: Penyerang memulai proses login OAuth dan mencegat kode otorisasi sebelum menukarkannya dengan token akses. Mereka kemudian menyimpan kode otorisasi tersebut dan membatalkan permintaan. Korban menggunakan kode otorisasi milik penyerang: Penyerang menipu korban agar memulai proses OAuth menggunakan URL OAuth yang telah dimodifikasi dengan kode otorisasi milik penyerang. Akibatnya, korban justru terhubung ke akun penyerang. Mengapa ini menjadi masalah? Studi kasus nyata yang dilakukan oleh Salt Security menunjukkan bagaimana penyerang dapat membuat tautan berbahaya dan menyebabkan korban menginstal plugin ChatGPT yang telah dimodifikasi dengan sesi milik penyerang. Dengan demikian, penyerang dapat mengakses data percakapan pribadi korban. Karena penyerang mengendalikan plugin tersebut, mereka dapat mencegat informasi sensitif seperti kredensial atau detail pribadi lainnya. Pre-Account Takeover Analisis terakhir kami berfokus pada kerentanan yang dikenal sebagai pre-account takeover. Jenis kerentanan ini terjadi ketika penyerang mengeksploitasi celah dalam proses otorisasi atau registrasi, memungkinkan mereka mengambil alih akun pengguna sebelum pengguna sah menyelesaikan proses OAuth. Berikut cara serangan ini dapat terjadi: Penyerang memulai proses pendaftaran menggunakan alamat email korban dan membuat akun. Korban kemudian mencoba masuk atau mendaftar ke situs yang sama menggunakan penyedia OAuth dan alamat email mereka. Dalam beberapa kasus, ketika korban terhubung menggunakan penyedia OAuth, situs web hanya memverifikasi akun tanpa mendeteksi bahwa akun tersebut awalnya dibuat oleh penyerang, sehingga penyerang dapat mengambil alih kendali akun tersebut. Karena penyerang telah membuat akun dengan email korban, mereka dapat masuk ke akun korban tanpa disadari oleh korban. Kerentanan ini umumnya tidak dianggap berisiko tinggi karena bergantung pada serangkaian peristiwa yang tidak selalu terjadi: Penyerang harus mengetahui alamat email korban dan berhasil membuat akun sebelum korban mencoba mendaftar. Akibatnya, jenis kerentanan ini sering dikategorikan sebagai low severity, karena tidak melibatkan eksploitasi langsung; penyerang harus menunggu korban untuk masuk, dan waktu kejadian ini tidak dapat diprediksi. Kami menemukan tujuh situs web yang rentan terhadap pre-account takeover (Gambar 6). Hasil Penelitian Dari analisis konfigurasi OAuth di 100 situs web, terlihat bahwa meskipun banyak yang telah menerapkan langkah-langkah keamanan dengan baik, masih ada ruang untuk perbaikan. Tabel berikut merangkum temuan kami sepanjang penelitian ini (Gambar 7). Dalam tabel berikut, kami menunjukkan: Jumlah situs yang telah divalidasi untuk kategori tertentu. Jumlah “Not Validated”, yaitu kesalahan konfigurasi yang tidak dapat dieksploitasi. Jumlah “Exploitable”, yaitu situs yang memiliki kerentanan yang dapat kami eksploitasi. Wawasan dan Rekomendasi Sebagian besar situs web—setidaknya berdasarkan penelitian kami—telah mengikuti praktik terbaik dalam konfigurasi OAuth, sehingga secara signifikan mengurangi potensi serangan. Namun, masih ada beberapa kasus di mana situs web tidak sepenuhnya mematuhi standar keamanan OAuth, yang membuat mereka rentan terhadap berbagai jenis serangan OAuth. Dari penelitian ini, kami telah mempelajari beberapa langkah penting untuk meningkatkan keamanan OAuth: Konfigurasikan redirect_uri ke jalur absolut Pastikan parameter redirect_uri diatur sebagai URL absolut untuk mencegah potensi masalah pengalihan yang dapat dimanfaatkan oleh penyerang. Gunakan PKCE (Proof Key for Code Exchange) Dengan menerapkan PKCE, penyerang tidak dapat menukar kode otorisasi yang dicuri dengan token akses, bahkan jika kode tersebut berhasil dicegat melalui serangan open redirect. Validasi parameter state Parameter state harus dibuat unik untuk setiap sesi dan divalidasi dengan benar untuk mencegah serangan CSRF (Cross-Site Request Forgery). Cegah serangan pre-account takeover dengan: Memverifikasi kepemilikan email: Pastikan pengguna tidak dapat mendaftar dengan alamat email yang bukan milik mereka dan wajibkan penggunaan autentikasi dua faktor (2FA) untuk validasi email. Menangani proses login…
- (021) 53660861
- cyberark@ilogoindonesia.id
- AKR Tower – 9th Floor Jl. Panjang no. 5