Membangun Secure SDLC dengan security gates di tiap fase dan menguasai threat modeling STRIDE dari diagram hingga daftar mitigasi; episode ini mempraktikkan threat model lengkap terhadap fitur login aplikasi nyata menggunakan OWASP Threat Dragon sehingga kalian bisa langsung menerapkannya pada fitur tim kalian

Setelah di episode 1 kita memahami peran AppSec engineer dan posisinya di sepanjang SDLC, episode ini membahas dua instrumen paling fundamental untuk menjalankan peran itu: Secure SDLC (SSDLC) sebagai kerangka proses, dan threat modeling sebagai teknik analisisnya. Mengapa ini datang lebih dulu sebelum OWASP atau secure coding? Karena threat modeling menentukan apa yang perlu diamankan; tool dan teknik selanjutnya hanya bagaimana.
Kerentanan termahal adalah yang lahir dari desain yang salah — tidak ada patch yang bisa memperbaiki arsitektur tanpa authorization check. Menemukannya saat desain butuh satu rapat; setelah production, biayanya bisa lipat seratus. Di sinilah nilai AppSec engineer paling terasa.
SSDLC pada intinya sederhana: masukkan aktivitas security ke setiap fase pengembangan yang sudah ada, bukan sebagai fase terpisah di akhir. Bentuk paling praktisnya adalah security gates — kondisi yang harus lolos sebelum artifact berpindah fase:
| Fase | Aktivitas Security | Gate |
|---|---|---|
| Requirements | Definisi security requirements, klasifikasi data | Data sensitif teridentifikasi |
| Design | Threat modeling, review arsitektur | Mitigasi risiko HIGH didokumentasikan |
| Development | Secure coding standard, pre-commit hooks | Linter & secret scan bersih |
| Build/CI | SAST, SCA, image scan | Tidak ada critical baru |
| Testing | DAST, integration security test | Temuan HIGH diperbaiki |
| Release | Review akhir, sign artifact | Provenance & approval lengkap |
| Operations | Monitoring, patch SLA | Patch kritis ≤ SLA |
Prinsip penting: gate harus otomatis dan proporsional. Gate manual yang lambat akan disiasati; gate yang terlalu ketat akan dimatikan. Mulailah dari yang murah (secret scanning, dependency check) sebelum menambah yang mahal (full DAST per PR).
Note
SSDLC bukan dokumen formalitas. Jika organisasi kalian belum punya, mulailah dari versi minimalis: satu gate otomatis di CI + satu ritual threat modeling per fitur besar. Itu sudah melampaui mayoritas industri.
Threat modeling adalah proses sistematis menjawab empat pertanyaan (kerangka Adam Shostack):
Kuncinya kata sistematis. Tanpa metode, "berpikir seperti penyerang" hanya olah pikir acak yang hasilnya bergantung mood. Dengan metode, dua orang berbeda akan menemukan ancaman yang kurang lebih sama.
Mulailah dengan DFD sederhana: entitas eksternal, proses, penyimpanan data, dan trust boundary — garis tempat data melewati zona kontrol berbeda. Mayoritas kerentanan lahir tepat di trust boundary, karena di sanalah input tak terpercaya masuk ke zona tepercaya.
STRIDE adalah mnemonik enam kategori ancaman, masing-masing bertentangan dengan satu properti keamanan:
| Huruf | Ancaman | Melanggar | Contoh pada Fitur Login |
|---|---|---|---|
| Spoofing | Pemalsuan identitas | Autentikasi | Penyerang menebak/mencuri password |
| Tampering | Modifikasi data | Integritas | Manipulasi token sesi atau cookie |
| Repudiation | Penyangkalan aksi | Non-repudiation | Login gagal tidak dicatat log |
| Information Disclosure | Kebocoran data | Kerahasiaan | Pesan error membocorkan user valid |
| Denial of Service | Mematikan layanan | Availability | Flood endpoint login tanpa limit |
| Elevation of Privilege | Naik hak | Otorisasi | User biasa jadi admin via parameter |
Cara pakainya: telusuri tiap elemen DFD, tanyakan keenam kategori untuk masing-masing. Proses dengan input eksternal rentan Spoofing/Tampering; datastore rentan Information Disclosure; antrean rentan DoS. Ada heuristik bawaan Microsoft Threat Modeling Tool yang otomatis menyarankan ancaman per tipe elemen.
Mari kita jalankan lengkap pada fitur login standar: form email+password, session cookie, rate limiting via Redis, log audit.
Ancaman yang wajib muncul dalam daftar kalian:
role=admin → mitigasi: session state server-side, cookie ditandatangani./login menghabiskan koneksi DB → mitigasi: rate limit di edge, captcha bertingkat.Setiap baris ancaman harus punya mitigasi konkret dan pemiliknya. Ancaman tanpa mitigasi bukan temuan — itu cuma keluhan.
# Unduh dari owasp.org/www-project-threat-dragon
# Alternatif web: threatdragon.org (bisa simpan di GitHub repo)Pilihan lain: Microsoft Threat Modeling Tool (Windows, template Azure), OWASP pytm (threat model as code — bagus untuk versioning di Git), atau cukup whiteboard + template markdown jika tim kalian kecil. Format tidak penting; konsistensi yang penting.
Tip
Simpan threat model sebagai file di repository fitur terkait (markdown atau pytm). Ketika arsitektur berubah lewat PR, threat model ikut ter-review — inilah jembatan natural antara threat modeling dan code review yang kita bahas di episode 12.
Ukuran sukses threat modeling bukan kelengkapannya, tapi keputusan desain yang berubah karenanya. Jika tidak ada satu pun keputusan yang berubah, kemungkinan modelnya terlalu dangkal.
Inti yang harus dibawa pulang:
Di episode 3 selanjutnya kita bedah OWASP Top 10 secara detail — sepuluh kategori kerentanan aplikasi paling kritis, akar penyebabnya, dampak nyata, dan mitigasi konkretnya — fondasi kosakata yang akan dipakai di seluruh episode berikutnya. Sampai jumpa di episode 3!