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 I Yazdır E-posta
Abdulkadir Poşul, TÜBİTAK BİLGEM   
21.03.2011

Tehdit modelleme, organizasyonların yüksek düzeyli güvenlik risklerini anlamalarına yardımcı olan, güvenlik tabanlı bir analizdir.  Tehdit modellemede amaç, tehditlerin saptanması, hangi tehditlerin azaltılmasının gerektiği ve tehdit azaltma işleminde hangi yöntemlerin uygulanacağının belirlenmesidir. Risklerin azaltılması için tehdit modelleme kapsamında uygulanacak olan tehdit değerlendirmesi güvenli sistemler inşa etmek için olmazsa olmaz bir süreçtir. Bir organizasyonun ya da bir kurumun herhangi bir uygulama geliştirirken neden tehdit modellemeye gitmesi gerektiği şu maddelerle sıralanabilir:

  1. Uygulamanın daha iyi anlaşılması: Uygulamanızın özelliklerinin analizi için zaman harcamak zorunda kalmanız, uygulamanızın ve parçalarının nasıl çalıştığı konusunda size daha geniş bir bakış açısı sağlayacaktır.

  2. Tehditlerin belirlenmesi: Herhangi bir yazılımsal süreç başlamadan, başka bir deyişle uygulama kodlanmaya başlamadan, sisteminizi ilgilendiren tehditlerin belirlenmesini sağlayacaktır.

  3. Kod hatalarının kolayca belirlenmesi: Kod hatalarının birçoğu tehdit modellemede ortaya çıkacaktır.

  4. Proje takımının yeni üyelerinin uygulamaya uyumu: Yeni işe başlayan birinin yüzde yüz performansla çalışmaya başlaması ve proje takımına uyum sağlaması için her zaman belirli bir sürenin geçmesi gerekmektedir. Tehdit modellemenin bütün uygulamayı gösterecek sistemli ve yapısal bir modelleme olması, yeni işe başlayan çalışanların uygulamayı hızlı bir şekilde öğrenmesini sağlayacaktır.

  5. Testçiler için faydaları: Testçilere hangi tehditlere göre test araçları hazırlamaları gerektiği hususunda katkı sağlayacaktır.

  6. Diğer proje takımları için faydaları: Sizin ürününüzle alakalı proje geliştiren diğer ürün geliştirme takımları, sizin oluşturduğunuz tehdit modellemeyi incelemelidirler. Bu sayede, diğer takımlar yeni bir tehdit modelleme oluşturmak zorunda kalmayacaktır ve uygulamanın tümünü görmek manasında proje hız kazanacaktır. (3)

Tehdit modelleme oluşturulurken, şu adımlar sırasıyla uygulanabilir: Uygulamanın ayrıştırılması, tehditlere karar verilmesi, tehditlerin derecelendirilmesi, tehditlerin azaltılması. Şekil 1'de bir tehdit modelleme döngüsü resmedilmiştir.

sekil-1.jpg

Şekil-1 Tehdit Modelleme Döngüsü

Uygulamanın Ayrıştırılması

Açıklık tabanlı güvenlik profilinin oluşturulması için uygulama alt parçalara ayrılır. Güvenlik çemberi, akış diagramları, giriş noktaları, ayrıcalıklı kod parçacıklarının belirlenmesi ve güvenlik profilinin oluşturulması bu adımda gerçekleştirilir. Uygulamanız hakkında ne kadar detaylı bilgiye sahipseniz, tehditleri bulma olasılığınız o kadar yüksek olacaktır. Şekil 2'de uygulama ayrıştırma işleminde önemli noktalar resmedilmiştir.

sekil2.jpg

Şekil-2 Uygulama Ayrıştırmada Önemli Noktalar (1) 

Güvenlik Çemberinin Belirlenmesi

