- Bir sistemin DFD modelini kurmak ve güven sınırlarını göstermek
- STRIDE kategorilerini öğelere uygulayıp bir tehdit listesi çıkarmak
- SLE, ARO, ALE ve net faydayı hesaplamak
- Her tehdit için uygun bir önlem seçmek
Bir mimar evi inşa etmeden önce hırsızın hangi pencereden girebileceğini düşünür, çünkü projede parmaklık çizmek duvarı yıkmaktan ucuzdur. Tehdit modelleme yazılım için aynı işi yapar: sistem henüz tasarım aşamasındayken nelerin ters gidebileceğini sistemli biçimde bulur. OWASP Top 10'daki “güvensiz tasarım” kategorisi tam da bu adımın atlanmasından doğar.
- Ne üzerinde çalışıyoruz? — sistemin modeli.
- Ne ters gidebilir? — tehdit listesi (STRIDE).
- Bununla ilgili ne yapacağız? — önlemler ve öncelikler.
- İyi bir iş çıkardık mı? — doğrulama ve gözden geçirme.
Veri akış diyagramı ve güven sınırları
Model genellikle bir veri akış diyagramı (DFD) olarak çizilir. Dört öğesi vardır: dış varlık (kullanıcı, başka bir sistem), süreç (kod), veri deposu (veri tabanı, dosya) ve veri akışı (ok). Beşinci önemli kavram güven sınırıdır: güven düzeyinin değiştiği çizgi, örneğin internet ile sunucu arasında. Tehditler en çok sınırları geçen akışlarda toplanır.
STRIDE: altı tehdit kategorisi
| Harf | Tehdit | Bozulan özellik | Tipik önlem |
|---|---|---|---|
| S | Kimlik sahteciliği (Spoofing) | kimlik doğrulama | MFA, sertifikalar, güçlü kimlik doğrulama |
| T | Kurcalama (Tampering) | bütünlük | TLS, imzalar, MAC, erişim yetkileri |
| R | İnkâr (Repudiation) | inkâr edilemezlik | denetim kayıtları, zaman damgaları, imzalar |
| I | Bilgi ifşası (Information disclosure) | gizlilik | şifreleme, erişim kontrolü, veri en aza indirme |
| D | Hizmet engelleme (Denial of service) | erişilebilirlik | istek sınırları, kotalar, yedeklilik |
| E | Yetki yükseltme (Elevation of privilege) | yetkilendirme | en az yetki, girdi doğrulama, yalıtım |
Öğe başına STRIDE yaklaşımında her DFD öğesine yalnızca ona uyan harfler uygulanır: dış varlığa S ve R, sürece altısı birden, veri akışına ve veri deposuna T, I ve D (depo kayıt tutuyorsa R de). Böylece tehdit soruları listesi hem eksiksiz hem de yönetilebilir olur.
STRIDE = {
'S': 'Spoofing', 'T': 'Tampering', 'R': 'Repudiation',
'I': 'Information disclosure', 'D': 'Denial of service',
'E': 'Elevation of privilege',
}
PER_ELEMENT = {
'external entity': 'SR',
'process': 'STRIDE',
'data store': 'TID',
'data flow': 'TID',
}
diagram = [
('Student browser', 'external entity'),
('Login API', 'process'),
('Users DB', 'data store'),
('Browser -> API', 'data flow'),
]
total = 0
for name, kind in diagram:
letters = PER_ELEMENT[kind]
total += len(letters)
print(name.ljust(16), kind.ljust(16), letters)
print('Threat questions to answer:', total)
print('For the process:', ', '.join(STRIDE[c] for c in PER_ELEMENT['process']))▸ Beklenen çıktı
Student browser external entity SR Login API process STRIDE Users DB data store TID Browser -> API data flow TID Threat questions to answer: 14 For the process: Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege
Kullanıcı e-postasını yazar, sunucu bir belirteçli (token) bağlantı gönderir ve bağlantı açılınca yeni parola belirlenir. Her STRIDE harfi için bir tehdit ve bir önlem bul.
Çözümü gösterÇözümü gizle
T: bağlantıdaki kullanıcı kimliğini değiştirmek → belirteç sunucuda belirli bir hesaba bağlanır.
R: “parolamı ben değiştirmedim” anlaşmazlığı → zaman, IP ve olay kayda geçirilir.
I: “e-posta bulunamadı” yanıtı hangi hesapların var olduğunu ele verir → her zaman aynı yanıt.
D: binlerce sıfırlama e-postası göndermek → kullanıcı ve IP başına sınır.
E: bir belirteci yeniden kullanarak yönetici hesabını ele geçirmek → tek kullanımlık belirteç, sıfırlamadan sonra tüm oturumlar kapatılır.
Önceliklendirme: parayla risk
Tehdit listesi genellikle bütçeden uzundur. Nitel yöntem R = L × I matrisidir. Nicel yöntem ise beklenen yıllık kaybı parayla ifade eder. Mantığı olasılık kuramındaki beklenen değerdir: bir olayın kaybı × yılda beklenen olay sayısı.
- SLEtek olay kayıp beklentisi (single loss expectancy), manat cinsinden
- AVvarlık değeri (asset value), manat cinsinden
- EFmaruz kalma faktörü: bir olayda kaybedilen pay, 0 ile 1 arasında
- ALEyıllık kayıp beklentisi (annualised loss expectancy), yılda manat
- AROyıllık gerçekleşme oranı (annualised rate of occurrence): 0,5 = iki yılda bir, 2 = yılda iki kez
- NBönlemin yıllık net faydası, yılda manat
- ALE₀, ALE₁önlemden önceki ve sonraki yıllık kayıp beklentisi
- Cönlemin yıllık maliyeti, yılda manat
NB > 0 ise önlem kendini amorti eder.
Öğrenci veri tabanının değeri (cezalar ve itibar dâhil) 80.000 manattır. Toplu hesap ele geçirme her seferinde bu değerin %25'ini yok ediyor ve yılda 2 kez oluyor. MFA ve istek sınırlama yılda 15.000 manata mal oluyor ve sıklığı 0,2'ye düşürüyor. Önlem buna değer mi?
Çözümü gösterÇözümü gizle
ALE₀ = 20.000 · 2 = 40.000 manat/yıl.
ALE₁ = 20.000 · 0,2 = 4.000 manat/yıl.
NB = 40.000 − 4.000 − 15.000 = 21.000 manat/yıl > 0.
Sonuç: önlem yılda yaklaşık 21.000 manat tasarruf sağlar, uygulanmalıdır.
Bağlantılar: tehdit modelleme, güvenli yazılım geliştirme yaşam döngüsünün (örneğin Microsoft SDL) standart bir adımıdır. STRIDE'ın yanında saldırı ağaçları, PASTA metodolojisi ve gizlilik tehditleri için LINDDUN kullanılır. Aynı düşünce biçimi mühendislikteki emniyet analizinde ve bankaların operasyonel risk yönetiminde de işe yarar.
Bir sunucu odasının değeri 80.000 manat, EF = 0,25, önlemsiz ARO = 2, önlemle ARO = 0,2 ve önlemin yıllık maliyeti 15.000 manattır. SLE'yi, ALE'yi (önce ve sonra) ve net faydayı hesapla ve verilen biçimde yazdır.
asset_value = 80_000 # AZN
exposure_factor = 0.25
aro_before = 2
aro_after = 0.2
control_cost = 15_000 # AZN per year
# compute sle, ale_before, ale_after and print:
# SLE: ...
# ALE before: ...
# ALE after: ...
# Net benefit: ...▸ Beklenen çıktı
SLE: 20000.0 ALE before: 40000.0 ALE after: 4000.0 Net benefit: 21000.0
Önemli noktalar
- Tehdit modelleme dört sorudur: ne inşa ediyoruz, ne ters gidebilir, ne yapacağız, iyi yaptık mı.
- DFD öğeleri: dış varlık, süreç, depo, akış; tehditler güven sınırlarında toplanır.
- Her STRIDE harfi bir özelliği bozar: S–kimlik doğrulama, T–bütünlük, R–inkâr edilemezlik, I–gizlilik, D–erişilebilirlik, E–yetkilendirme.
- SLE = AV × EF, ALE = SLE × ARO, NB = ALE₀ − ALE₁ − C; NB > 0 olduğunda önlem buna değer.
- C > ALE₀ ise önlem asla kendini amorti edemez.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.