Owasp Top 10 Series — A4 (Insecure Design) [Indonesia]

Muhamad Hidayat
6 min readJan 26, 2022

--

Assalamualaikum Wr Wb.

Pada article saya kali ini pada series Owasp Top 10, kali ini saya ingin menjelaskan tentang OWASP Top 10 urutan ke empat yaitu Insecure Design, sebelum ke inti topik, alangkah lebih baik saya membahas dulu apa itu Owasp & apa itu Owasp Top 10?

OWASP Foundation | Open Source Foundation for Application Security

OWASP singkatan dari Open Web Application Security Project, adalah sebuah project keamanan web aplikasi open source yang diperkasai oleh banyak penggiat teknologi & pengembang aplikasi, berguna untuk mengembangkan sebuah teknologi keamanan aplikasi, OWASP juga sering membuka forum diskusi, seminar, dan pendidikan untuk para pengembang aplikasi.

Apa itu OWASP TOP 10? owasp top 10 adalah pengkategorian sebuah resiko kerentanan yang sering terjadi pada sebuah aplikasi, diawali dari urutan teratas (dengan tingkat resiko tertinggi) sampai terbawah (tingkat resiko cukup rendah), chart seperti ini dibutuhkan oleh pengembang aplikasi untuk lebih aware terhadap kerentanan yang mungkin akan sering terjadi pada aplikasi-aplikasi yang di develop.

Salah satu yang akan saya bahas di artikel ini adalah urutan keempat

untuk tahun 2021, ialah Insecure Design.

source: All about Business Logic Flaws in Web Applications | LaptrinhX

Insecure Design adalah sebuah kerentanan yang berfokus pada kelemahan pada konsep / design dari sebuah arsitektur program, sebelum melakukan koding, pengembang diharuskan menerapkan beberapa prinsip salah satu nya adalah Secure By Design.

Secure By Design dalam dunia software engineering ialah sebuah software yang seharusnya memiliki kapabilitas di design cukup aman secara fundamental.

Disini kerentanan tersebut terjadi dikarenakan banyak pengembang aplikasi tidak menerapkan beberapa prinsip yang seharusnya sudah di persiapkan pra-koding, untuk meminimalisir dampak kerusakan pada aplikasi yang mungkin akan di sebabkan oleh sistem itu sendiri secara sengaja maupun tidak di sengaja.

Insecure Design termasuk kategori yang cukup luas karna dapat mewakili beberapa kerentanan yang ada, namun bukan berarti keseluruhan tentang tidak amanya design / arsitektur sistem itu terkait dengan top 10 diatas lainya, ada beberapa perbedaan mengenai Insecure Design dengan Insecure Implementation, karna keduanya memiliki akar penyebab dan cara perbaikan yang berbeda.

Insecure Design adalah kerentanan yang disebabkan cacat dalam menentukan / mendesign sebuah sistem yang aman, yang mana untuk hal ini akan sulit untuk melakukan perbaikan, dan memakan waktu serta resource lain.

Insecure Implementation adalah kerentanan yang disebabkan oleh pengembang yang tidak mengimplementasikan design yang sudah dibuat dengan prinsip Secure By Design, secara sengaja maupun tidak disengaja, untuk hal ini perbaikan tidak sesulit cacat design, dan tidak membutuhkan waktu yang lama dikarenakan pengembang tidak perlu merombak design yang sudah ada.

PRAKTIKAL

1. Pengimplementasian Verifikasi Tanya Jawab untuk Recovery Account

Terdapat kasus peretasan yang diakibatkan karena diterapkanya pertanyaan pengingat kata sandi untuk melakukan restorasi terhadap sebuah akun, dikarenakan di zaman internet saat ini kita dapat mengakses informasi apapun, dimanapun dan siapapun, terlebih lagi seperti yang kita tau di indonesia masih belum tersebar luas literasi mengenai data privacy, kesimpulan tersebut didasari oleh kabar dari beberapa portal berita yang mengabarkan terdapat banyaknya file fisik (kertas) KK, KTP, Akte Kelahiran di tempat-tempat yang terbuka (public) yang menyebabkan data tersebut dapat diakses oleh orang lain.

Bisa dibayangkan ketika anda men set pengingat password di akun anda dengan pertanyaan pengingat “Siapa nama ayah anda?”, dan orang lain sedang berbelanja bala-bala lalu menemukan kertas yang dipakai merupakan kartu keluarga kalian?, dengan mudah orang lain dapat merestorasi akun dengan informasi yang ada pada kertas tersebut.

Atau mungkin anda tipe orang yang sering melengkapi informasi akun 100% lengkap, mulai dari tanggal lahir, nama lengkap, anggota keluarga, nama peliharaan, tempat lahir, tempat pendidikan dll..