Bütün varlıklarınızı çevreleyen güvenlik çemberlerinin belirlenmesi bu süreçte yapılır. Her bir alt sistem için, veri akışı veya kullanıcı girdisinin güvenliğinin belirlenmesi ve bu veri akışlarının ve kullanıcı girdilerinin nasıl yetkilendirildiği ve kimlik denetlemeye tabi tutulduğu belirlenir. Bununla beraber, dışardan çağırdığınız kod parçacığının güvenli olup olmadığını da incelenir. Güvenlik çemberinden genel kasıt şudur: O çemberin içindeki bütün giriş nokları güvenli bir şekilde korunuyordur ve o çemberden geçen bütün veri girdi geçerlemeye tabi tutulmuştur. Ayrıca sunucu güvenlik ilişkilerinin de belirlenmesi gerekmektedir. Bir sunucu yetkilendirme ve kimlik denetleme gibi süreçleri başka bir sunucudan mı alıyor yoksa kendi mi bu mekanizmaları sağlıyor gibi soruların cevaplanması gerekmektedir. Şekil 3'de Web uygulaması, ASP.NET Web uygulaması process account'ı güvenli olarak kabul ediyor ve veri tabanı sunucusuna bu güvenli hesap üzerinden ulaşıyor. Veri tabanı sunucu ise, uygulamaya yetkilendirme ve kimlik denetleme sürecinde güveniyor ve yalnızca doğrulanmış veriyi yetkilendirilmiş kullanıcıya dönüyor.

sekil3.jpg
Şekil-3 Güvenlik Çemberi Örneği(1) 

Akış Diagramlarının Belirlenmesi

Uygulama öncelikle bütünü kapsayacak şekilde, akış diagramı halinde gösterilir. Sonra uygulama parçalara bölünür ve her parça da büyüklüğüne göre parçalara bölünmeye devam eder ve akış diagramı halinde gösterilir. Örnek bir uygulama olarak basit bir satın alma uygulamasını ele alabiliriz. Bu uygulamada, yöneticilerin, kullanıcıların, uygulamayı geliştiricilerin ve denetleyicilerin olduğunu varsayalım. Yönetici uygulama yönetimiyle ilgili işlerden sorumlu kimse, kullanıcı sipariş bilgilerine bakabilen kimse, uygulama geliştirici uygulamayı geliştiren kimse ve denetleyici denetleme bilgilerini okuyan kimse olarak görev paylaşımında bulunmuş olsunlar. Bu uygulamanın öncelikle bütün uygulamayı temsil eden içerik diagramı Şekil 4'de gösterilmiştir.

sekil4.jpg
Şekil-4 Satın Alma Uygulamasının İçerik Diagramı 

İçerik diagramı hazırlanırken şu hususlara dikkat edilmelidir:

  • Olabildiğince yüzeysel bilgileri içermelidir. İçsel ve detaylı fonksiyonların incelenmesinden kaçınılmalıdır. Önemli olan kapsamın belirlenmesidir, detaylı fonksiyonların belirlenmesi değil.

  • Sistemin cevap vermek zorunda olduğu istekler bu diagramda belirlenir. Mesela, bir satın alma uygulaması, sipariş bilgisinin görüntülenmesi isteğiyle karşı karşıya kalabilir.

  • Uygulamanın bu isteklere nasıl cevap vereceği de bu diagramda gösterilir.

  • Herbir istekle ve cevapla alakalı olan veri kaynakları belirlenir.

  • Her cevabın muhatabı bu diagramda belirlenir.

Bir sonraki adım olarak, Satın Alma Uygulaması olarak gösterilen büyük süreç parçalara ayrılır ve o parçalar da ileriki adımlarda parçalanır. En sonunda, uygulamanın parçaları incelenmiş ve nasıl çalıştığı anlaşılmış olur. Şekil 5'de örnek satın alma uygulamasının, veri akış diagramı görüntülenmiştir.

sekil5.jpg
Şekil-5 Satın Alma Uygulaması için Veri Akış Diagramı (2) 

Giriş Noktalarının Belirlenmesi

Şunu hiçbir zaman unutmamak gerekir ki, sisteminizin giriş noktaları aynı zamanda saldırganlar için de giriş noktası manasındadır. Öyleyse bu noktaların en iyi şekilde korunması gerekmektedir. Örneğin, giriş noktalarınız HTTP isteklerini dinleyen web uygulaması içeriyor olabilir. Normalde bu uygulama, son kullanıcıların kullanımına açılmış olan giriş noktalarıdır. Ne var ki saldırganlar da bu noktaları kullanacaklardır. Sisteminizdeki bütün giriş noktalarını bilmek zorundasınız. Her bir giriş noktası için, yetkilendirme ve kimlik denetleme süreçleri en iyi şekilde belirlenmelidir. Mantıksal giriş noktaları şunları kapsayabilir: Web sayfaları, web servisleri için servis arayüzleri, mesaj kuyrukları vb... Fiziksel giriş noktaları ise portlar ve soketlerdir.

