Ketika CMS dengan model dinamis yang mengakses database digunakan di depan dengan gagahnya oleh para developer tanpa firewall di tingkat aplikasi, maka mau tidak mau resiko XSS dan Sql injection hanya tinggal waktunya tiba. Masih ingat kasus KPU yang disebabkan kedua hal ini, walau katanya sudah ditutup oleh firewal berlapis-lapis. Memang itu adalah resiko model CMS dinamis yang tanpa pertimbangan matang. Tentu saja karena berbagai alasan (dari tidak tahu, malas, waktu kepepet dan lain halnya). Banyak developer lebih suka memasang aplikasi CMS langsung begitu saja.
Sekarang bagaimana mantra pelawan serangan XSS dan Sql injection? Dari hasil pertapaan di lembah Google sebetulnya banyak mantra yang dapat diturunkan, mantra ini banyak yang berupa teknik lama diterapkan di domain (masalah) baru. Teknis pertama adalah ketika sistem didevelop, di samping mendevelop sistem dengan hati-hati maka bisa dimanfaatkan metoda yang sudah “TUA” dalam bidang software verification (saran saya bagi pendevelop aplikasi web membaca buku teori dan hal-hal agak formal sangat dibutuhkan). Tool itu yang dikenal dengan sebutan “static analyzer“. Static di sini berarti sistem software dianalisis dalam situasi statis bukan ketika dijalankan (situasi dinamis). Artinya source code program akan diperiksa secara otomatis. Pada dasarnya celah XSs dan Sql bisa dianalisis dari source codenya, melakukan analisis secara manual tentu melelahkan untuk itu bisa digunakan Static Analyzer. Salah satu contohnya ada Pixy [http://pixybox.seclab.tuwien.ac.at/pixy/].
Mantra kedua adalah dipasang untuk sistem yang berjalan. Jurus pertama bisa dengan menggunakan modsecurity [http://www.modsecurity.org/], suatu firewall untuk aplikasi web. Pada dasarnya modul firewall ini akan menjadi satpam antara web server dan aplikasi web. Sehingga setiap akses ke web aplikasi web akan diperiksa terlebih dahulu berdasarkan aturan-aturan. Bila dilihat ada akses yang mencurigakan (stringnya mirip XSS attack atau SQL Injection) maka otomatis tidak diteruskan ke aplikasi web. Perlu diketahui bila Anda memasang rule terlalu banyak maka sering posting dimuntahkan (akan agak repot untuk forum dsb, tapi itu resiko dari keamanan).
Jurus kedua adalah menggunakan firewall database, yang berada di antara aplikasi web dan database engine. Misal dengan menggunakan GreenSQL [http://www.greensql.net]. Setiap perintah SQL yang melewati program ini akan dinilai berdasarkan suatu matriks resiko. Bila ada request yang mencurigakan maka tidak diteruskan ke database server. Saat ini GreenSQL sudah mendukung MySQL. Bebepera perintah SQl yang bersifat administratif tidak secara default diloloskan.
Mantra ketiga yang perlu dipertimbangkan adalah menggunakan model queue dalam proses interaksi, jadi ketika pengguna submit suatu masukan (via form atau lainnya), maka akan masuk ke queue terlebih dahulu, dan queueu ini dianalisis dan disubmit ke CMS sesungguhnya. Dengan cara ini maka tidak ada akses langsung ke sistem sesungguhnya. Dengan cara ini ada 2 database yang digunakan, database untuk front end (queue dari submission) dan database dari CMS yang juga terlindungi dengan mantra-mantra sebelumnya.
Koq repot ya, itulah resiko dari disain yang malas mikir (bandingkan bila rumus statis-statis ditetapkan dengan cerdas). Kali lain akan disambung dengan mantra-mantra lainnya, apalagi kalau situs sudah pakai AJAX, dsb. Semakin banyak komponen yang digunakan dan di luar kendali server, maka semakin banyak celah yang terbuka dan dapat dimanfaatkan. Solusi di atas saya berikan adalah yang bersifat Open Source, karena menurut saya solusi closed source tidak memenuhi persyaratan auditing (sebagai contoh static analyzer itu tidak bisa dijalankan bila kita tak memiliki source code). Gini hari koq ndak kenal Open Source.
Tulisan Asli : I Made Wiryana
0 komentar:
Posting Komentar