Pada edisi OWASP Top 10 tahun 2021, Insecure Design merupakan kategori baru yang berfokus pada kelemahan desain dan arsitektur sistem. Kategori ini menekankan perlunya threat modeling, penggunaan pola desain aman, dan arsitektur referensi untuk memastikan aplikasi dirancang dengan baik dan aman sejak awal.
Insecure design bukan sekadar kelemahan implementasi—bahkan desain yang aman dapat mengandung cacat implementasi. Namun, jika desainnya tidak aman, perbaikan pada tingkat implementasi tidak akan cukup, karena kontrol keamanan yang diperlukan tidak pernah diterapkan sejak awal.
Tabel Faktor Insecure Design dalam OWASP Top 10

Beberapa kelemahan umum (CWEs) dalam kategori ini meliputi:
- CWE-209: Pembuatan pesan error yang mengandung informasi sensitif
- CWE-256: Penyimpanan kredensial yang tidak dilindungi
- CWE-501: Pelanggaran batas kepercayaan
- CWE-522: Kredensial tidak terlindungi dengan memadai
Deskripsi Insecure Design
Insecure design mencakup berbagai kelemahan seperti kontrol keamanan yang hilang atau tidak efektif. Kategori ini menunjukkan kegagalan dalam menentukan tingkat keamanan yang diperlukan berdasarkan profil risiko bisnis. Misalnya, aplikasi yang tidak memisahkan data pengguna atau tidak memiliki desain keamanan yang baik akan rentan terhadap serangan.
Manajemen Persyaratan dan Sumber Daya
- Kumpulkan dan negosiasikan kebutuhan bisnis: Pastikan aplikasi memenuhi kebutuhan terkait kerahasiaan, integritas, ketersediaan, dan otentikasi data.
- Rencanakan anggaran: Anggarkan untuk desain, pembangunan, pengujian, dan operasional, termasuk kegiatan keamanan.
- Profil risiko bisnis: Tentukan tingkat keamanan yang dibutuhkan berdasarkan tingkat eksposur aplikasi dan perlunya segregasi tenant serta kontrol akses.
Secure Design dan Secure Development Lifecycle
Desain Aman adalah proses yang terus menerus mengevaluasi ancaman dan memastikan bahwa kode dirancang untuk mencegah metode serangan yang diketahui.
- Threat modeling harus diterapkan dalam sesi perbaikan atau selama pengembangan cerita pengguna (user stories).
- Validasi asumsi dan alur kegagalan: Pastikan setiap skenario dipahami dengan baik oleh pihak terkait.
- Gunakan pembelajaran dari kesalahan masa lalu: Berikan insentif untuk mendorong perbaikan dan penerapan desain yang lebih aman.
Cara Mencegah Insecure Design
- Gunakan Secure Development Lifecycle (SDLC): Libatkan profesional keamanan aplikasi sejak awal proyek.
- Sediakan pustaka komponen dan pola desain aman: Komponen ini membantu tim mengikuti praktik keamanan terbaik.
- Gunakan threat modeling: Terutama untuk otentikasi, kontrol akses, dan logika bisnis utama.
- Integrasikan kontrol keamanan dalam user stories: Pastikan alur dan batasan yang jelas untuk setiap fungsi aplikasi.
- Segregasi lapisan sistem dan jaringan: Pastikan setiap lapisan aplikasi dipisahkan untuk mencegah akses tidak sah.
- Batasi konsumsi sumber daya: Hindari penggunaan sumber daya berlebih oleh pengguna atau layanan tertentu.
Contoh Serangan Insecure Design
Skenario 1: Workflow Pemulihan Kredensial Tidak Aman
Aplikasi menggunakan pertanyaan keamanan untuk memulihkan kata sandi, meskipun ini tidak direkomendasikan oleh NIST 800-63b dan OWASP ASVS. Pertanyaan dan jawaban tidak dapat diandalkan karena bisa diketahui lebih dari satu orang. Desain ini harus diganti dengan mekanisme pemulihan yang lebih aman, seperti pengiriman tautan reset ke email terdaftar.
Skenario 2: Eksploitasi Diskon Pemesanan Grup
Sebuah bioskop menawarkan diskon untuk pemesanan grup hingga 15 orang. Penyerang melakukan threat modeling dan mencoba memesan 600 kursi di seluruh jaringan bioskop dengan beberapa permintaan otomatis, menyebabkan kerugian besar bagi perusahaan karena pemesanan palsu.
Skenario 3: Serangan Bot pada Situs E-commerce
Sebuah situs ritel tidak memiliki perlindungan terhadap bot yang dijalankan oleh scalper untuk membeli kartu grafis berharga tinggi dan menjualnya di situs lelang. Serangan ini merusak reputasi produsen dan situs ritel. Desain anti-bot yang efektif, seperti pembatasan waktu transaksi dan kontrol domain logika, harus diterapkan untuk mengidentifikasi dan memblokir pembelian tidak sah.
Insecure design adalah ancaman kritis dalam keamanan aplikasi modern. Bahkan implementasi yang sempurna tidak akan efektif jika desain awalnya cacat. Oleh karena itu, sangat penting bagi organisasi untuk mengintegrasikan praktik keamanan sejak awal pengembangan aplikasi dan memastikan setiap langkah siklus hidup perangkat lunak melibatkan profesional keamanan.
Studi Kasus:
Salah satu contoh serangan nyata adalah penggunaan bot untuk membeli produk langka secara massal. Contoh ini menyoroti betapa pentingnya penerapan kontrol desain yang matang dan strategi anti-bot agar dapat menjaga keamanan dan reputasi bisnis.
Organisasi harus terus meningkatkan penerapan threat modeling, desain yang aman, dan audit reguler untuk meminimalkan risiko. Pada akhirnya, keamanan aplikasi bukan hanya tentang alat dan teknologi, tetapi juga tentang budaya kerja dan perbaikan berkelanjutan.















Comments are closed