Ayrıcalıklı Kod Parçalarının Belirlenmesi

Ayrıcalıklı kod parçaları, hassasiyeti yüksek veri kaynaklarına ulaştıkları ve ayrıcalıklı işlemler yapabildikleri için, dikkatlice ele alınmalıdırlar. Hassasiyeti yüksek veri kaynağı olarak şu kaynaklar sıralanabilir: DNS sunucları, dizin servisleri, çevresel değişkenler, olay günlükleri, dosya sistemleri, mesaj kuyrukları, performans sayaçları, yazıcılar, register sunucuları, soketler, Wen sunucuları vb. Ayrıcalıklı kod parçasının güvensiz ya da potensiyal kötü niyetli bir yazılım tarafından kullanılmayacağına emin olunulmalıdır.

Güvenlik Profilinin Oluşturulması

Güvenlik profili aşağıdaki sorulara verilen cevaba göre belirlenir:

Girdi Geçerleme

  • Uygulamanız kapsamındaki bütün girdiler geçerlendi mi?

  • Saldırgan uygulamanıza kötü niyetli veri enjekte edebilir mi?

  • Veri ayrı güvenlik çemberlerinden geçerken, geçerlemeye tabi tutuluyor mu?

  • Veri tabanındaki veri güvenilir mi?

Kimlik Denetleme

  • Şifre ve kullanıcı gibi gizli veriler ağ üzerinden geçerken güvenliği sağlanıyor mu?

  • Sıkı kullanıcı hesabı politikaları kullanılıyor mu?

  • Kullanıcılar güvenlik düzeyi yüksek şifre almaya zorlanıyorlar mı?

  • Kullanıcı şifreleri için şifre doğrulama uygulamaları kullanılıyor mu?

Yetkilendirme

  • Giriş noktaları için hangi önlemler alındı?

  • Veri tabanında yetkilendirme nasıl şart koşuluyor?

  • Bağlantı kopmasında ya da hata anında uygulama güvenliği sağlanıyor mu?

Yapılandırma Yönetimi

  • Uygulamanız hangi yönetimsel arayüzleri içeriyor?

  • Bu arayüzlerin güvenliği nasıl sağlanıyor?

  • Uzaktan yönetici yetkilendirmesi nasıl yapılıyor?

  • Hangi yapılandırma bilgileri saklanıyor ve bunların güvenliği nasıl sağlanıyor?

Kritik Veri

  • Uygulama kapsamında hangi kritik bilgiler işlenmektedir?

  • Bu gizli bilgiler olduğu yerde ve ağ üzerinde nasıl korunuyor?

  • Nasıl bir şifreleme tekniği kullanılıyor ve şifreleme anahtarları nerede tutuluyor?

Oturum Yönetimi

  • Oturum tanımlama bilgileri nasıl tutuluyor?

  • Oturum bilgilerinin çalınmaması için ne gibi tedbirler alınıyor?

  • Oturum bilgileri ağ üzerinden geçerken güvenliği nasıl sağlanıyor?

Kriptografi

  • Hangi şifreleme algoritmaları ve yöntemleri kullanılmaktadır?

  • Şifreleme anahtarları ne kadar süredir kullanılmakta ve bunların güvenliği nasıl sağlanmakta?

  • Uygulamanın kullandığı kendi şifreleme tekniği var mı?,

  • Şifreleme anahtarları ne kadar sürede bir değiştirilmektedir?

Parametre Değiştirme

  • Uygulama oynanmış parametreyi tespit edebiliyor mu?

  • Form alanlarındaki, HTTP başlıklarındaki, oturum tanımlama bilgilerindeki parametreleri geçerliyor mu?

Hata Yönetimi

  • Uygulama hata durumlarının nasıl üstesinden geliyor?

  • Hata bilgileri kullanıcıya iletilliyor mu?

  • Bu hata bilgilerinde sistemin kritik bilgilerini içeren uyarılar bulunuyor mu?

Denetleme ve Kayıt

  • Uygulamanız bütün sunucu ve katmanlarda denetleme ve kayıt mekanizmasına sahip mi?

  • Kayıt dosyalarının güvenliği nasıl sağlanıyor?

Tehdit modellemede izlenmesi gereken diğer iki adım bir sonraki makalede ele alınacaktır.

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ı: 1308

Bu yazıya ilk yorumu yazın

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