Insecure Direct Object References

Judul postingan kali ini agak sedikit panjang Insecure Direct Object References. Pada tulisan ini saya masih akan melanjutkan pembahasan tentang OWASP top 10, sekarang giliran ranking ke 4. Sebenarnya apa sih yang dimaksud dengan celah keamanan ini? Untuk mempermudah penjelasannya, saya gunakan contoh pada gambar di bawah ini:insecure direct object Refences

Contohnya kita mengakses website sebuah bank. Setelah berhasil login maka akan ditampilkan informasi tentang rekening kita. Pada url tercantum alamat https://www.onlinebank.com/user?acct=6065  Melihat alamat ini user menyadari bahwa parameter yg digunakan aplikasi untuk menampilkan data rekening dia adalah acct=6065. Selanjutnya dia mencoba untuk memasukkan nomor referensi yang lain. misalnya dia mengganti parameter pada url menjadi acct=6066. Ternyata aplikasi menampilkan data rekening dari orang lain, tanpa meminta login terlebih dahulu.

Celah keamanan ini bisa terjadi karena kesalahan pada pembatasan otorisasi objek pada user, serta objek refences yg tidak dilindungi (hidden). Untuk mengatasinya sebaiknya direct object reference dihilangkan. Bisa diganti dengan temporary mapping value, atau random mapping. Selain itu penting dilakukan validasi terhadap direct object reference dan penerapan acl (access control list). Untuk mencari adanya celah keamanan ini bisa dilakukan dengan melakukan analisa kode (code review) maupun pengujian manual. Saat ini belum ada tools yang mampu melakukan scanning otomatis untuk menemukan celah keamanan ini. Beberapa bahan bacaan tentang tema ini bisa dilihat pada link berikut:

https://www.owasp.org/index.php/Top_10_2007-Insecure_Direct_Object_Reference

http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/AccessReferenceMap.html

http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/AccessController.html

http://cwe.mitre.org/data/definitions/639.html

http://cwe.mitre.org/data/definitions/22.html

Silahkan tuliskan tanggapan, kritik maupun saran