Latihan
Buat rangkuman materi yang sudah disampaikan
Definisi Software Security
Software security merupakan hal penting yang diperlukan untuk membangun sistem software yang dapat dipercaya. Ini menjadi teknik yang diterapkan untuk melindungi software dari serangan berbahaya dan risiko peretas lainnya. Sehingga, software terus berfungsi dengan benar di bawah potensi risiko tersebut.
Mengembangkan software yang aman, berfokus pada tahap awal software development life cycle (SDLC) dan kode yang mendasari aplikasi tertentu. Dengan tujuan untuk mengidentifikasi kekurangan dan cacat sedini mungkin. Selain itu, keamanan ini diperlukan untuk menyediakan integrity, authentication, dan availability. Hal ini dikarenakan sistem software yang dengan mudah diserang untuk mencuri informasi, memantau konten, melihat kerentanan, dan sejenisnya.
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
Pendekatan tradisional Software Security dan Kelemahannya
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
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.
6 Aktivitas Risk Analysis Methodology
- Software characterization
- Threat analysis
- Architectural vulnerability assessment
- Risk likelihood determination
- Risk impact determination
- Risk mitigation planning
Risk Likelihood Determination
Desain
Desain adalah panduan prinsip bagaimana sebuah sistem dibangun dan dapat diterapkan di semua tingkatan, mulai dari kode hingga arsitektur. Desain mencakup aktivitas apa pun yang melibatkan pengambilan keputusan aktif
Security Design (Desain Keamanan)
- Abuse | misuse | pelanggaran kebijakan
- Desain keamanan berupa kendali (control) yang diterapkan terhadap hal di atas
Contoh
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
Desain kendali
- Cookies + nomor IP + jenis browser + identitas komputer lainnya
- Pemberitahuan (dan pencatatan) kejadian
Design Consideration
Menggunakan kriptografi ,Pemilihan panjang kunci (key size), Simetrik vs asimetrik,Digital certificate
Integrity Design
- Penggunaan hash function
- MD5, SHA
- Referential integrity pada database
Buat contoh architecture risk analysis
Architectural risk assessment adalah proses manajemen risiko yang mengidentifikasi kelemahan dalam arsitektur perangkat lunak dan menentukan risiko terhadap aset informasi bisnis yang dihasilkan dari kelemahan tersebut. Melalui proses penilaian risiko arsitektur, kelemahan ditemukan yang memaparkan aset informasi terhadap risiko, risiko diprioritaskan berdasarkan dampaknya terhadap bisnis, mitigasi untuk risiko tersebut dikembangkan dan diterapkan, dan perangkat lunak dinilai ulang untuk menentukan kemanjuran mitigasi. .