Yazılım Mimarileri ve Tasarım Desenleri Üzerine

CROSS Site Scripting (XSS)

Merhaba,

Bir web uygulaması, yayın hayatı boyunca yoğunluk olarak kullanıcılar tarafından amacına dönük gelen taleplere karşılık hizmetini sunarken bunların yanında amacın dışında uygulamayı teste tabi tutmak isteyen iyi yahut kötü niyetli kimi kullanıcılar tarafından da yaratılan meşguliyetlerle ilgilenmek mecburiyetinde kalacaktır. Bu meşguliyetler, genellikle uygulamanın dış dünyaya karşı bir zafiyeti yani güvenlik açığı olup olmadığına dair meraklı olan kullanıcılar tarafından yapılan, benim nazarımda ‘manevratik deneme’ halkın deyimiyle ise ‘saldırı’ diye nitelendirilen fiiliyatlar olacaktır. İşte bu içeriğimizde web sunucularından ziyade client tarafında gerçekleştirilen ve en yaygın güvenlik açıklarından biri olan XSS saldırısı üzerine konuşuyor olacağız.

CROSS Site Scripting(XSS) Nedir?

Uygulama üzerinde kullanıcılar ile gerçekleştirilen etkileşim sürecinde çift taraflı veri akışının söz konusu olduğu durumlarda kullanıcılardan gelen verilerin tam teferruatlı kontrol edilmemesi sonucu kötü niyetli kişiler tarafından tarayıcıda çalışacak zararlı kodların uygulamaya dahil edilmesi ve böylece her türlü kötü amaca dair imkanlara erişilmesine dayanan bir güvenlik açığıdır.

Bu güvenlik açığına dair söyleyenebilecek en gülünç husus ise saldırı esnasında uygulamanın değil o uygulamaya güvenen kullanıcıların hedef alınması ve böylece kötü niyetli kişinin hedef kişiye olan erişiminde web uygulamasını bir aracı olarak kullanmasıdır.

Hangi Durumlarda Bu Saldırı Gerçekleşir?

Genel kanı, yaygın olarak kullanıcıdan bir form aracılığıyla alınan verinin yeterli kontrol edilmeksizin kullanılması neticesinde karşılaşıldığı durumlarda cereyan ettiği şeklindedir. Halbuki bu aslında hiçte bu kadar basit bir saldırı değildir! Farklı kanallar ile çalışmakta olan bir sistemi düşünürsek eğer, platform farklılıklarından dolayı veri doğrulama ve değerlendirme süreçleri değişkenlik gösteren uygulamalar bütününden beslenen bir uygulamanın bu saldırıya form durumlarına nazaran daha açık olduğunu söyleyebiliriz.

Örneğin; mobil kanaldan gelen bir girdinin üzerinde yapılacak doğrulama yöntemleri mobil platformunun zararına sebep olabilecek durumları değerlendirmek üzerine olacaktır. Dolayısıyla buradan bir tehdit olarak algılanmadan geçebilen zararlı kod, web tarayıcısı yahut tetikleyici unsur olabilecek sistemlerde çağrıldığında devreye girebilir ve kötü niyetli kişinin dolaylı yoldan amacına ermesini sağlayabilir. Aksi taktirde ilgili saldırı söylendiği gibi sadece form üzerinden yapılıyor olsaydı mevcut güvenlik önlemleri karşısında çokta şansı olmayacağından dolayı esamesinin okunmasına bile gerek kalmayacaktı.

Zararları Ne Olabilir?

XSS saldırısı ilgili web uygulamasının kullanıcı kitlesini hedef aldığından dolayı uygulama açısından maliyetli bir zarara yahut veri kaybına sebep olmayacaktır. Lakin uygulamanın üzerinden kullanıcıların cookie veya local/session storage verilerini kötü niyetli kişilere ulaştırabileceğinden dolayı veri sızdırılmasına sebep olabilmekte ve bunun neticesinde göz ardı edilmeyecek derecede kişisel verilerin çalınmasından, kullanıcı hesaplarında yaratılabilecek veri kayıplarına kadar ciddi sorunlarla karşılaşılmasına sebebiyet verebilecektir.

Saldırı Nasıl Gerçekleştirilir?


Kötü niyetli kullanıcı(hacker) web uygulamasına bir şekilde zararlı komutları enjekte eder. Kurban web uygulamasını ziyaret ettiği anda zararlı komutlar tetiklenir ve hedeflenen veriler(cookie, session/local storage, token vs.) kötü niyetli kullanıcıya gönderilir.

Teoride bu şekilde ceyeran eden saldırı esasında Reflected XSS, Stored (Persistent) XSS ve DOM-Based XSS olmak üzere üç şekilde gerçekleştirilir.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Mobil sürümden çık