Bir kaç gün önce Microsoft Security Advisory ASP.NET'in tüm version'ları etkileyebilen bir güvenlik açıklığını
duyurdu. Daha önce belirlenen fakat resmi olarak tanımlanmamış bu güvenlik açığı ASP.NET'in Cryptography ile ilgili bir zayıflığından faydalanıyor.
Microsoft bu güvenlik açığını kapatmak için çalışmaları halen sürdürüyor yakın zamanda Microsoft Update üzerinden dağıtılacak bir yama çıkması bekleniyor fakat arada geçen sürede geçici çözümleri bulması gereken yine kullanıcılar olacaktır. Yazının ilerleyen kısımlarında açıklıktan etkilenmemek için neler yapabileceğinizi anlatmaya çalışacağız.
Nasıl Etkiliyor?
Açıklık cryptoplojik bilgileri tahmin yolu ile değerlendirip sunucudan dönen hataya göre doğru değerleri bularak exploid ediyor, bu sayede viewstate, session ve web.config bilgilerinize okuma, yazma mümkün olabiliyor.
Açıklık ASO.NET Web Forms, SharePoint ve ASP.NET MVC Framewrok'lerini de etkiliyor. (SharePoint takımının konu ile ilgili blog yazısına
burdan ulaşabilrsiniz.)
Saldırıya maruz kaldığımı nasıl anlarım?
Açıklık web server sunucusunda HTTP 500 hata kodu oluşturup yorumlayarak çalışıyor. Bu yorumlamayı yapabilemek için web sunucusuna binlerce http isteği gönderiyor bu yüzden Web Server loglarında HTTP 500 hata kodunu gözlemleyip yoğunluğuna göre rahatlıkla tespit etmeniz mümkün. Ayrıca web suncusunda oluşan hata Windows'un Event Log'una da Application seviyesinde yazılıyor.
Açıklıktan Nasıl Korunabilirim?
Açıklık binlerce http isteği gönderdiğinden bu doğrultuda web suncuusuna gelen anlık http isteklerini sınırlayabilirsiniz. Örneğin: Bir IP Adresinden'den 10 saniyede en fazla 50 istek alınabilir şeklinde firewall kuralı girilebilir. Firewall kuralı girme imkanınız yoksa IIS7 ile blirlikte gelen
Dynamic IP Restrictions modülünü de rahatlıkla kullanabilirsiniz.
ASP.NET uygulamalarınızda ki CustomErrors özelliğini aktif etmenizde resmi bir yama çıkana kadar durumu idare etmenizi sağlayabilir. Tabi bunu atlayan bir exploid çıkana kadar demek'te gerekiyor ki konu ile ilgili internet üzerinde henüz yayılmış bir exloid bulunmuyor.
ASP.NET Uygulamalarınızda CustomErrors'u aktif etmek için web.config dosyanızı aşağıdaki şekilde düzenlemenzi yeterlidir.
* Burda önemli olan redirectMode özelliğinin ResponseRewrite olmasıdır.
Sonuç
Sonuç olarak ASP.NET kullanılan tüm uygulamalar da bu güvenlik açığı mevcut fakat açıklığı kullanarak siteleri hackleyen herhangi bir exploid internette henüz dolaşmadığı için yukarıdaki geçici çözümleri uyguladığınızda bu güncel güvenlik riskinden tamamen olmasada korunmuş oluyorsunuz. Aşağıda geçtiğimiz günlerde yapılmış olan
ekoparty Security Conference'indan alınmış bir video var ve güvenlik açıklığının POET denen araçla nasıl gerçekleştirdiğini açıkca göstermekte.