TDCTF Academy Logo TDCTF ACADEMY

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:

  1. Apa yang sedang kita bangun? - Memahami arsitektur, komponen, dan data flow.
  2. Apa yang bisa salah? - Mengidentifikasi potensi ancaman terhadap setiap komponen.
  3. Apa yang kita lakukan terhadap ancaman tersebut? - Menentukan mitigasi yang sesuai.
  4. 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:

  1. Define Objectives - Menentukan tujuan bisnis dan keamanan.
  2. Define Technical Scope - Memetakan arsitektur, komponen, dan dependensi.
  3. Decompose Application - Membuat data flow diagram dan trust boundary.
  4. Threat Analysis - Mengidentifikasi ancaman berdasarkan STRIDE atau skenario serangan.
  5. Vulnerability Analysis - Mencari kerentanan yang relevan untuk setiap ancaman.
  6. Attack Modeling - Membuat attack tree atau simulasi serangan.
  7. 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.

PADA HALAMAN INI