Monday, March 01, 2010

Budi Rahardjo: Keamanan Aplikasi Server Internet

Belum lama ini, saya mendapat e-mail dari seseorang yang menanyakan mengenai server-nya yang kena penyusupan. Bagaimana seseorang yang tidak memiliki password di sistem Linux; tetapi berhasil masuk? Untuk kasus yang dia hadapi, nampaknya penyusup masuk melalui kelemahan aplikasi. Dalam hal ini, aplikasi yang rentan adalah sebuah program (daemon) yang berjalan di belakang layar.

Layanan di sebuah server dapat dilakukan dengan menjalankan aplikasi yang berjalan di belakang layar. Aplikasi ini menunggu koneksi dari pengguna di port tertentu, dan menerima perintah tertentu. Sebagai contoh, aplikasi server web menunggu di port 80. Jika ada koneksi ke port 80, aplikasi tersebut akan menunggu perintah dari pengguna. Pengguna dapat memberikan perintah untuk mengirimkan berkas "index.html", misalnya.

Perintah-perintah yang dimengerti oleh aplikasi server ini bergantung kepada protokol yang digunakan. Misalnya protokol HTTP mengerti perintah "GET berkas", yang berarti harus mengirimkan berkas yang diminta. Bagaimana jika perintah tersebut tidak dalam spesifikasi protokol? Aplikasi server akan menolak.

Aplikasi server ini harus diamankan karena dia berhadapan langsung dengan pengguna. Seorang pengguna yang nakal bisa saja mencoba memberikan perintah yang di luar spesifikasi, dan bahkan mencari celah-celah keamanan dari keteledoran pengembang aplikasi.

Jika aplikasi didesain dan diimplementasikan dengan baik, serangan seperti ini seharusnya bisa diatasi. Namun pada kenyataannya, bisa saja aplikasi menjadi menggantung (hang) atau bahkan berhenti tanpa terkendali. Yang paling parah adalah jika aplikasi berhenti, dan memberikan akses shell kepada pemberi perintah. Sebagai contoh, bagaimana jika pengguna nakal ini mengirimkan perintah yang superpanjang sehingga menghabiskan memory dari aplikasi? Apa yang terjadi?

Shell yang diberilian oleh aplikasi ini dijalankan dengan user dari aplikasi tersebut. Yang paling berbahaya adalah apabila aplikasi dijalankan oleh user "root" (admin). Penyerang akan memiliki akses tanpa batas.

Dalam kasus yang diceritakan kepada saya tersebut, penyusup sudah mendapatkan akses root melalui kelemahan aplikasi CMS (Content Management System). Penyusup kemudian memasang program backdoor, yaitu berupa sebuah aplikasi yang menanti perintah di port tertentu. Penyusup kemudian bisa masuk melalui jalan belakang ini. Habislah sudah server tersebut.

Pengalaman ini menunjukkan bahwa aplikasi, khususnya yang terkait layanan Internet, harus diamankan. Secara berkala, aplikasi dan lingkungari yang terkait dengannya, seperti database-nya, harus diperbarui dan dievaluasi tingkat keamanannya. Lebih bagus lagi jika tahap awal kode sumber dari aplikasi itu sudah dievaluasi keamanannya. Hal ini sering tidak dapat dilakukan untuk aplikasi yang kodenya tertutup. Itulah sebabnya pendekatan open source bisa meningkatkan keamanan.

Mudah-mudahan aplikasi server Anda tidak pernah mengalami pengalaman buruk, seperti yang saya ceritakan ini.

Sumber : Majalah InfoLinux 03/2010

No comments:

Post a Comment