Insecure Direct Object Reference

Arlen Luman
MII Cyber Security Consulting Services
3 min readOct 14, 2020
Image from dreamlab.net

Definisi

Insecure direct object references (IDOR) are a type of access control vulnerability that arises when an application uses user-supplied input to access objects directly. The term IDOR was popularized by its appearance in the OWASP 2007 Top Ten. (portswigger.net)

Insecure Direct Object References atau IDOR merupakan sebuah kerentanan keamanan yang disebabkan adanya broken authorization atau lemahnya autorisasi pada suatu sistem. Kerentanan ini akan muncul di saat aplikasi menggunakan input dari user untuk mengakses objek pada sistem secara langsung. Bersamaan dengan gagalnya aplikasi dalam melakukan authorization terhadap user access control, maka hal tersebut memungkinkan user dapat mengakses dan membuat perubahan pada data user lain yang ada dalam sistem.

Berikut contoh URL sederhana yang cukup sering terjadi adalah sebagai berikut:

https://insecure-website.com/customer_account?customer_number=132355

Dapat dilihat pada contoh request diatas, terdapat parameter customer_number yang digunakan sebagai query pada bagian database. Apabila aplikasi tidak menerapkan access control, maka attacker akan dengan mudah mem-bypass access control tersebut untuk dapat mengakses data customer lainnya.

Attacker mungkin dapat melakukan privilege escalation baik secara horizontal dan vertikal dengan mengubah parameter customer_number menjadi customer dengan privilege lain atau lebih tinggi. Kemungkinan lainnya yaitu mengeksploitasi kebocoran kata sandi atau mengubah data setelah attacker berhasil masuk kedalam halaman user target.

Adapun contoh lainnya apabila aplikasi menyimpan file secara static pada server-side filesystem, maka attacker dapat dengan mudah mendapatkan file — file tersebut, terutama sensitive file dengan mengubah parameter yang dikirim oleh aplikasi. Seperti contoh URL dibawah ini:

https://insecure-website.com/static/12144.txt

Contoh

Berikut merupakan contoh serangan terhadap kerentanan Insecure Direct Object References (IDOR). Disini penulis menggunakan contoh kasus nyata, maka dari itu ada beberapa bagian yang tidak bisa penulis tampilkan. Namun disini harapannya memberikan gambaran bagaiman kerentanan IDOR pada kasus nyata.

Pada contoh dibawah ini penulis melakukan login pada aplikasi, kita sebut saja menggunakan akun A. Setelah proses login berhasil, penulis mendapatkan token yang berfunsgi sebagai access control pada aplikasi.

Login menggunakan akun A

Token yang penulis dapat untuk akun A adalah berakhiran CvAnX, setelah itu penulis melakukan create proses checkout pada aplikasi dengan menggunakan token akun A.

Create Checkout menggunakan token akun A

Pada tahap ini, penulis berhasil melakukan create proses checkout dengan menggunakan token akun A. Dapat dilihat diatas, setelah berhasil melakukan create proses checkout, penulis mendapatkan transactionId. Dimana transactionId ini otomatis merupakan milik akun A. Selanjutnya penulis melakukan login dengan menggunakan user lain, yaitu akun B.

Login menggunakan akun B

Token yang penulis dapat untuk akun B adalah berakhiran s4mpv seperti gambar diatas. Selanjutnya penulis mencoba melakukan proses order checkout dengan menggunakan transactionId milik akun A dan token milik akun B.

Success Order menggunakan token akun B

Dapat dilihat pada gambar diatas, bahwa penulis berhasil melakukan order checkout milik akun A dengan menggunakan token akun B. Sehingga dapat disimpulkan bahwa aplikasi tersebut memiliki kerentanan IDOR dimana penulis dapat melakukan manipulasi data atau melakukan proses data menggunakan akun lain.

Remediasi

Untuk menghindari atau menanggulangi adanya kerentanan Insecure Directory Object References atau IDOR, ada beberapa cara yang dapat dilakukan, yaitu mengubah atau memperkuat access control terhadap user. Dimana hanya session user itu sendiri yang dapat melakukan penambahan, pengubahan hingga pengurangan terhadap data user tersebut. Sehingga aplikasi harus selalu melakukan access control setiap kali melakukan sebuah proses.

--

--