200 likes | 342 Views
Security Implementation On Mission Critical Applications. Budi Rahardjo INDOCISC.com http://budi.insan.co.id Developers Day – Jakarta, 3 Maret 2005. Mission Critical Applications. Merupakan aplikasi yang sangat penting sehingga kegagalan aplikasi dapat menimbulkan masalah Ketidak-nyamanan
E N D
Security Implementation On Mission Critical Applications Budi Rahardjo INDOCISC.com http://budi.insan.co.id Developers Day – Jakarta, 3 Maret 2005
Mission Critical Applications • Merupakan aplikasi yang sangat penting sehingga kegagalan aplikasi dapat menimbulkan masalah • Ketidak-nyamanan • Kerugian finansial • Hilangnya nyawa Budi Rahardjo
It’s All Software • Semua aplikasi sekarang bergantung kepada software • Fly by wire • Peluru kendali • Consumer electronics • … • Meskipun aplikasi dan software dapat dipisahkan, materi presentasi ini mencoba memfokuskan kepada sisi softwarenya. Aplikasi biasanya lebih berfokus kepada pengoperasian software yang sudah jadi (misalnya sandboxing). Budi Rahardjo
Software & User Experience • “Apple’s core strength is to bring very high technology to mere mortals in a way that surprises and delights them and that they can figure out how to use. Software is the key to that. In fact, software IS the user experience.”(Steve Jobs) Budi Rahardjo
Security Issues • Masih kurang pengetahuan mengenai masalah security • Akibatnya • Kerahasiaan informasi tidak terjaga. (Confidentiality) • Informasi tidak terjaga integritasnya. (Integrity) • Sistem menjadi tidak reliable, rusak, hang, crash. (Availability) • Orang yang tidak berhak dapat menyisipkan program dan menjalankannya, mengakses informasi yang seharusnya tidak diperkenankan. (Authentication & Authorization) Budi Rahardjo
Quotes • Bruce Schneier (in Preface of “Building Secure Software” – Viega & McGraw) “We wouldn’t have to spend so much time, money, and effort on network security if we didn’t have such bad software security.…Think about the most recent security vulnerability you’ve read about. Maybe it’s a killer packet, which allows an attacker to crash some server by sending it a particular packet. Maybe it’s one of the gazillions of buffer overflows, which allow an attacker to take control of a computer by sending it a particular malformed message. Maybe it’s an encryption vulnerability, which allows an attacker to read an encrypted message or fool an authentication system. These are all software issues.” Budi Rahardjo
Software Problems • Trinity of Trouble (Hoglund & McGraw) • Complexity • Semakin banyak jumlah kode, semakin banyak kemungkinan adanya bugs • Extensibility • Java, .NET, dll, modules, virtual machine, mobile code • Tidak tahu kode yang akan datang. Sulit menjaganya • Connectivity • Aplikasi banyak yang terhubung ke jaringan • Meningkatkan jumlah potensi penyerang Budi Rahardjo
Kompleksitas Terlalu Tinggi • “There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.” (C.A.R. Hoare) Budi Rahardjo
Contoh Kompleksitas Software Sumber: Hoglund & McGraw, “Exploiting Software”, 2004 Budi Rahardjo
What To Do • Meningkatkan wawasan security dari para pengembang software dan management • Meningkatkan akurasi dari asumsi • Memberikan lebih banyak perhatian (time, money, effort) kepada security • Meningkatkan pengetahuan (skill) security pengembang software • Kuliah tentang secure software Budi Rahardjo
Asumsi Pengembang • Pengguna software adalah orang yang paham menggunakan software. Tidak benar. • Kesalahan urutan dan penggunaan dapat berakibat fatal • Kesalahan memasukkan kata / memberikan perintah dapat menimbulkan masalah. • Biasanya menggunakan filter apa-apa yang tidak dikehendaki. • Cara lain adalah dengan membuat whitelist (yang diperbolehkan) • Bagaimana agar software tidak rentan terhadap kesalahan? Budi Rahardjo
Asumsi Pengembang (2) • Pengguna software adalah orang yang baik. Tidak benar. • Adanya pengguna yang sengaja mencoba-coba, mencari kelemahan software (misal mengedit URL) • Software sekarang umumnya berada di hostile environment • Bagaimana agar software tidak rentan terhadap penyerangan? Budi Rahardjo
Beberapa masalah teknis • Buffer Overflow • Race Condition • Weak encryption • ACL • … Budi Rahardjo
Buffer Overflow • Merupakan salah satu kesalahan yang sering terjadi • Keterbatasan memory membatasi ukuran dari buffer (array) char userid[20];char password[20]; • Seringkali pembuat software • Lupa menguji batas buffer/array • Bagaimana jika “userid” atau “password” di atas diberi masukan lebih dari 20 karakter? Budi Rahardjo
Mengatasi Buffer Overflow • Ada beberapa tools / library yang dapat digunakan untuk membantu mencari potensi buffer overflow • Ada juga library yang mencoba memproteksi buffer overflow tanpa turut campurnya sang programmer (misalnya selalu menguji batas dari buffer, menandai batas akhir dari buffer, dsb.) • Tapi, tetap pengetahuan akan buffer overflow lebih baik lagi Budi Rahardjo
Race Condition • Ada hal-hal tertentu yang jika urutannya tidak tepat maka bisa terjadi masalah • Membuat berkas dengan tingkat admin (root) kemudian menghapusnya setelah selesai. Namun di tengah perjalanan berkas tersebut berhasil dieksploitasi (diubah isinya, diarahkan ke tempat lain) sebelum dihapus. • Variabel yang sedang digunakan oleh sebuah thread, ternyata diubah isinya oleh thread lain sehingga menjadi tidak benar Budi Rahardjo
Mengatasi Race Condition • Beberapa alternatif • Membuat beberapa transaksi menjadi “atomic” (terlihat sebagai satu eksekusi) • Melakukan sinkronisasi dengan misalnya membuat sebuah mutual exclusion (mutex), semaphore, locking • Membatasi dan mengecilkan window dari race condition • Membatasi level otorisasi pada bagian yang berpotensi dieksploitasi Budi Rahardjo
Weak Encryption • Penggunaan enkripsi (penyandian) yang lemah memberikan perasaan aman, padahal tidak. (False sense of security.) • Ada yang merasa sudah pandai membuat enkripsi, padahal lemah. • Lebih baik menggunakan algoritma yang sudah terbukti kuat • Salah menggunakan algoritma juga dapat berdampak menjadi tidak aman Budi Rahardjo
Penutup • Mudah-mudahan tingkat wawasan dan kemampuan (skill) security di antara para pengembang software makin meningkat • Harus ada pendidikan mengenai bagaimana cara membuat software yang aman • Kuliah? Training? Workshop? Tutorial? Budi Rahardjo
Lain-Lain • Bidang ilmu lain yang terkait: Metoda Formal (Formal Methods), yaitu menggunakan matematik di setiap tahapan desain dan implementasihttp://budi.insan.co.id/courses/ec7030Namun bidang ini masih kurang populer • 1 April 2004. National Cyber Security Partnership (NCSP) di Amerika mengeluarkan dokumen “Improving Security Across The Software Development Lifecycle”http://www.cyberpartnership.org/init-soft.html • Saat ini mulai muncul buku dan referensi tentang bagaimana caranya mengembangkan software yang aman Budi Rahardjo