spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
Yazılım Geliştirmede Tehdit Modelleme II Yazdır E-posta
Abdulkadir Poşul, TÜBİTAK BİLGEM   
27.03.2011

Bir önceki makalede tehdit modellemenin ilk adımı olan uygulamanın ayrıştırılması ele alınmıştı. Bu makalede ise tehditlerin belirlenmesi, derecelendirilmesi ve azaltılması konularını ele alacağız.

Tehditlerin Belirlenmesi

Uygulama ayrıştırıldıktan sonra, her bir bileşen tehdit modelleme için potansiyel tehdit olarak ele alınır. Burada amaç herşeyin nasıl çalıştığını görmekten ziyade, uygulamanın bileşenlerini anlamak ve bu bileşenler arasında veri alışverişinin nasıl yapıldığını görmektir. Bileşenler genel olarak tehdit hedefleri olarak adlandırılır. Belirlenen tehditlerin azaltılması için öncelikle tehditlerin sınıflandırılması gerekmektedir. Bunun için STRIDE sınıflandırma modeli kullanılabilir. STRIDE modeli aşağıda belirtilmiştir:

  • Kimlik Yanıltması (Spoofing Identity): Yanıltma tehditleri saldırganların başka bir kullanıcı gibi davranmaları ya da geçerli bir sunucu gibi davranarak diğer sunucuları yanıltma amacı güder. Kimlik yanıltmaya örnek olarak, yasa dışı olarak başka bir kullanıcının şifre ve kullanıcı ismi gibi gizli bilgilerine ulaşmayı ve bu bilgileri kullanmayı gösterebiliriz.

  • Verinin Değiştirilmesi (Tampering with Data): Bu işlem verinin kötü niyetli bir şekilde değiştirilmesi manasına gelir. Internet üzerinden akan verinin değiştirilmesi buna örnek olarak gösterilebilir.

  • Inkar (Repudiation): Bu tip tehditler, bazen saldırganın gerçekleştirdiği ama bunu inkâr edebileceği tehditler olarak görülür. Inkar tipi tehditler kredi kartı gibi işlemlerde kendini gösterir. Kullanıcı bazı alımlarda bulunur ve sonra yapmadığını iddia eder. Başka bir örnek de e-posta örneği olabilir. Size gelen bir maili, karşı taraf ben atmadım diye inkâra başvurabilir.

  • Bilginin Açığa Çıkarılması (Information Disclosure): Bu tip tehditler, bazı bilgilerin onları görmemesi gereken kullanıcılar tarafından görünmesini kapsar. Örnek olarak, bir kullanıcının okumaması gereken bir dosyaya erişim hakkı olması ya da bir saldırganın ağ trafiğini dinleyip bazı bilgileri elde etmesidir.

  • Hizmet Dışı Bırakma (Denial of Service): Hizmet dışı bırakma atakları sistemlerin kullanılmaz hale gelmesini sağlayan ataklardır. Web sunucusunun kullanılmaz hale gelmesi bu tip ataklara örnek olarak gösterilebilir. Sistemlerin güvenirliliği ve sürekliliği sağlamaları adına bu tip ataklara önlem almaları gerekmektedir.

  • Yetki Kazanma (Elevation of Privilege): Bu tür ataklarda, yetkisiz bir kullanıcı sistemi kullanmak üzere yetki kazanır ve bütün sisteme zarar vermek ya da kontrolü altına almak için sisteme giriş yapar.

Bu sınıflandırmaya dayalı olarak, örnek satın alma uygulamasında örnek bir tehdit üzerinde durabiliriz. Bu tehdit Şekil 6'de gösterilmiştir. Burada dikkat edilmesi gereken husus, bir kullanıcının başka bir kullanıcıya ait sipariş bilgilerini görmemesi gerektiğidir. Öyleyse, bilginin çalınmasına ya da başka kullanıcılar tarafından görüntülenmesine engel olunmalıdır. Bu tehdit bilginin açığa çıkarılması tehdit grubuna örnek bir tehdittir. Bir saldırganın bu veriyi görmesinin birçok yolu olabilir. Fakat en basit haliyle, saldırgan ağ trafiğini, protokolleri analiz eden bir araçla dinliyor olabilir; ya da ağda bir yönlendiriciyi kontrol altına almış olabilir.

