Makale Özeti

Daha önce ne olduğumuzu anlattığımız tehdit modellemenin sürecini de bu yazımızda işliyoruz.

Makale

Tehdit modelleme, uygulama geliştirme sürecinin bir noktasında bir kereliğine yapılan bir iş değil, daha başlarda başlayan ve tüm uygulama geliştirme boyunca yinelemeli olarak gerçekleştirilen bir süreçtir. Bu yinelemeli yaklaşımın iki temel sebebi vardır. Birincisi tüm tehditleri tek incelemede çözümleyebilmek mümkün değildir. İkincisi ise, uygulamanızın gelişimi boyunca doğasında oluşabilecek değişiklikler, tehditlerin durumunu, sayısını ya da çeşidini değiştirebilir. Bu da tehditlerin yeniden incelenmesini gerektirir.
Tehdit modelleme sürecinde aşağıdaki adımlar yer alır:

Adım 1. Varlıklarınızı belirleyin


Öncelikle korunması gereken varlıklarınızı belirlemelisiniz. Bu müşteri ya da sipariş veritabanınız gibi sır niteliği taşıyan birtakım bilgileriniz olabileceği gibi Web siteniz ya da Web sayfalarınız da olabilir.

Adım 2. Mimari açıdan bir genel görünüm oluşturun

Varlıklarınızı belirledikten sonra, uygulamanızın işlevini, mimari yapısını ve fiziksel dağıtım yapılanmasını ve çözümünüzün parçalarını oluşturan teknolojileri belgelendirmeniz gerekir. Yazılımın tasarım ya da uygulamasında potansiyel zayıf noktaları yakalamaya çalışmalısınız. Bu adımda aşağıdaki görevleri yapın:
Uygulamanızın ne yaptığını belirleyin. Kullanım senaryolarını belgeleyerek kendinizin ve başkalarının uygulamanızın istenen kullanım şeklini anlamasını sağlayın. Bu aynı zamanda uygulamanızın nasıl kötüye kullanılabileceğini de ortaya çıkarmaya yardımcı olabilir.
Mimari diyagramınızı oluşturun. Mimari diyagram, bir uygulamanın düzenini ve yapısını, alt sistemlerini ve fiziksel dağılım özelliklerini gösterir. Uygulamanın karmaşıklığına bağlı olarak mimari diyagramı belirli alanlara yoğunlaşan birkaç diyagrama bölmeniz gerekebilir.
Teknolojileri belirleyin. Böylelikle, sonraki aşamalarda, teknolojilere özgü saldırı türleri konusunda odaklanmanız kolaylaşır. Yine bu sayede en doğru ve uygun hafifletme tekniklerini kullanma şansınız olur.

Adım 3. Uygulamayı bileşenlerine ayırın

Bir mimari diyagram oluşturduktan sonra, geleneksel zayıflık alanlarına dayalı bir güvenlik profili oluşturmak için uygulamayı bileşenlerine ayırmalısınız. Yine bu adımda güven sınırlarını, veri akışını, giriş noktalarını ve ayrıcalıklı kod çalıştırma durumlarını da belirlemelisiniz.
Bu adımda aşağıdaki görevleri yapın:
Güven sınırlarını belirleyin. Uygulamanızın somut varlıklarını kuşatan güven sınırlarını belirlemeniz güvenlik kontrollerinin yapılması gereken noktaları ortaya çıkarmak açısından önemlidir. Bu sınırları uygulamanızın tasarımı belirler.
Veri akışını belirleyin. Genel akışla başlayarak alt sistemler arasındaki akışa doğru detaylandırın.
Giriş noktalarını belirleyin. Uygulamanızın giriş noktaları aynı zamanda uygulamanıza yönelik atakların da giriş noktalarıdır. Giriş noktalarına örnek olarak HTTP isteklerini dinleyen bir Web uygulaması arayüzü verilebilir.
Ayrıcalıklı kodları belirleyin. Ayrıcalıklı kodlar korunan kaynaklara erişen ve ayrıcalıklı işlemler yapan kodlardır. Buna örnek olarak, bir SQL Server veritabanına ulaşıp veri çeken kod gösterilebilir. SQL Server veritabanı korunan bir kaynaktır.
Güvenlik profilini belgelendirin. Girdi doğrulaması, kimlik doğrulama, yetkilendirme, yapılandırma yönetimi ve uygulamaların zayıf noktalar barındırabilecek diğer alanları için kullanılan tasarım ve uygulama yaklaşımlarını belirleyin.

Adım 4. Tehditleri belirleyin

