Back to IF4053 Keamanan Perangkat Lunak

Attacker Mindset dan Operasionalisasi STRIDE

Questions/Cues

  • Apa perbedaan fundamental cara berpikir software engineer dan attacker?
  • Mengapa “The attacker does not read the README. They read the HTTP responses”?
  • Bagaimana ancaman STRIDE dioperasionalkan dari threat modeling ke testing nyata?
  • Threat STRIDE mana yang ditemukan lewat code review dan mana lewat fuzzing?
  • Mengapa fokus minggu ini pada Tampering, Elevation of Privilege, dan DoS?

Reference Points

  • IF4053 Keamanan Perangkat Lunak (W13 Attacker Mindset — bagian “Opening — The Core Shift & Module 1: From threat modeling to testing”)

Pergeseran Inti: Engineer vs Attacker

Inti minggu ini adalah pergeseran pola pikir (mindset shift). Seorang software engineer membangun perangkat lunak dengan membayangkan pengguna yang ingin perangkat lunaknya berhasil bekerja; seorang attacker justru berperan sebagai pengguna yang tidak menginginkannya bekerja. Kutipan pembuka deck merangkumnya: “The developer imagined a user who wants the software to work. Your job is to be the user who doesn’t.” Setiap pertanyaan engineer punya pasangan pertanyaan attacker yang membaliknya:

Software engineer berpikirAttacker berpikir
”Does this feature work?""What happens when I misuse this feature?"
"I validated the input""Which validator can I bypass?"
"Only admins can do this""What if I act like an admin without being one?"
"This error is harmless""What does this error reveal about the system?"
"Nobody would do that""That’s the first thing I’d try”

Kalimat kunci yang merangkum sikap ini: “The attacker does not read the README. They read the HTTP responses.” Artinya, attacker tidak peduli pada niat atau dokumentasi pembuat; ia menilai sistem dari perilaku nyata yang teramati — respons HTTP, kode status, ukuran body, dan pesan error — bukan dari apa yang seharusnya terjadi menurut spesifikasi.

Dari Threat Modeling (STRIDE) ke Testing

Pada minggu-minggu sebelumnya, ancaman telah dipetakan dengan STRIDE. Modul 1 mengoperasionalkannya (operationalise): menemukan ancaman tersebut di kode nyata dan membuktikan bahwa ancaman itu benar-benar ada, bukan sekadar mendaftarnya secara teoretis. Setiap kategori STRIDE dipetakan ke cara konkret menemukannya hari ini beserta tool-nya:

STRIDE threatHow we find it todayTool
TamperingTrace how inputs modify state (telusuri bagaimana input mengubah state)Code review
Elevation of privilegeFind missing or bypassable permission checksCode review
Information disclosureTrigger responses that leak dataFuzzing
Denial of serviceFind inputs that crash or exhaust resourcesFuzzing
SpoofingExamine how identity is verifiedCode review

Dua teknik inti membagi pekerjaan: code review unggul untuk ancaman yang bergantung pada logika dan posisi pengecekan (Tampering, EoP, Spoofing — yang harus dibaca langsung di sumber kode), sedangkan fuzzing unggul untuk ancaman yang muncul dari input tak terduga dalam jumlah besar (Information Disclosure, DoS — yang terungkap dengan mengamati perilaku saat dibanjiri input).

Fokus Minggu Ini: Tampering, EoP, DoS

Deck secara eksplisit memfokuskan pembahasan pada Tampering, Elevation of Privilege, dan Denial of Service — tiga kategori tempat code review dan fuzzing memberi hasil paling langsung (pay off most directly). Tampering dan EoP ditemukan dengan membaca kode (bagaimana input mengubah state, dan di mana pengecekan izin hilang atau bisa dilewati), sedangkan DoS ditemukan dengan fuzzing (input yang membuat sistem crash atau menghabiskan sumber daya). Inilah jembatan antara aktivitas desain (memodelkan ancaman) dan aktivitas praktik ofensif (membuktikannya).

flowchart LR
    S["STRIDE threats"] --> T["Tampering"]
    S --> E["Elevation of Privilege"]
    S --> I["Information Disclosure"]
    S --> D["Denial of Service"]
    S --> P["Spoofing"]
    T --> CR["Code review"]
    E --> CR
    P --> CR
    I --> FZ["Fuzzing"]
    D --> FZ

Summary

Minggu ini menanamkan attacker mindset: di mana engineer bertanya “apakah fitur ini bekerja?”, attacker bertanya “apa yang terjadi bila saya menyalahgunakannya?”, “validator mana yang bisa saya lewati?”, dan “apa yang dibocorkan error ini?” — karena attacker tidak membaca README, ia membaca respons HTTP. Modul 1 mengoperasionalkan STRIDE dari threat modeling menjadi testing nyata: Tampering (telusuri bagaimana input mengubah state) dan Spoofing (cara identitas diverifikasi) lewat code review; Elevation of Privilege (pengecekan izin yang hilang/dapat dilewati) lewat code review; Information Disclosure (respons yang membocorkan data) dan Denial of Service (input yang crash/menghabiskan sumber daya) lewat fuzzing. Fokus utama: Tampering, EoP, dan DoS, tempat code review dan fuzzing paling efektif.