Bisa dibayangkan jika sistem pemulihan akun tersebut diterapkan?

Source: Password Recovery Questions Are Easy to Hack | Reader’s Digest

2. #78012 Sensitive server-side/application information disclosure (hackerone.com)

Dalam case kedua ini attacker mendapatkan sebuah informasi sensitif yang terdapat pada pesan error, hal tersebut terjadi dikarenakan pengembang tidak menggunakan error handler dengan baik.

Hal tersebut sering terjadi ketika user salah mengisi input seperti tidak sesuainya tipe data yang diminta, kurang nya jumlah character, atau user tidak sengaja mengisi null pada sebuah input request.

Berikut contoh pesan error yang berisi data sensitif seperti full path directory, informasi tersebut dapat digunakan attacker untuk menyusun rencana attack seperti directory transversal, SQL injection Into Outfile, LFI dll.

3. #215083 Cleartext Password returned in JSON response (hackerone.com)

Pada kasus ini ketika user meninput sebuah password, maka json akan merefleksikan password tersebut pada response, yang akan menyebabkan data tersebut akan tersimpan pada memory browser, jika pc user serang peretas, maka peretas dapat men-dump memory pada browser tersebut lalu mendapatkan sebuah string password.

Seperti saya sejelaskan sebelumnya, disini user mengisi password pada halaman change password.

Lalu user melihat sebuah response yang berisi password yang dia inputkan sebelumnya dengan cleartext (plain text).

Seperti yang terlihat, password yang terefleksikan sebelumnya ikut terinput pada memory browser dengan jelas.

NOTE:
Password tidak akan bisa hilang dari memory browser bahkan jika kita menghapus cache, namun selama data tersebut tidak terefleksikan pada HTTP, maka password tersebut tidak akan tersimpan kedalam memory, serta jika PC / Laptop di reboot / restart maka memory tersebut akan hilang.

Mitigasi

  • Tetap terapkan SDLC pada life cycle development, dan tetap lakukan pentesting / konsultasi security aplikasi untuk evaluasi.
  • Gunakan library terbaru dan establish.
  • Lakukan Threat Modeling untuk masalah access control, bussiness logic, Key flow dll.

source: A04 Insecure Design — OWASP Top 10:2021

Beberapa kerentanan lain di list CWE:

CWE-73 External Control of File Name or Path

CWE-183 Permissive List of Allowed Inputs

CWE-209 Generation of Error Message Containing Sensitive Information

CWE-213 Exposure of Sensitive Information Due to Incompatible Policies

CWE-235 Improper Handling of Extra Parameters

CWE-256 Unprotected Storage of Credentials

CWE-257 Storing Passwords in a Recoverable Format

CWE-266 Incorrect Privilege Assignment

CWE-269 Improper Privilege Management

CWE-280 Improper Handling of Insufficient Permissions or Privileges

CWE-311 Missing Encryption of Sensitive Data

CWE-312 Cleartext Storage of Sensitive Information

CWE-313 Cleartext Storage in a File or on Disk

CWE-316 Cleartext Storage of Sensitive Information in Memory

CWE-419 Unprotected Primary Channel

CWE-430 Deployment of Wrong Handler

CWE-434 Unrestricted Upload of File with Dangerous Type

CWE-444 Inconsistent Interpretation of HTTP Requests (‘HTTP Request Smuggling’)

CWE-451 User Interface (UI) Misrepresentation of Critical Information

CWE-472 External Control of Assumed-Immutable Web Parameter

CWE-501 Trust Boundary Violation

CWE-522 Insufficiently Protected Credentials

CWE-525 Use of Web Browser Cache Containing Sensitive Information

CWE-539 Use of Persistent Cookies Containing Sensitive Information

CWE-579 J2EE Bad Practices: Non-serializable Object Stored in Session

CWE-598 Use of GET Request Method With Sensitive Query Strings

CWE-602 Client-Side Enforcement of Server-Side Security

CWE-642 External Control of Critical State Data

CWE-646 Reliance on File Name or Extension of Externally-Supplied File

CWE-650 Trusting HTTP Permission Methods on the Server Side

CWE-653 Insufficient Compartmentalization

CWE-656 Reliance on Security Through Obscurity

CWE-657 Violation of Secure Design Principles

CWE-799 Improper Control of Interaction Frequency

CWE-807 Reliance on Untrusted Inputs in a Security Decision

CWE-840 Business Logic Errors

CWE-841 Improper Enforcement of Behavioral Workflow

CWE-927 Use of Implicit Intent for Sensitive Communication

CWE-1021 Improper Restriction of Rendered UI Layers or Frames

CWE-1173 Improper Use of Validation Framework

--

--