Varlıklarınızı ve uygulamanızın yapısını iyice tanıdıktan sonra sıra tehditleri belirlemeye gelir. Geliştirme ve test takımlarında yer alan kişileri bu ana kadar yapılan çalışmalar konusunda bilgilendirerek bir araya getirmek ve bir beyin fırtınası yapmak iyi bir yaklaşım olacaktır. Bu, potansiyel tehditleri ortaya çıkarmak için basit ama etkili bir yöntemdir. Bunu yaparken STRIDE modelini kullanabilirsiniz. (STRIDE: Spoofing (kimlik konusunda yanıltma), Tampering (verileri bozma), Repudiation (yapılan işlemi üstlenmeme, reddetme), Information disclosure (gizli bilgilerin açığa çıkması), Denial of service (hizmet veremez hale getirme) ve Elevation of privilege (hakkın kötüye kullanımı))
Bu adım sırasında aşağıdaki görevleri yapın:
Ağ tehditlerini belirleyin. Ağ topolojilerini çözümleyerek zayıf noktaları arayın. Cihaz ve sunucu ayarlarındaki hatalardan dolayı ağınızın saldırıya açık olmadığından emin olun.
Ana bilgisayarlara yönelik tehditleri belirleyin. Uygulamanızı çalıştıran makinelerde ayarların düzgün yapılmamasından kaynaklanan zayıflıklara dikkat edin. Dikkate almanız gereken unsurlar arasında şunlar yer alır: Yama seviyeleri ve güncellemeler, hizmetler, protokoller, hesaplar, dosyalar ve klasörler, paylaşımlar, portlar, denetim ve günlükler.
Uygulama tehditlerini belirleyin. Tehdit modellemenin önceki aşamasında oluşturduğunuz güvenlik profilini dikkatlice inceleyin. Uygulama tehditleri, teknolojilere özgü tehditler ve kod tehditleri üzerine odaklanın. Zayıf girdi doğrulaması, kimlik doğrulama bilgilerinin şifrelenmemiş ağ bağlantıları üzerinden aktarımı, zayıf parola ya da hesap ilkeleri kullanımı gibi olasılıkları araştırın.

Adım 5. Tehditlerin belgelendirilmesi

Tehditleri belirledikten sonra bunları belgelendirmelisiniz. Tehdit hedefi ve tehdidin tanımı belgelerinizde yer almalıdır. Atak tekniklerini de belgelerinize dâhil etmeyi düşünebilirsiniz. Bu konudaki ayrıntılar alınacak önlemleri belirlerken faydalı olabilir.

Adım 6. Tehditleri derecelendirin

Tehditlerinizi belgelendirdikten sonra sizin için daha önemli görünenleri belirlemek için bir yola gereksiniminiz vardır. Tüm tehditleri ele almaya ve bunlara yönelik eşit derecede önlemler almaya kalkarsanız, uygulamanızı zamanında ve bütçesi içinde hayata geçirme şansınız kalmayabilir. Ama öte yandan önemli bir tehdidi atlarsanız da, uygulamayı hayata geçirseniz bile ömrü çok kısa olabilir.
Bir tehditle ilgili olarak ölçmeniz gereken iki boyut vardır: Riski (ya da gerçekleşme olasılığı) ve zarar potansiyeli. Her ikisi için 1’den 10’a doğru bir ölçüt kullanırsak çarpımlarından oluşan ve 1’den 100’e kadar derecelenen bir sıralama ölçütümüz oluşmuş olur.
Gerçekleşme olasılığını 1 en düşük ve 10 kesin olarak değerlendirebilirsiniz. Zarar potansiyelini de 1 çok hafif, 10 ölümcül olarak düşünebilirsiniz. Bunların aralarındaki değerleri de derecelendirerek kullanırsınız.

Not: Microsoft’un DREAD yaklaşımı, risk sınıflandırmasını biraz daha detaylandırır. Dehşet anlamına gelen bu kelimenin baş harfleri bir kısaltma olarak kullanılmıştır.
Damage potential: Zarar potansiyeli. Tehdidin sisteme verebileceği zarar nedir?
Reproducibility: Yeniden üretilebilirlik. Tehdidin yeniden oluşturulması ne kadar zor?
Exploitability: Kötüye kullanılabilirlik. Kötü niyetli kullanıcıların zayıf noktayı kullanmayı başarabilmeleri ne kadar kolay?
Affected users: Etkilenen kullanıcılar. Ne kadar kullanıcı etkilenecektir.
Discoverability: Keşfedilebilirlik. Zayıf noktayı tespit etmek ne kadar zor?