Pertemuan 11 Latihan Software Security Design
Software Security Design
Masalah Desain
• Masalah desain terkait business logic flaw (bukan bugs karena kode belum dibuat)
• Memperbaiki masalah (security) yang terjadi di production 100x lebih mahal daripada ketika pada fase desain
• specification → architectural blueprint → code
Contoh Kesalahan Desain
• Banyak aplikasi tidak melakukan verifikasi email (sebagai identitas) untuk pembuatan akun, reset password, dll
• Akibat kesalahan yang dapat berakibat fatal
• Orang lain dapat membuat akun kita dengan alamat email orang tersebut, kita tidak dapat membuat akun dilayanan tersebut
• Reset password ke akun orang tersebut.
• Yang seharusnya dilakukan adalah:
• Pengguna mengisikan alamat email sebagai akun
• Email dikirimkan dengan tautan (link) yang unik
• Tunggu pengguna melakukan klik terhadap tautan (untuk verifikasi)
• Akun baru dibuat Setelah sistem mendapatkan verifikasi tersebut
Security is a Concern not a Feature
• Contoh:
• User authentication pada website penyimpanan foto
• User story (function-focused) : Sebagai pengguna, Saya ingin sebuah halaman login sehingga Saya dapat mengakses foto yang sudah saya upload.
• User story (security concern) : Sebagai pengguna, Saya ingin mengakses foto yang sudah saya upload melewati halaman login, sehingga foto saya tetap rahasia
Permasalahan yang muncul
• Cara penanganan keamanan dalam perangkat lunak seperti ini biasa terjadi, tetapi juga bermasalah karena beberapa alasan, beberapa di antaranya:
• Pengembang perlu secara eksplisit memikirkan kerentanan keamanan, sementara pada saat yang sama berfokus pada penyelesaian fungsionalitas bisnis.
• Mengharuskan setiap pengembang untuk menjadi ahli keamanan.
• Diasumsikan bahwa orang yang menulis kode dapat memikirkan setiap potensi kerentanan yang mungkin terjadi sekarang atau di masa mendatang
Arsitektur dan Desain
• Arsitektur dan desain merupakan fase kritis dari SDLC
• Keputusan yang diambil pada fase ini menentukan ketahanan sistem terhadap serangan.
• Keputusan yang baik yang dibuat selama fase ini tidak hanya akan menghasilkan pendekatan dan struktur yang lebih tangguh dan tahan terhadap serangan, tetapi juga sering membantu untuk menentukan dan memandu keputusan yang baik di fase selanjutnya seperti kode dan pengujian. Keputusan buruk yang dibuat selama fase ini dapat menyebabkan cacat desain yang tidak pernah dapat diatasi atau diselesaikan bahkan oleh kode dan upaya pengujian yang paling cerdas dan disiplin sekalipun.
• Setengah dari cacat yang menyebabkan kerentanan keamanan yang ditemukan dalam perangkat lunak saat ini sebenarnya disebabkan oleh kelemahan dalam arsitektur dan desain [McGraw 2006]
• Tujuan membangun keamanan ke dalam fase arsitektur dan desain SDLC adalah untuk secara signifikan mengurangi jumlah kelemahan sedini mungkin sambil meminimalkan ambiguitas dan kelemahan lainnya
Issue dan Tantangan
• Tantangan untuk membangun keamanan ke dalam bagian arsitektur dan desain dari SDLC adalah bahwa arsitektur tidak hanya harus mengatasi masalah keamanan yang dipahami saat ini—baik kelemahan maupun serangan yang diketahui—namun pada tingkat abstraksinya, ia juga harus fleksibel dan tangguh di bawah kondisi keamanan yang terus berubah.
• Tidak ada sistem yang dapat sepenuhnya aman
Software Architecture and Software Design
• Arsitektur perangkat lunak (Software Architecture) dari suatu sistem menggambarkan organisasi atau struktur sistem, dan memberikan penjelasan tentang bagaimana perilakunya.
• Desain perangkat lunak (Software Design) adalah proses konseptualisasi requirement perangkat lunak ke dalam implementasi perangkat lunak.
Hubungan Software Architecture dan Software Design
• Arsitektur perangkat lunak memaparkan struktur sistem sambil menyembunyikan detail implementasi. Arsitektur juga berfokus pada bagaimana elemen dan komponen dalam suatu sistem berinteraksi satu sama lain.
• Desain perangkat lunak menggali lebih dalam detail implementasi sistem. Masalah desain mencakup pemilihan struktur data dan algoritma, atau detail implementasi komponen individual.
Architectural Risk Analyst
• Melakukan analisis risiko arsitektur sangat penting, jika kita ingin mengintegrasikan masalah keamanan ke dalam arsitektur perangkat lunak dan fase desain SDLC.
• Analisis risiko arsitektur dimaksudkan untuk memberikan jaminan bahwa masalah keamanan tingkat arsitektur dan desain diidentifikasi dan ditangani sedini mungkin dalam life cycle, menghasilkan tingkat ketahanan, toleransi, dan ketangguhan terhadap serangan yang lebih baik.
• Tanpa analisis semacam ini, kelemahan arsitektural akan tetap tidak tertangani sepanjang life cycle (walaupun sering menimbulkan masalah selama implementasi dan pengujian) dan kemungkinan besar akan mengakibatkan kerentanan keamanan yang serius pada perangkat lunak yang diterapkan.
6 Aktivitas Risk Analysis Methodology
• Software characterization
• Threat analysis
• Architectural vulnerability assessment
• Risk likelihood determination
• Risk impact determination
• Risk mitigation planning
Desain
• Desain adalah panduan prinsip bagaimana sebuah sistem dibangun dan dapat diterapkan di semua tingkatan, mulai dari kode hinggaarsitektur.
• Desain mencakup aktivitas apa pun yang melibatkan pengambilan keputusan aktif
• Bentuknya seperti apa?
• Flowchart
• DFD
• UML
• Deskriptif (teks dan gambar) dengan bahasa natural
• Requirement mendefinisikan sesuatu yang harusnya terjadi dan kemudian diimplementasikan melalui desain
• Kondisi normal
Spesifikasi → Implementasi
Multiplier (spec.) ← Multiplier (impl.)
(testing? verification?)
Security Design (Desain Keamanan)
• Mendefinisikan sesuatu yang tidak boleh terjadi (dari kacamata security)
• Safety?
• Abuse | misuse | pelanggaran kebijakan
• Desain keamanan berupa kendali (control) yang diterapkan terhadap hal di atas
Contoh #1
• Requirement
• Pengguna tidak boleh login dari dua (2) tempat yang berbeda (parallel/concurrent login)
• Ada skenario pengujian login dari 2 IP yang berbeda pada saat yang bersamaan
• Bagaimana caranya? Manual? Otomatis?
• Desain kendali
• Cookies + nomor IP + jenis browser + identitas komputer lainnya
• Pemberitahuan (dan pencatatan) kejadian
Contoh #2
• Password recovery
• Pertanyaan yang sudah dipersiapkan
• Warna favorit?
• Nama binatang peliharaan (pets)?
• Jawaban yang terbatas jumlahnya atau mudah ditebak
• Tebak warna: merah, biru, hijau, ...
• Kasus Paris Hilton, nama pets diketahui (via media entertainment)
• Data via faceboook (social media lainnya)
Desain Kendali
• Bagaimana mendeskripsikannya?
• Sama dengan metoda yang digunakan untuk mendeskripsikan desain
• Use case
Comments
Post a Comment