Web Açık Tarayıcıları

Web uygulamalarında bulunan güvenlik zafiyetlerinin taşıdığı riskler, bu açıklıkları, günümüz siber güvenlik anlayışının en önemli konularından biri (belki de en önemlisi) haline getirmiştir. İstatistiklere göre her 10 web sitesinden 9’unda ciddi seviyede bir açıklığın olmasının yanında siber saldırıların %60’ından fazlasının web teknolojilerine yönelik gerçekleştirilmesi bu önemin açık bir nedenidir [1].  

İki bölümden oluşacak bu yazının ilk bölümü, otomatik web zafiyet tarayıcılarının genellikle ilk fazı olan girdi noktası bulma algoritmaları ve etkinlikleri üzerine olacaktır.

Web uygulamalarında bulunan açıklıklar; SQL enjeksiyonu, XSS, yetersiz hata yönetimi, CSRF gibi sadece yazılımsal veya standartlarda bulunan dizayn tabanlı hatalar olmayıp, yönetimsel ve mantıksal hataları da içermektedir.

Bu yazılımlardaki güvenlik problemlerinin bulunması, düzeltilmelerindeki en önemli adımdır. Bu adımı gerçeklemek adına üç önemli yöntem; elle yapılan testler, web uygulama açıklık tarayıcıları, statik/dinamik kod analiz araçlarıdır. Ancak bilinmelidir ki, yazılımlarda bulunan risk seviyesi yüksek zafiyetlerin açığa çıkarılması sadece tek bir yöntemle mümkün veya uygulanabilir değildir. Bu nedenle kapsamlı bir risk haritası için her üç yönetimin de elden geldiğince uygulanması gerekir.

Otomatik web açıklık tarayıcılarının (WAT) kapsayıcı ve zaman açısından etkin olmaları, web güvenlik risk haritasının çıkarılmasında çok önemlidir. WAT çalışma süreçlerinin birçok safhası vardır ama işleyişleri genel olarak ikiye ayrılır; girdi keşfi ve zafiyet analizi.

Girdi noktaları web uygulamalarının çalışma prensibinin en önemli parçalarıdır. Ne de olsa, interaktiflik bu etkileşim üzerine kurulmuştur; etki ve tepki, istek ve cevap. İşte bu nedenle birçok güvenlik problemi de bu modellemede girdi denetiminin yetersiz kalmasından kaynaklanmaktadır. Web uygulamalarında girdi noktaları HTTP protokolündeki istek mesajlarının her parçasından oluşabildiği gibi (URL, HTTP başlıkları, HTTP gövdesi, v.b.) farklı protokollerdeki (RMI, JNLP v.b.) veya alt-protokollerdeki (Flash Remoting, SOAP, v.b.) parçalar da bu kategoriye girmektedir.

Girdi keşfi sırasında WAT’lar, mümkün olabildiğince fazla girdi noktası bulmaya çalışırlar. Çünkü bu fazda ne kadar fazla girdi noktası bulunursa ikinci fazda (bu fazlar her zaman art arda işlemek zorunda değildir) bir o kadar zafiyet bulma şansı doğacaktır. WAT’lar genellikle “berbatometre” olarak adlandırılmaktadırlar; yani üzerinde analiz yaptıkları uygulamanın ne kadar kötü olduğunu söyleme yetisi. Çünkü WAT'ların bir uygulamanın güvenlik açısından ne kadar kaliteli yazıldığı sonucuna varabilmeleri, risk seviyesi yüksek açıkların oranı ve bu araçların kabiliyetleri düşünüldüğünde (en azından şimdilik) mümkün değildir. Örnek olarak; yapısal bir problem olan XSS açıklıklarını bulma konusunda iyi bir iş yapan WAT’lar, yetersiz yetkilendirme konusunda sınıfta kalmaktadırlar. Başarılı oldukları iş olan yapısal problemleri bulmak, dolayısıyla ilk faz (girdi noktası keşfi)  yani saldırı yüzeyini arttırmak bu açıdan WAT’lar için hayati önem taşır.

2002 ve 2003 yıllarından başlamak suretiyle özellikle istemci tarafındaki teknoloji karmaşıklığının artması (Web 2.0) ile beraber ilk fazın kapsamlı olarak gerçeklenmesi büyük bir problem olarak karşımıza çıkmaktadır. Klasik HTML yapılarının (form, a, frame, iframe HTML elementleri) yanında ağır Javascript ve Flash gibi diğer standartların da kullanılması yaygınlaştıkça WAT statik parserların web sayfalarındaki girdi noktalarını bulmaları oldukça zorlaşmıştır. Bu konuda örnek vermek gerekirse, Web 1.0 veya 1.5 olarak adlandırılan web sayfalarında

<a href=”/satinal.do?deger=5&d=3453667&tür=cd”>satın al</a>

türünde yapılar bulmak yaygınken AJAX ve ağır Javascript kullanımıyla yukarıdaki örnek ile aynı işi yapan aşağıdaki yapılar görülmeye başlanmıştır.

<script type="text/javascript">

   $("span#satinal").click(function(){SALELIB. doSale($('activeitem').id)});

</script>

<span id=”satinal”>satın al</span>


Bu örnek bile klasik bir parserın ilgili girdi noktasını (/satinal.do? deger=5&d=3453667&tür=cd) bulma becerisini sorgulamaya yetmektedir.  Bu noktada yaygın olarak kullanılan WAT’lar statik parser anlayışından sıyrılmış dinamik bir duruşu uygulamaya koymuşlardır. Dinamik girdi noktası bulma işi, WAT parserının aynı bir tarayıcı (browser) gibi davranıp içinde bulunduğu kodu (Flash,  Javascript) sanki normal bir kullanıcı kullanıyormuş gibi çalıştırmasından ibarettir. Tabi ki, diğer bazı kısa yollar (heuristics) da bu işin içindedir ancak çalıştırıp sonucunu yakalamak giderek karmaşıklaşan istemci taraflı kodlar için şimdilik en mantıklı ve kısa yol gibi durmaktadır.

Güvenlik testlerinin en önemli parçalarından biri (bulma, sınıflandırma, risk hesaplamasını yapma, yazılı hale getirme ve gidermenin yanında) ölçülebilir olmasıdır. Aynı şekilde teknolojilerin de kriterler ve standartlar yardımı ile karşılaştırmalarının yapılması ve kalitelerinin ölçülmesi gerekmektedir. Kalite kontrol ve temel bir PHP web uygulaması olan WIVET, WAT’ların faz 1 etkinliğini ölçmek amacı ile yazılmıştır. Bir çok girdi noktası sınıfından oluşan WIVET, üzerine koşulan WAT uygulamasının girdi noktalarını bulmasını bekler (Şekil 1).

http://www.tahribat.com/img/dokuman/WebAcikTarayicilari/1.gif

Tarih:
Hit: 5333
Yazar: WarHead

Taglar: web açık tarayıcıları


Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.