Giriş
Günümüzde dijital ortamların hızla gelişmesiyle birlikte, uygulama güvenliği giderek daha fazla önem kazanmaktadır. Tehdit modelleme, bu bağlamda, yazılım ve sistemlerin güvenlik zafiyetlerini belirleyip önlem almayı amaçlayan bir metodolojidir. Bu makale, tehdit modellemenin önemini ve temel adımlarını anlatarak, okuyuculara bu konuda derinlemesine bir anlayış sunmayı hedeflemektedir.
Genel Bakış
Tehdit modellemesi, belirli bir sistem hakkında eyleme geçirilebilir içgörüler elde etmek için kullanılan yapılandırılmış ve tekrarlanabilir bir süreçtir. Bir sistemi güvenlik perspektifinden modellemek, potansiyel tehditleri tanımlamayı ve bu tehditlere karşı nasıl önlemler alınabileceğini belirlemeyi içerir. Tehdit modellemesi, bir sistemi düşmanca bir bakış açısıyla analiz ederek, saldırganların sistemi nasıl istismar edebileceğine odaklanır.
Tehdit modellemesi, tasarım aşamasında olduğu gibi SDLC’nin başlarında ideal olarak gerçekleştirilmelidir. Bu bir kez yapılan ve unutulan bir iş değildir; sürekli olarak güncellenmesi ve rafine edilmesi gereken bir süreçtir. Eklenti gibi değil, SDLC sürecine standart ve gereksinim duyulan bir adımı olarak kabul edilmesi elzemdir.
Tehdit modelleme süreci şu dört soruyu yanıtlamalıdır:
Ne üzerinde çalışıyoruz?
Ne yanlış gidebilir?
Bu durumda ne yapacağız?
Yeterince iyi bir iş mi yaptık?
Tehdit Modelinin Avantajları
Tehdit modellemesinin sisteme baştan beri entegre edilmesi, riskler oluşmadan önce önlemler almanızı sağlar ve böylece sonradan güvenlik açıklarıyla uğraşma ihtiyacını azaltarak önemli bir zaman ve çaba tasarrufu sağlar.
Tehdit modellemesi, katılımcıların yaratıcı ve eleştirel düşünmelerini sağlar, onları güvenlik açısından “saldırgan gibi düşünmeye” ve genel güvenlik bilgilerini uygulamaya dökme konusunda teşvik eder. Bu süreç aynı zamanda üyelerin fikir alışverişi yapmasını ve geri bildirim sağlamasını teşvik ederek katılımcıların güvenlik farkındalığını arttırır.
Tehdit modellemeyi doğru bir şekilde gerçekleştirmek için, veri akışları, güven sınırları ve sistemdeki diğer unsurları anlamak önemlidir. Bu sayede, sistemin ve etkileşimlerinin daha iyi anlaşılmasıyla önemli bir bilgi birikimi elde edilebilir.
Tehdit Modelleme
Tehdit modelleme süreci için evrensel bir endüstri standardı bulunmamaktadır. Ancak çoğu yaklaşım sistem modelleme, tehdit tanımlama ve risk müdahalesi süreçlerini içerir.
Sistem Modelleme
Sistem modelleme, “ne inşa ediyoruz” sorusuna cevap verme amacını taşır. Bu adım, tehditleri doğru bir şekilde değerlendirebilmek için temel bir adımdır. Data flow diagrams(DFDs), sistem ve veri etkileşimlerini görselleştirmek için yaygın olarak kullanılır. Hangi yöntemi seçersek seçelim, sisteminizin güvenlik sınırlarını ve potansiyel saldırı noktalarını anlamamız önemlidir.
DFD’ler, IriusRisk, OWASP’ın Threat Dragon veya Microsoft’un Threat Modeling Tool gibi özel tehdit modelleme araçları içinde veya draw.io gibi genel amaçlı diyagram oluşturma çözümleri kullanılarak oluşturulabilir.
Draw.io da oluşturulan örnek bir DFD;
Tehdit Tanımlama
Sistem modellenip oluşturulduktan sonra, şimdi “ne yanlış gidebilir?” sorusu ele alınır. Bu aşama, sistemdeki tehditleri belirlemek ve sıralamak için yapılır. Tehdit modelleyiciler, bu soruya cevap bulmak için farklı veri kaynaklarına ve tekniklere başvurabilirler. Bu makalede Microsoft çalışanları tarafından geliştirilen STRIDE yöntemine odaklanılacaktır. STRIDE, tehditleri altı genel kategoriye gruplar ve mühendisleri, bu tehditlerin sisteme etkisini düşünmeye teşvik eder.
Response and Mitigations
Şimdi, hem sistem hem de ortaya çıkan tehditlerin anlaşılmasıyla beraber, “bu durumda ne yapmalıyız” sorusuna cevap vermemiz gerekiyor. Her tanımlanan tehdide karşı bir yanıt olmalıdır.
Mitigate: Tehdit gerçekleşme olasılığını azaltmak için uygulanacak aksiyon.
Eliminate: Tehdide neden olan özelliği veya bileşenin kaldırılması.
Transfer: Sorumluluğun başka bir kuruluşa aktarımı. (sigorta vs)
Accept: Riski kabul edin. (iş gereksinimleri veya kısıtlamaları bu seçeneklerden herhangi birini uygulamayı zorunlu kılar.)
İnceleme ve Doğrulama
Son olarak, “yeterince iyi bir iş yaptık mı” sorusuna cevap vermeliyiz. Tehdit modeli, sadece geliştirme veya güvenlik ekipleri tarafından değil, tüm paydaşlar tarafından gözden geçirilmelidir. Odaklanılacak alanlar şunları içerir:
DFD sistemi doğru bir şekilde yansıtıyor mu?
Tüm tehditler tespit edildi mi?
Tanımlanan her tehdit için bir müdahale stratejisi üzerinde anlaşmaya varıldı mı?
Hafifletme stratejileri, belirlenen tehditlerin riskini kabul edilebilir bir seviyeye indiriyor mu?
Tehdit modeli resmi olarak belgelendi mi? Süreçten elde edilen veriler, erişilebilir şekilde saklanıyor mu?
Anlaşılan çözümler test edilebilir mi? Tehdit modelinden gelen gereksinimlerin başarısı veya başarısızlığı ölçülebilir mi?
Sonuç: Tehdit Modellemeyi Kurumsal Bir Kültüre Dönüştürmek
Bu makalede, SDLC sürecinde tehdit modellemenin önemini ve temel adımlarını basit bir şekilde ele aldık. Fakat tehdit modelleme, bundan çok daha fazlasını ifade eder. Etkili bir şekilde uygulanması için sadece SDLC ile sınırlı kalmayıp, firmaların genel kültürüne entegre edilmesi gerekir. Bu sayede, kısa ve uzun vadede tüm süreçlerimizde güvenliği artırabilir ve riskleri en aza indirebiliriz.
Aslında günlük hayatımızda da farkında olmadan tehdit modellemeyi sıklıkla uygularız. Örneğin, sabah evden çıkıp işe arabayla gitmeden önce lastiklerin hava basıncını kontrol etmemiz, ayna ayarlarını yapmamız ve emniyet kemerimizi takmamız da birer tehdit modelleme örneğidir.
Bu basit işlem için herhangi bir DFD (Data flow diagrams) kullanmaya ihtiyaç duymasak da, projelerimizdeki karmaşık yapıdan dolayı tüm detayları aklımızda tutmamız mümkün değildir. Bu nedenle, Notepad++ gibi metin editörlerinde tutmak yerine, kurumsal tehdit modelleme araçlarını kullanmak çok daha sürdürülebilir ve etkili bir çözüm olacaktır.
Bazı kurumsal tehdit modelleme araçları şunlardır:
IriusRisk
OWASP Threat Dragon
Microsoft Threat Modeling Tool (MSTMT)
Threat Modeling Tool (TMT)
IBM Security Verify Threat Modeling
Makalemi okuduğunuz için teşekkür ederim. Başka bir yazıda tekrar görüşmek dileğiyle!