Threat Modeling
Pendahuluan
Threat modeling adalah proses sistematis untuk mengidentifikasi, menganalisis, dan memitigasi potensi ancaman keamanan terhadap suatu sistem. Dalam konteks DevSecOps, threat modeling menjadi aktivitas kunci di fase desain Secure SDLC - memungkinkan tim untuk menemukan dan menambal kelemahan arsitektural sebelum kode ditulis.
Threat modeling menjawab empat pertanyaan mendasar:
- Apa yang sedang kita bangun? - Memahami arsitektur, komponen, dan data flow.
- Apa yang bisa salah? - Mengidentifikasi potensi ancaman terhadap setiap komponen.
- Apa yang kita lakukan terhadap ancaman tersebut? - Menentukan mitigasi yang sesuai.
- Apakah mitigasi kita sudah cukup? - Memvalidasi bahwa risiko residual masih dalam batas yang bisa diterima.
Dengan melakukan threat modeling secara teratur, organisasi dapat mengurangi attack surface, memprioritaskan investasi keamanan, dan membangun security awareness di seluruh tim engineering.
Metodologi Threat Modeling
Beberapa metodologi threat modeling yang populer di industri, masing-masing dengan pendekatan dan fokus yang berbeda:
1. STRIDE
STRIDE adalah metodologi yang dikembangkan oleh Microsoft, mengklasifikasikan ancaman ke dalam enam kategori:
| Kategori | Definisi | Contoh | Kontrol Keamanan |
|---|---|---|---|
| Spoofing | Penyamaran identitas | Attacker login sebagai admin palsu | Autentikasi multi-faktor, sertifikat |
| Tampering | Modifikasi data tanpa izin | Manipulasi field harga di request API | Integrity check, digital signature |
| Repudiation | Penyangkalan atas tindakan | User menyangkal telah melakukan transaksi | Audit logging, non-repudiation |
| Information Disclosure | Kebocoran informasi | Data pribadi bocor via error message | Enkripsi, access control |
| Denial of Service | Penolakan layanan | Flood request ke endpoint login | Rate limiting, auto-scaling |
| Elevation of Privilege | Eskalasi hak akses | User biasa bisa akses panel admin | RBAC, principle of least privilege |
STRIDE paling cocok untuk aplikasi berbasis web dan API. Setiap ancaman dipetakan ke elemen data flow diagram (DFD) - proses, data store, data flow, external entity, trust boundary.
Penerapan STRIDE: Untuk setiap elemen dalam DFD, tim menanyakan "apakah elemen ini rentan terhadap [kategori STRIDE]?" Misalnya, untuk sebuah data store database: bisa Tampered (data diubah tanpa otorisasi)? Bisa Information Disclosure (data bocor jika database diretas)? Bisa Denial of Service (database kewalahan oleh query)? Dan seterusnya.
2. DREAD
DREAD adalah sistem risk rating untuk memprioritaskan ancaman yang telah diidentifikasi. Setiap ancaman dinilai dari 1 hingga 10 pada lima dimensi:
| Dimensi | Pertanyaan |
|---|---|
| Damage Potential | Seberapa besar kerusakan jika ancaman terjadi? |
| Reproducibility | Seberapa mudah ancaman direproduksi? |
| Exploitability | Seberapa mudah ancaman dieksploitasi? |
| Affected Users | Berapa banyak user yang terdampak? |
| Discoverability | Seberapa mudah ancaman ditemukan attacker? |
Nilai total (dari 50) kemudian dikategorikan: High (40-50), Medium (20-39), Low (di bawah 20). Meskipun DREAD banyak digunakan, metodologi ini mendapat kritik karena sifat subjektif dari penilaiannya. OWASP merekomendasikan untuk menggunakannya sebagai alat bantu diskusi, bukan sebagai metrik absolut.
3. PASTA
Process for Attack Simulation and Threat Analysis (PASTA) adalah metodologi berbasis risiko yang terdiri dari tujuh tahap:
- Define Objectives - Menentukan tujuan bisnis dan keamanan.
- Define Technical Scope - Memetakan arsitektur, komponen, dan dependensi.
- Decompose Application - Membuat data flow diagram dan trust boundary.
- Threat Analysis - Mengidentifikasi ancaman berdasarkan STRIDE atau skenario serangan.
- Vulnerability Analysis - Mencari kerentanan yang relevan untuk setiap ancaman.
- Attack Modeling - Membuat attack tree atau simulasi serangan.
- Risk & Impact Analysis - Menilai risiko dan menentukan mitigasi.
PASTA lebih cocok untuk aplikasi enterprise dan berbasis risiko tinggi, karena pendekatannya yang terstruktur dan berbasis bukti.
4. LINDDUN
LINDDUN adalah metodologi yang berfokus pada ancaman privasi. Dikembangkan oleh KU Leuven, LINDDUN mengklasifikasikan ancaman privasi ke dalam tujuh kategori:
| Kategori | Deskripsi |
|---|---|
| Linkability | Dua atau lebih data tentang subjek yang sama bisa dihubungkan |
| Identifiability | Subjek bisa diidentifikasi dari data |
| Non-repudiation | Subjek tidak bisa menyangkal tindakan |
| Detectability | Keberadaan subjek bisa dideteksi |
| Disclosure of Information | Informasi pribadi bocor ke pihak tak berwenang |
| Unawareness | Subjek tidak sadar data mereka dikumpulkan |
| Non-compliance | Pelanggaran regulasi privasi seperti GDPR |
LINDDUN sangat relevan untuk aplikasi yang menangani Personal Identifiable Information (PII), seperti aplikasi kesehatan, fintech, atau platform sosial media.
Proses Threat Modeling: Langkah demi Langkah
Langkah 1: Diagram Data Flow
Langkah pertama dan paling penting adalah membuat Data Flow Diagram (DFD). DFD memetakan bagaimana data bergerak melalui sistem:
- External Entity: Pengguna eksternal, sistem pihak ketiga (kotak persegi).
- Process: Komponen yang memproses data (lingkaran atau persegi panjang).
- Data Store: Tempat penyimpanan data seperti database, file system (silinder).
- Data Flow: Arah perpindahan data antar elemen (panah).
- Trust Boundary: Garis imajiner yang memisahkan zona kepercayaan berbeda - misalnya batas antara internet dan internal network.
Contoh DFD untuk Web App Sederhana:
[User Browser] --(HTTPS)--> [Load Balancer] --(HTTP)--> [Web Server]
|
[Database]
Trust boundary berada antara User Browser dan Load Balancer (internet vs internal), dan antara Web Server dengan Database (aplikasi vs storage).
Langkah 2: Identifikasi Threats
Gunakan STRIDE untuk menganalisis setiap elemen DFD. Contoh untuk web app:
| Elemen DFD | STRIDE Threat | Skenario |
|---|---|---|
| User Login Process | Spoofing | Attacker menggunakan credential yang dicuri |
| API Gateway | Tampering | Manipulasi payload JSON di transit |
| Database | Information Disclosure | SQL injection mengekspos data sensitif |
| Session Store | DoS | Flood session creation menghabiskan memori |
| Admin Panel | Elevation of Privilege | User biasa mengakses endpoint admin |
Langkah 3: Menentukan Mitigasi
Setiap ancaman harus memiliki mitigasi yang jelas. Prioritas ditentukan oleh risk rating (gabungan likelihood dan impact):
| Risiko | Tindakan |
|---|---|
| Critical | Harus dimitigasi sebelum rilis. Alternatif: desain ulang. |
| High | Mitigasi wajib. Bisa ditunda paling lambat rilis berikutnya. |
| Medium | Mitigasi direncanakan di backlog. |
| Low | Diterima atau dimitigasi jika sumber daya mencukupi. |
Tools Threat Modeling
Microsoft Threat Modeling Tool
Tool gratis dari Microsoft yang menggunakan metodologi STRIDE. Fitur utama:
- Template DFD yang sudah siap pakai (stencils).
- Pembuatan DFD secara drag-and-drop.
- Generator laporan ancaman otomatis berdasarkan DFD.
- Integrasi dengan Azure Security Benchmark.
Cara pakai: Gambar DFD aplikasi dengan stensil yang disediakan. Tool akan secara otomatis mengidentifikasi potensi ancaman untuk setiap elemen. Hasilnya berupa laporan yang bisa diekspor ke Excel atau PDF.
Kelemahan: Hanya berjalan di Windows. Template agak ketinggalan untuk arsitektur cloud-native modern.
OWASP Threat Dragon
Tool open-source dan cross-platform (Windows, macOS, Linux) yang mendukung STRIDE dan LINDDUN. Tersedia sebagai desktop app dan web app.
Fitur utama:
- Diagram Editor: Pembuatan DFD dengan antarmuka web yang modern.
- Threat Library: Basis data ancaman yang bisa dikustomisasi.
- OWASP Integration: Terintegrasi dengan OWASP Top 10 untuk referensi kerentanan.
- Export: Ekspor ke JSON, PDF, atau Markdown untuk disimpan di repository bersama kode.
- Version Control Friendly: Format file berbasis JSON sehingga bisa di-track dengan Git.
Cara pakai: Buka Threat Dragon, buat diagram baru, tambahkan komponen dan koneksi. Klik kanan pada elemen untuk menambahkan ancaman. Threat Dragon akan menyarankan ancaman berdasarkan tipe elemen.
OWASP Cornucopia
OWASP Cornucopia adalah card game edukasional untuk threat modeling. Setiap kartu mewakili ancaman spesifik berdasarkan STRIDE. Cocok digunakan dalam sesi workshop atau sprint planning untuk melibatkan seluruh tim - termasuk non-teknis (product owner, QA, business analyst).
Cara pakai: Tim duduk melingkar. Setiap anggota mengambil kartu secara bergiliran. Kartu berisi pertanyaan ancaman yang memicu diskusi. Misalnya, kartu "Spoofing" berisi pertanyaan: "Bagaimana jika attacker bisa memalsukan identitas user di halaman login?"
Threat Modeling di CI/CD
Untuk DevSecOps, threat modeling juga perlu diotomatisasi. Beberapa pendekatan:
- GitOps for Threat Models: Simpan diagram dalam format JSON/YAML di repository. Setiap pull request yang mengubah arsitektur memicu review threat modeling.
- Automated Threat Generation: Gunakan tool seperti ThreatSpec atau iriusRisk yang membaca kode dan konfigurasi infrastruktur untuk secara otomatis menghasilkan threat model.
- Threat Modeling as Code: Tuliskan threat model dalam file teks (YAML/JSON) yang bisa di-review seperti kode biasa.
Contoh Aplikasi Threat Modeling
1. Web App Sederhana (Monolith)
Sistem: Aplikasi e-commerce dengan frontend React dan backend Django REST Framework.
DFD: Browser User --(HTTPS)--> Nginx --(uWSGI)--> Django App --(SQL)--> PostgreSQL
Ancaman Kritis:
| Threat | STRIDE | Mitigasi |
|---|---|---|
| SQL Injection pada search | Tampering | Input validation + parameterized query |
| Session hijacking via cookie | Spoofing | HttpOnly + Secure flag + CSRF token |
| Brute force login | DoS | Rate limiting + account lockout |
| Data cardholder bocor | Information Disclosure | Enkripsi database + tokenization |
Hasil Mitigasi: Django sudah memiliki CSRF protection dan ORM untuk parameterized query secara default. Perlu menambahkan django-ratelimit untuk rate limiting dan django-axes untuk brute force protection.
2. REST API (Microservices)
Sistem: API Gateway yang meneruskan request ke beberapa microservice (User Service, Order Service, Payment Service) yang berkomunikasi via gRPC.
DFD: Client --(HTTPS/JWT)--> API Gateway --(gRPC/mTLS)--> [User Service, Order Service, Payment Service]
Ancaman Kritis:
| Threat | STRIDE | Mitigasi |
|---|---|---|
| Broken Object Level Authorization (BOLA) | Elevation of Privilege | OPA (Open Policy Agent) untuk authorization |
| JWT theft | Spoofing | Short-lived token + refresh token rotation |
| Service-to-service impersonation | Spoofing | mTLS + SPIFFE/SPIRE untuk identity |
| API key leakage via logs | Information Disclosure | Log sanitization, secrets management |
Hasil Mitigasi: Setiap microservice harus memvalidasi token secara independen. API Gateway bertanggung jawab untuk autentikasi, sementara authorization didelegasikan ke service masing-masing atau OPA.
3. Microservices dengan Event-Driven Architecture
Sistem: Sistem pemrosesan order menggunakan Kafka sebagai message broker, dengan consumer yang memproses event secara asynchronous.
DFD: [Order Service] --(Kafka Topic)--> [Payment Service] --> [Warehouse Service]
Ancaman Kritis:
| Threat | STRIDE | Mitigasi |
|---|---|---|
| Data tampering di Kafka topic | Tampering | Message signing + Kafka TLS encryption |
| Event replay attack | Tampering | Idempotency key + deduplication |
| Privilege escalation via event | Elevation of Privilege | Schema validation + event integrity check |
| Sensitive data in event payload | Information Disclosure | Event schema design, field-level encryption |
Kesimpulan
Threat modeling adalah investasi intelektual yang membayar dividen keamanan berkali-kali lipat. Dengan mengidentifikasi ancaman di fase desain, tim dapat menghindari redesign mahal di kemudian hari. Pilih metodologi yang sesuai dengan konteks organisasi:
- STRIDE untuk pendekatan standar dan komprehensif - ini yang paling umum digunakan.
- PASTA jika organisasi membutuhkan pendekatan berbasis risiko yang lebih formal.
- DREAD untuk memprioritaskan ancaman secara cepat.
- LINDDUN jika fokus utama adalah privasi data pengguna.
Mulailah dengan tool sederhana seperti OWASP Threat Dragon, dan biasakan threat modeling sebagai agenda tetap di setiap sprint planning atau design review. Semakin sering dilakukan, semakin tajam security intuition tim.