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

XSS attack

Point berikutnya dari OWASP top 10 adalah Cross-Site Scripting atau sering disingkat XSS attack. Kenapa tidak disingkat CSS, agar tidak tertukar dengan cascade style-sheet.  Serangan ini ditujukan pada web. XSS dilakukan dengan melakukan injeksi kode client side script pada sebuah web. Kode injeksi ini berbeda dengan injeksi kode SQL pada SQL injection. Dengan melakukan serangan ini, penyerang dapat mengambil session dari korban, melakukan deface website. memasukkan konten tertentu, redirect user dll.

Terdapat 3 macam XSS yaitu, stored, reflected dan DOM based xss. Untuk mengetahui apakah sebuah web memiliki celah keamanan ini, bisa dilakukan dengan code analysis, dengan pengujian memasukkan script code tertentu , selain itu terdapat juga beberapa tools  yang bisa melakukan deteksi secara automatis. Untuk mencegah serangan ini bisa dilakukan validasi input, whitelist maupun sanitasi input. Sanitasi bisa digunakan dengan menggunakan library OWASP anti Sammy atau Java HTML Sanitizer Project

 

from http://hackertarget.com/xss-tutorial/
from http://hackertarget.com/xss-tutorial/

OWASP telah menyiapkan beberapa dokumen yang dapat digunakan untuk mempelajari pencegahan serangan ini, bisa dilihat pada link berikut:

OWASP XSS Cheat Sheet

DOM based XSS Cheat Sheet

OWASP CSS article

ESAPI Encoder API

ASVS: Output Encoding/Escaping Requirements (V6)

OWASP AntiSamy: Sanitization Library

Testing Guide: 1st 3 Chapters on Data Validation Testing

OWASP Code Review Guide: Chapter on XSS Review

OWASP XSS Filter Evasion Cheat Sheet

CWE Entry 79 on Cross-Site Scripting

Session Hijacking

Ranking 2 pada OWASP top 10 adalah Broken Authentication and Session Management, atau istilah populernya adalah session hijacking. Ketika kita ingin login ke sebuah website misalnya facebook, kita akan diminta memasukkan login dan password. Bila login dan password benar maka login berhasil dan kita mendapat akses ke facebook. Nah server akan membuat session, dan menyimpan informasi session (umumnya berupa cookies) pada browser di komputer kita. Selama session belum berakhir (umumnya ketika kita logout) maka server tidak akan meminta kita untuk memasukkan login dan password ketika kita membuka facebook. Jadi ibaratnya selama session itu masih berlaku (valid) antara komputer kita dengan server facebook dibangun sebuah jalur koneksi khusus.

Nah penyerangan contohnya dilakukan dengan metode sniffing, dan mencuri session. Jadi penyerang akan melakukan sniffing dan mencuri cookies yang digunakan. Cookies ini kemudian  dipasang di browser penyerang. Bila session masih valid maka penyerang dapat masuk ke Facebook korban tanpa perlu login. Selain itu ada juga penyerangan yang dilakukan dengan metoda phishing.

owasp A2 o

Ada beberapa kesalahan pada pengembangan website yang bisa digunakan untuk melakukan penyerangan ini. Misalnya website tidak melakukan timeout terhadap session, kemudian password management yang tidak baik, atau adanya fungsi recover password untuk user yang lupa password yang tidak aman. Yang paling parah adalah website yang menampilkan session ID pada URL. Selain itu ada info password dan login yang dikirimkan tanpa dienkripsi.

Untuk pencegahan, OWASP telah menyediakan dokumen  OWASP ASVS (Application Security Verifivation Standard). Untuk bacaan lebih lanjut bisa dilihat pada link berikut:

OWASP Authentication cheat sheet

OWASP Forgot password Cheat sheet

Session Management Cheat sheet

OWASP Top10

Saya akan lanjutkan sharing tentang materi pada CYSE2014. Hari ini saya akan lanjutkan cerita tentang presentasi pak Andika. Beliau cerita tentang OWASP Top10. OWASP (The Open Web Application Security Project) merupakan organisasi/komunitas terbuka yang fokus di bidang Keamanan Aplikasi.  OWASP melakukan penelitian dan mensosialisasikan hasilnya untuk meningkatkan kesadaran akan keamanan aplikasi. OWASP memiliki beberapa project diantaranya WebGoat, Webscarab dan OWASP top10. OWASP Top10 merupakan dokumen yang merangkum 10 celah keamanan pada aplikasi yang paling berbahaya saat ini. Dengan adanya dokumen ini diharapkan pengembang aplikasi dapat memahami 10 celah keamanan ini dan mencegah timbulnya 10 masalah ini pada aplikasinya.

owasp top10

OWASP top 10 telah ada sejak tahun 2003, kemudian ada versi 2004, 2007, 2010 dan 2013.  Untuk 2013 list 10 celah keamanannya adalah:

A1. Injection

A2. Broken Authentication and Session Management

A3. Cross-Site Scripting (XSS)

A4. Insecure Direct Object References

A5. Security Misconfiguration

A6. Sensitive Data Exposure

A7. Missing Level Access Control

A8. Cross Site Request Forgery (CSRF)

A9. Using Known Vulnerable Components

A10. Unvalidated Redirects and Forwards

Untuk list 2013 ini, point A9 belum ada pada list top 10 tahun 2010. Selain itu ada 3 perubahan urutan, ada 1 point yang diperluas serta ada 2 point yang digabungkan. Penyusunan ranking ini menggunakan metoda risk rating. Jadi yang memiliki peringkat 1 adalah yang memiliki resiko keamanan paling tinggi. Aspek yang diperhatikan dalam menghitung resiko keamanan adalah Attack Vector, Weakness Prevalence, Weakness Detectability, Technical Impact and business Impact. Masing-masing aspek tersebut diberi skor dan level (mudah, menengah , susah dll), sehingga akhirnya didapatkan skor yang menentukan urutan rangking dari resiko tadi. Penjelasan lebih lanjut tentang point OWASP top 10 akan saya lanjutkan pada tulisan berikutnya …