sekil6.jpg
Şekil-6 Bir Tehdit Örneği 

Tehdit Ağaçları: Tehdit ağaçlarının arkasındaki anafikir şudur: Bütün sistem tehdit hedeflerinden biraraya getirilmiş bir sistemler bütünüdür ve her tehdit hedefi bazı açıklıklara sahip olabilir. Bu açıklıklar da bütün sistemin saldırganlar tarafından kullanılması manasına gelebilir. Tehdit ağaçları, bir saldırganın sistemi elegeçirebilmek için izleyebileceği yolları çizen yapısal ağaçlardır. Uygulama ayrıştırması işlemi gerçekleştikten sonra, her bir bileşen için tehditlerin belirlenmesi süreci başlar. Tehditler belirlendikten sonra ise bu tehditlerin nasıl ortaya çıkabileceği tehdit ağaçlarıyla belirlenir. Yukarıda verilen tehdit örneği için, belirlenen tehdit ağacı  Şekil 7'deki gibi olabilir. Tehdit ağacının en başındaki kutu, tehdit kutusu olarak adlandırılır ve altındaki kutular tehditin gerçeklenmesi için gereken adımları temsil eder. Bu örnek tehditte, tehditin gerçellenmesi için, HTTP trafiği korumasız olmalı ve saldırgan trafiği dinliyor olmalı. Saldırganın trafiği dinlemesi için, ağ trafiğini dinliyor olması ya da yönlendirici üzerinden geçen veriyi dinliyor olması gerekir. Yönlendirici dinleme senaryosunun gerçek olması için, ya hedef yönlendirici korumasız olmalı ve kontrol altına alınması gerekiyor ya da yönlendiricinin şifresinin bilinmesi gerekiyor.

sekil7.jpg
Şekil-7 Tehdit # 1 için tehdit ağacı 

Tehditlerin Derecelendirilmesi

Tehdit ağaçları oluşturulduktan ve tehditler anlaşıldıktan sonra, belirlenen bu tehditlerin derecelendirmesi gerekmektedir. Derecelendirmeli amaç, öncelikle hangi tehdit üzerinde duracağımıza karar vermek ve bir sıralama oluşturmaktır. Uygulamamız için en büyük tehditin ilk önce giderilmesi mantıklı bir yaklaşım olacaktır. Derecelendirme yaparken bazı dercelendirme yöntemleri kullanılabilir. Bu derecelendirme yöntemlerinden DREAD adlı yöntemi örnek satın alma uygulamamız için kullanacağız.

DREAD

  • Zarar Potansiyeli (Damage Potential): Tehdidin gerçekleşmesi durumunda, zarar ne kadar büyüklükte olacaktır. En kötü durum 10 ile gösterilebilecekken, en hafif durum 0 ile gösterilebilir. Yetki tehditleri genellikle 10 ile gösterilir. Tıbbi, mali, ya da askeri veri içeren uygulamalar içi zarar potansiyeli yüksek kabul edilir.

  • Uygulanabilirlik (Reproducibility): Potansiyal bir saldırının başarıya ulaşma şansını belirlemeye çalışır. Belirli bir tehditin, saldırgan için başarılı bir saldırı olma kolaylığının incelenmesini ön görür.

  • Sömürülebilirlik (Exploitability): Bu tehdit kapsamında bir atağı gerçellemek için ne kadar tecrübe ve çaba gerekmektedir. Örneğin, acemi bir kullanıcı, normal ev bilgisayarı ile tehdite bir atak uyguluyabiliyorsa bu ciddi bir durumdur ve bu tehdit sömürülebilirlik manasında 10 alabilir.

  • Etkilenen Kullanıcılar (Affected User): Eğer bu tehdit bir saldırıya dönüştürülür ve saldırı başarılı olursa ne kadar kullanıcının bundan zarar göreceği araştırılır. Mesela, bir sunucuyla alakalı bir tehdit, birçok kişiyi ilgilendireceğinden yüksek önem arz eder.

  • Keşfedilebilirlik (Discoverability): Açıklığın kolay ya da zor bulunabileceğinin ya da keşfedilebileceğinin değerlendirmesi yapılır.

