İçeriğe geç
Educora
Üniversite25 dk10 / 12

STRIDE ile tehdit modelleme

Bir sistemi veri akış diyagramıyla modelle, tehditleri STRIDE ile sistemli biçimde bul, riskleri SLE, ARO ve ALE ile parasal olarak değerlendir ve bir önlemin kendini amorti edip etmediğini hesapla.

Kendini test et
Bu derste öğreneceklerin
  • 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.

  1. Ne üzerinde çalışıyoruz? — sistemin modeli.
  2. Ne ters gidebilir? — tehdit listesi (STRIDE).
  3. Bununla ilgili ne yapacağız? — önlemler ve öncelikler.
  4. İ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

HarfTehditBozulan özellikTipik önlem
SKimlik sahteciliği (Spoofing)kimlik doğrulamaMFA, sertifikalar, güçlü kimlik doğrulama
TKurcalama (Tampering)bütünlükTLS, imzalar, MAC, erişim yetkileri
Rİnkâr (Repudiation)inkâr edilemezlikdenetim kayıtları, zaman damgaları, imzalar
IBilgi ifşası (Information disclosure)gizlilikşifreleme, erişim kontrolü, veri en aza indirme
DHizmet engelleme (Denial of service)erişilebilirlikistek sınırları, kotalar, yedeklilik
EYetki yükseltme (Elevation of privilege)yetkilendirmeen 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.

Python
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
Dört öğeli küçük bir giriş sistemi için 2 + 6 + 3 + 3 = 14 tehdit sorusu çıkar. Gerçek bir projede diyagram büyüdükçe bu liste bir araçla (örneğin OWASP Threat Dragon) tutulur.
Örnek 1: parola sıfırlamanın STRIDE analizi

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
S: belirteci tahmin edip başkasının parolasını belirlemek → en az 128 bitlik, kısa ömürlü rastgele belirteç.
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ı.

SLE = AV × EF
burada:
  • 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
ALE = SLE × ARO
burada:
  • 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 = ALE₀ − ALE₁ − C
burada:
  • 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.

Örnek 2: MFA buna değer mi?

Öğ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
SLE = 80.000 · 0,25 = 20.000 manat.
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.

Alıştırma

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.

Alıştırma · Python
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.

1 / 10
Bir müşteri sipariş verdiğini inkâr ediyor ve sistemde hiç kayıt yok. Bu hangi STRIDE kategorisidir?