Güvenli ASP.NET Prodüksiyon Ortamı

1. Sayı - Mesut Timur

Thumbnail image for ~/images/icerik/sh0ij1qj.jpg

Bu yazımızda, web uygulamaları geliştirilirken en çok kullanılan teknolojilerden birisi olan ASP.NET`in konfigürasyon güvenliğine değineceğiz.




Web Uygulaması Güvenliği

Web uygulaması güvenliği sağlanırken genellikle akıllara ilk gelenler çeşitli kod enjeksiyonu zafiyetleri ve girdi doğrulama temelli yaklaşımlardır. SQL Injection’ı kesmek için parametrik sorgular, XSS’i kesmek için output encoding, LFI & RFI için doğru şekilde girdi doğrulama ve CSRF için de kritik fonksiyonaliteler için token uygulaması.

Oysa dünyanın en güvenli uygulamasını yazmış olsanız dahi, sunucu üzerinde tutulan bir klasörün izinlerini doğru şekilde düzenlemediyseniz , hack’lenmeniz işten bile değil ! Bundan dolayı işin kod kalitesi ile ilgili kısmını düşünürken, konfigürasyonel boyutunu da es geçmemek gerekmektedir.

ASP.NET

Günümüzde web uygulamaları bir çok programlama dili vasıtasıyla yazılabilmekte ve bir çok üretim ortamında çalışabilmektedir. Bu dillerden ve platformlardan önemli bir tanesi ise ASP.NET ‘dir.

ASP.NET ortamında geliştirilmiş uygulamaların konfigürasyon bilgileri web.config isimli dosyada tutulur.

Web.config

Söz konusu XML dosyası uygulamanın durum bilgisi, güvenlik konfigürasyonu,  derlenme ayarları ve uygulama-spesifik bilgiler yer alır. Bir web sunucu üzerindeki tüm uygulamalar aynı konfigürasyon dosyasını kullanmak zorunda değillerdir. Farklı uygulamalar için farklı Web.config dosyaları tanımlanabilir.

İlgili konfigürasyon dosyasındaki ayarların doğru şekilde belirlenmemesi durumlarında çeşitli güvenlik zafiyetleri ortaya çıkabilmektedir.  Kimi güvenlik zafiyeti ise herhangi bir hatalı konfigürasyon beklemeden, varsayılı ayarlarda meydana çıkmaktadır.

Potansiyel zafiyetlerin bir listesi şu şekildedir:

   • Hata mesajlarından  ve uygulamadan çeşitli şekillerde bilgi sızmaları
   • Uygulama ile istemci arasındaki trafiğin ifşası
   • Yazılımın saldırganların kontrolüne geçmesi halinde, sunucunun tüm kontrolünün kaybedilmesi
   • Oturum ile ilgili konular
      o Oturumun manipüle edilmesi
      o Oturumun çalınması
      o Zaman aşımı olmaması sonucu çalınan çerezin kullanılması
   • Web çerezleri ile ilgili konular
      o Çerezlerin XSS saldırısı ile çalınması
      o Çerezlerin ağ trafiği dinlenilerek çalınması
   • İstek hırsızlığı
   • Hassas dosyaların ifşası.
   • Trafiğin dinlenilmesi
   • Web.config içindeki kritik bilgilerin sızdırılması [1]

Web.config dosyasının doğru şekilde konfigüre edilmesiyle söz konusu zafiyetlerin bazılarından sonsuza dek, bazılarından ise bir çok durumda korunmak mümkün olacaktır.

Web.config dosyalarındaki problemlerin otomatik şekilde incelenmesini gerçekleştirmek üzere WCSA (Web.config Security Analyzer) hazırlandı. WCSA kendisine parametre olarak geçilen Web.config dosyalarını inceleyip varolan konfigürasyonel güvenlik problemlerini ortaya çıkarıyor.

Proje’nin ana sayfası http://code.google.com/p/wcsa/  olup, download linklerine de erişebilirsiniz.

Çıktı olarak verdiği HTML raporda güvenlik zafiyetleri, zafiyetlerin tanımları, yapılması gereken güvenli konfigürasyon ve referanslar veriliyor.

Sonuç

Güvenlik bir bütün olarak düşünülmelidir. Güvenli web uygulamaları geliştirirken, güvenli kod pratiklerinin uygulanmasının yanında sürecin konfigürasyonel boyutu da göz önünde bulundurulmalıdır.

Referanslar

[1] http://www.onuryilmaz.info/Icerik/61-web-config-dosyasinin-icerigini-sifrelemek.aspx

Tags:  asp.net, web.config, wcsa, security tool