XSS açığı Owasp Top 10 listesinde yer alan kritik bir öneme sahip olabilen ve her türlü HTML , CSS ve Javascript kodları çalıştırılabildiği için tehlikeli bir zafiyet türüdür.

XSS (Cross site scripting) güvenlik açığı

XSS, HTML kodlarının arasına istemci tabanlı kod gömülmesi yoluyla kullanıcının tarayıcısında istenilen kodun çalıştırılabilmesi olarak tanımlanan güvenlik açığıdır.

Kısaca XSS, siteler arası komut dosyası oluşturma işlemidir. Aslında daha doğru ifade etmek gerekirse, XSS bir güvenlik açığı değil, bir saldırıdır. Ancak XSS denildiğinde XSS saldırısına izin veren güvenlik açıklarını kastettiğimizi ifade edelim.

Bir XSS saldırısı gerçekleştiğinde, kötü amaçlı kod web sayfasına yerleştirilir. Ve bir site ziyaretçisi bu sayfayı açar açmaz, bazı zararlı olan komut dosyaları çalışmaya başlayacaktır. Çoğu zaman, kötü amaçlı kod, HTML etiketlerinin veya JavaScript komut dosyalarının yerleştirilmesi anlamına gelir.

XSS’nin birkaç çeşidi vardır:

1. Stored (Persistent) XSS (Saklanmış): En tehlikeli XSS saldırısı olan bu türde saldırıya izin veren kod sunucuda tutulur ve otomatik olarak yürütülür. Günümüz web tarayıcıları basit seviyede ki payload denilen bu zararlı kodların çoğunu engellemiş olsa da halen kullanılan kritik bir açıktır.

2. Reflected XSS (Yansıtılmış): Bu durumda, kötü amaçlı kod sitenin kendisinde değildir, ancak daha önce saldırgan tarafından oluşturulan bir web bağlantısında yer alır. Yani dışarıdan alınan parametrelerin kontrol edilmeden ve işlenmeden alınan bu “kötü” kod parçasını işleyerek, site kullanıcının tarayıcısında istemeden veriyi kesecek veya XSS yüklemesinin kendisi kastedilmişse başka bir bir komut dosyası çalıştırabilir. 

3. DOM (Self) XSS: Öncelikle DOM Document Object Model ifadesinin kısaltılmasıdır. Web tarayıcıların çalışma anında yorumladığı her şeyi DOM kapsamaktadır. Sayfa kaynağında görüntülenmeyen zararlı kod sunucuya gönderilmediğinde, ancak tarayıcıda hemen çalıştırıldığında kullanılan bir yöntemdir.

Nelere yol açabilir

– Kullanıcının oturumuna müdahale (çerezler).

– Gizli verileri çalmak için bir sayfanın değiştirilmesi (örneğin, bir giriş / şifre giriş formu).

– Yüksek trafiğe sahip sitelerde komut dosyalarının uygulanması (reklam, görüntülemeleri artırma, DDoS saldırıları ve diğerleri için).

– Görünüşte güvenli sitelerde kötü amaçlı yazılımların kullanılması.

Kendinizi nasıl korursunuz

– URL’den parametrelerle gelen ve sayfaya giren verileri arka plan (backend) tarafında çeşitli filtrelemelerden geçirdikten sonra sayfaya dahil edin,

– Karakter engeli yapmanın yeterli olmadığını unutmayın, ek doğrulama ile korumalar kullanın,

– Yalnızca sunucu tarafında değil, aynı zamanda istemci tarafında da güvenli veri işlemeyi sağlayın,

– Veriyi sayfaya dahil etmeden çeşitli kontrol mekanizmalarından geçirmek, örneğin PHP için htmlspecialchars,strip_tags,trim gibi fonksiyonlar…