Bu değerlendirme kriterine göre, yukarıda verdiğimiz örnek tehdidin değerlendirmesi şu şekilde olabilir:

Tehdit #1: Kasıtlı kullanıcı başka bir kullanıcının sipariş bilgilerini ağ üzerinden dinler.

    8    Zarar Potansiyali: Başkasının gizli sipariş bilgilerini okuyabilmek ciddi bir sorun.

    10    Uygulanabilirlik: Tamamen uygulanabilir.

    7    Sömürülebilirlik: Ağ üzerinde yer edinmeli ve ağı dinlemeli.

    10    Etkilenen Kullanıcılar: Yöneticiler dâhil herkes etkilenebilir.

    10    Keşfedilebilirlik: Bu açıklığın kolayca bulunacağını varsayalım.

DREAD ile ölçülen risk oranı  = (8+10+7+10+10)/5 = 9

Tehditlerin Azaltılması

Tehditler belirlendikten ve önem sırasına göre sıralandıktan sonra her tehdit için ne yapılması gerektiği kararlaştırılmalı. Bu karar dört farklı şekilde olabilir:

  1. Herhangi bir tedbir almama: Bu yöntem genellikle doğru olmayan bir yöntemdir. En sonunda uygulamanın içerisindeki bu açıklık başınızı ağrıtabilir ve önlem almak zorunda kalabilirsiniz. Daha sonradan alacağınız önlem çok daha pahalıya size mal olabilir.

  2. Kullanıcıyı uyar: Diğer bir yol ise, kullanıcının bu hususta bilgilendirilmesi ve uygulamanın o özelliğini kullanıp kullanmayacağının kendisine bırakılmasıdır. Buna örnek olarak Microsoft Internet Bilgi Servisi (IIS) verilebilir. Bu sistem, yöneticiyi eğer SSL/TLS kullanmazsa kullanıcı bilgilerinin şifresiz bir şekilde ağda gezeceğini belirtir. Bu yöntem de birçok durumda problemli bir yöntemdir. Kullanıcıların çoğu nasıl seçim yapacaklarını bilmezler. Aslında çoğu zaman, kullanıcının karşısına çıkarılan seçenek, kullanıcı için anlaşılması zor bir seçenektir. Diğer bir durum ise, kullanıcılar genellikle hazır ayarları kabul ederler ya da uyarıları görmezden gelirler.

  3. Problemi ortadan kaldır: Problemi çözmek için yeterli zamanınız yoksa kısaca tehdit altında olduğunu düşündüğünüz özelliğe sahip parçayı sistemden çıkarmanız yeterlidir.

  4. Problemi çöz: En kesin ve gerçekçi çözüm budur. Teknolojiyi kullanarak, problemi azaltma ya da tamamen çözme yoluna gidilmelidir. Bu yöntem aynı zamanda en zor yöntemdir. Tasarımcılar, geliştiriciler, testçiler ve güvenlik ekibi için daha fazla iş yükü ve daha fazla maliyet demektir.

Şekil 8'de örnek satın alma uygulaması için olabilecek tehditler ve bu tehditlerin azaltılma yolları gösterilmiştir.

sekil8.jpg
Şekil-8 Örnek Satın Alma Uygulamasındaki Tehditlerin Çözüm Yolları 

Referans

[1]. http://msdn.microsoft.com/en-us/library/ff648644.aspx#c03618429_008

[2]. Writing Secure Code - Micheal Howard and David LeBlanc (2003)

[3]. The Security Development Lifecycle - Micheal Howard and Steve Lipner (2006)


Favori olarak ekle (1) | Görüntüleme sayısı: 971

Yorumlar (1)
1. 16-05-2011 17:38
 
merhaba, 
Microsoft'un iki yazilimi var konu hakkinda. 1. http://archive.msdn.microsoft.com/tam 
2. http://www.microsoft.com/security/sdl/adopt/threatmodeling.aspx 
 
Ilki artik MS tarafindan kullanilmiyor (ve sanirim gelistirilmiyor), ama daha cok developer perspektifli. Ikincisi ise daha cok denetimci perspektifli. Her iki durumda, otomasyon var ama, sonucta elde edilen tehditler manuel olarak elenmeli.
 
Bedirhan Urgun

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2012 TÜBİTAK-BİLGEM. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB