icerige gec

İptidai XSS Çözümleri ve Sahte Güven Duygusu

Ocak 15, 2011 yazan SpyMasterSnake

XSS'in önüne geçebilmek için programcılar birçok yöntem deniyorlar. Normalde kullanılması gereken yöntem güvenli bir kodlamanın adımlarını takip etmek. Bunun başında encoding ve filtreleme teknikleri geliyor. Ancak, gözden kaçabilecek her tür durum için ek uygulamalar geliştirilmiş durumda. Bu ek uygulamalar bir nevi emniyet kemeri görevi taşıyorlar. Bu uygulamalarla aynı kefeye konulmaya çalışılan şeyler ise programcılar arasında yaygınlaşan iptidai çözümler. Aslında bunlara çözüm demek yanlış olur, çözümden çok tozları halının altına süpürmek daha doğru bir tabir sanırım.

Anti-XSS ve benzeri uygulamalar, güvenli kodlamanın ve filtrelemenin yapılmadığı veya gözden kaçtığı durumlar için bir "önlem" olarak kullanılmakta.
 <script> taglarinin replace edilmesi olabilecek en iptidai XSS çözümü ve maalesef yaygın olarak kullanılmakta! Bu tarz taglerin nasıl geçileceğini ve <script> tagine ihtiyaç duymadan da kod çalıştırabilecek durumları bilen biri zaten bu önlemi aşabiliyor. <script> taglerini replace eden bir geliştirici belki XSS saldırılarına karşı bir farkındalık geliştirmiş olabilir. Zaten burda replace fonksiyonu yazmasının nedeni de bu olmalıdır. Buna karşın bunun bir önlem olmadığını, hatta yaratacağı sahte güven duygusunun büyük riskler taşıdığını bilmek gerekir. Bunu bir önlem olarak kullanan her yazılımcının uyarılması gerekir, çünkü ortada "yetersizlik içinde alınmaya çalışılan bir önlem" yatmaktadır. Bu da güvenli kod yazmanın gerekliliklerini bilemek veya gözden kaçabilecek noktaları görememektir.
 
Önümüzdeki birkaç sene içinde XSS'in önemini yitireceğini düşünüyorum. Burada anlatılan güvenli kodlamanın, yapılmamasından kaynaklı açıklara izin vermeyecek flexibilitede diller yaygınlaşacak, ve httponly benzeri korumalar yaygınlaşacaktır.
 
En son yaptığım bir denetim sırasında IIS için browser'ın erişebildiği cookie'de http request ile yolladığı cookie'nin auth. kısmının eksik olduğunu gördüm. Çaldığınız cookie önemini yitirdikçe, XSS'de önemini yitirmeye başlıyor. Ancak XSS phishing için önemini hiçbir zaman kaybetmeyecek gibi. Çünkü hala güvenlikteki en zayıf halkalar sosyal faktör kümesinde olanlar denebilir.

XSS'i sadece cookie çalmaya yönelik bir saldırı olarak görmek, belki XSS'i ve bu saldırı yöntemiyle geliştirilebilicek senaryoların çeşitliliğini bilmemekten kaynaklı olabilir. Ancak XSS'in kullanıldığı en etkin saldırıların başında cookie çalma girişimleri geldiğinden, XSS bu konuda özel bir yere sahiptir.
 
Bir güvenlik açığının önemini belirlemek için var olan sistemdeki oluşturabileceği tehditleri göz önünde tutmak büyük önem arz eder. Ama bu açığın o anki önemini belirler, asla varlığının inkar edilmesinin yolunu açmaz. Çünkü zaman içinde sistemde o açık önemini arttırabilir. Bu da sistem tasarımının değişmesinden tutun da basit bir güncellemeye varana kadar çok değişkene bağlı bir durumdur. Burada kastedilen açığın seviyesi değildir.
 
2001 yılındaki XSS saldırılarıyla Türkiye'nin en büyük ve popüler bir web mail sağlayıcısı "Domaini" çaldırabiliyordu. Yıl 2011. Bunun olma ihtimali, birçok etken yüzünden daha düşük. Farkındalık arttı. Bu farkındalıkla alınan doğru çözümler de arttı. Sistemler değişti. XSS hala popüler ama eskisi gibi değil. Bir grafikle anlatmak gerekirse grafik düşüşte diyebiliriz. Bu da gayet doğal bir durum. İlerleyen zamanlarda da düşmeye devam edecektir.
 
XSS ve CSRF için IIS tarafında alınan önlemleri gördükçe buna inancım artıyor. Validasyon işlemlerine önem verilen sistemler geliştiriyorlar. Belki bu önüne geçmeyecek ama o eğriyi aşağıya çekmeye devam edecektir.

Gökhan Muharremoğlu