Scanner hanya menemukan kerentanan pada kode yang sudah ditulis, threat modeling menemukan desain yang salah sebelum ada kodenya; di episode ini kalian mempelajari STRIDE, menggambar data flow diagram untuk fitur nyata, memetakan mitigasi per ancaman, dan menjadikan threat model artefak hidup di pipeline bukan rapat tahunan

Semua tool pada episode 3-13 punya batas yang sama: mereka menganalisis kode atau infrastruktur yang sudah ada. Tidak satu pun bisa menjawab pertanyaan paling mahal dalam security: apakah desainnya benar dari awal? Fitur dengan arsitektur cacat — misal token reset password yang dikirim lewat URL tanpa expiry — akan lolos semua scanner karena tidak ada "vulnerability pattern" di kodenya; desainnya memang begitu.
Threat modeling adalah disiplin menemukan masalah ini saat fase desain, ketika memperbaikinya masih berarti menggeser kotak diagram, bukan menulis ulang sistem. Ini juga skill yang membedakan senior DevSecOps engineer: ia tahu scanner tidak cukup.
Adam Shostack merangkum threat modeling menjadi empat pertanyaan:
Kerangka ini penting karena threat modeling sering gagal jadi sesi filosofis tanpa output. Dengan empat pertanyaan ini, hasilnya selalu konkret: diagram + daftar ancaman + keputusan mitigasi.
Mulai dari gambar sederhana: proses, datastore, external entity, dan aliran data — plus trust boundary (garis tempat tingkat kontrol berubah):
Aturan membacanya: setiap panah yang melintasi trust boundary adalah calon titik serangan; setiap datastore punya pertanyaan authN/authZ/enkripsi sendiri. Diagram ini juga menjadi bahasa bersama antara developer, security, dan architect — diskusi "di mana input user divalidasi?" langsung punya objek visual.
STRIDE adalah taksonomi enam kategori ancaman — mnemonic dari inisialnya:
| Huruf | Ancaman | Contoh Nyata | Mitigasi Tipikal |
|---|---|---|---|
| S | Spoofing | Token API dicuri dipakai penyerang | MFA, mutual TLS, short-lived credential |
| T | Tampering | Payload order dimodifikasi di transit | Signature/HMAC, integritas transport |
| R | Repudiation | User menyangkal transaksi | Audit log tamper-proof |
| I | Information Disclosure | Error message bocorkan stack trace | Minimalkan verbose error, enkripsi at rest |
| D | Denial of Service | Flood endpoint search mahal | Rate limit, autoscaling, WAF |
| E | Elevation of Privilege | IDOR jadi admin access | RBAC ketat, authorization check terpusat |
Cara pakainya sistematis: telusuri setiap elemen DFD, cocokkan keenam huruf, tulis apa pun yang relevan. Proses → S/T/R/E; Datastore → T/I/R; Aliran lintas boundary → semuanya. Tool seperti OWASP Threat Dragon otomatis menyodorkan checklist STRIDE per elemen diagram.
Contoh ringkas untuk fitur "upload avatar":
Elemen : Browser -> API /upload -> S3 bucket avatars
S : Upload atas nama user lain? -> wajib session check server-side
T : Content-Type dipalsukan (.exe) -> validasi magic bytes + re-encode
I : Bucket publik membocorkan foto -> private bucket + signed URL TTL
D : Upload 2GB x 1000 concurrent -> limit ukuran + presigned POST limit
E : Path traversal menulis keluar dir-> generate nama file server-side
R : Sangkalan upload ilegal -> log audit user+file hash+timestampPerhatikan bentuk output idealnya: tabel pendek, tiap baris = ancaman + mitigasi spesifik. Ini bukan dokumen puluhan halaman — threat model yang terpakai adalah yang bisa ditulis dalam satu sesi 30-60 menit.
Tip
Jalankan threat modeling sebagai bagian dari design review PR/dokumen RFC: tambahkan section "Security considerations & threat model" di template design doc. Tim yang sudah terbiasa akan menuliskannya sendiri — dan di situlah budaya security benar-benar shift-left.
Agar tidak mati sebagai dokumen sekali-baca:
docs/threat-model/) bersama kode yang dimodelkan — ikut tereview, ikut versi.Poin 4 adalah jembatan paling kuat antara threat modeling dan DevSecOps automation: daftar ancaman hari ini menjadi daftar gate esok hari.
Inti yang harus dibawa pulang:
Di episode 15 selanjutnya kita membahas Security as Code — prinsip yang menyatukan semua episode sebelumnya: policy, detection, konfigurasi security diperlakukan persis seperti software — versioned, direview, ditest, dan dirilis dari satu repo security. Sampai jumpa!