<div>CROSS SİTE REQUEST FORGERY (CSRF) NEDİR?
Türkçe açılımı ?Siteler Arası İstek Sahtekârlığı? şeklinde olan CSRF zafiyeti; web uygulamasını kullanmakta olan kullanıcıların istekleri dışında işlemler yürütülmesidir. Uygulamaya giden isteklerin hangi kaynaktan ve nasıl gönderildiği kontrol edilmeyen sistemlerde ortaya çıkan bu zafiyet, aslında uygulamayı kodlayan yazılımcıların gözünden kaçan bir ayrıntıdır diyebiliriz. Genelde CSRF veya XSRF şeklinde kısaltılan bu güvenlik açığı ?Session Riding? olarak da bilinmektedir.

CSRF İLE NE GİBİ ZARARLAR VERİLEBİLİR?
Bu güvenlik açığı ile verilebilecek zararlar uygulamayı kullanmakta olan kullanıcının yetkilerine bağlıdır. Yani bir sistem yöneticisinin hesabı ile standart kullanıcının hesapları üzerinden uygulanacak bir CSRF açığının vereceği zararın boyutları farklıdır. Bunu bir örnek ile açıklamak gerekirse, bilgisayar kullanmakta olan birisinin yanına oturup bilgisayarını beraber kullandığınızı düşünün. Kurban olarak seçtiğiniz kişi sizin yanına oturduğunuzu ve bilgisayarı beraber kullandığınızı fark etmez. Bu durumda, kullanıcı uygulamayı kullanmaya devam ettiği sürece onun istekleri dışında kendi isteklerinizi sisteme gönderebilirsiniz.

SEÇİLEN HEDEFİN OTURUMUNA NASIL SIZILIR?
Banka hesabını incelemekte olan birisinin aynı zamanda yan sekmede maillerini kontrol ettiğini düşünelim. Hedef kişi, saldırgan tarafından gönderilen zararlı bir bağlantıya tıkladığı zaman, hedef kullanıcı mail sekmesinde olmasına rağmen saldırgan, hedefin yan sekmesinde açık bulunan banka sayfasına ve verilerine erişebilir. Çünkü hedefin banka sayfasındaki oturumu halen aktif olduğu için saldırganın ihtiyacı olan bilgiler tarayıcıda halen mevcut durumdadır. Hedef kullanıcı oturumunu sonlandırmadığı sürece saldırgan kişi ?para transferi, kredi çekme? gibi ciddi zararlara yol açabilecek işlemleri arka planda gizlice gerçekleştirebilir. Yine de bu senaryonun gerçekleşmesi için hedef kullanıcının illaki zararlı bir linke tıklaması gerekmiyor. Kullanılan web sitesinde bu zafiyet varsa, sayfa yüklendiği an saldırgan için tabiri caizse bir kapı açılmış oluyor. Veya herhangi bir zararlı site üzerinden, tıklama şartı bile olmadan, sayfa yüklendiği an yine hedef kullanıcının oturumuna sızılabilir.
Şimdi konuyu örnek bir senaryo ile daha iyi anlamaya çalışalım:

ZAFİYETLİ SENARYO:
Şu anda banka sisteminin POST methodunu kullandığını ve savunmasız talebin şuna benzediğini varsayalım:

POST http://bankasitesi.com/transfer.do hedef_bankahesabı=MUSTAFA ve miktarı = 100

Böyle bir istek az önceki gibi standart A veya IMG etiketleri kullanılarak teslim edilemez, ancak bir FORM etiketi kullanılarak teslim edilebilir:







Bu form, kullanıcının gönder düğmesine basmasını gerektirecektir, ancak bu, JavaScript kullanılarak otomatik olarak da çalıştırılabilir: