Tek tıklamayla saldırı veya oturum yönlendirme olarak da bilinen Siteler Arası İstek Sahteciliği (CSRF), saldırganların kullanıcıları gerçekleştirmeyi amaçlamadıkları eylemleri gerçekleştirmeleri için kandırmalarına olanak tanıyan bir web güvenlik açığıdır.
Bu eylemler, kullanıcının kimliğinin doğrulandığı bir web uygulamasında gerçekleştirilir ve saldırgan, web uygulamasının, istekle birlikte otomatik olarak oturum çerezleri veya diğer kimlik bilgilerini gönderen kullanıcının tarayıcısına güvendiği gerçeğinden yararlanır.
Bu tür bir saldırı, yetkisiz fon transferleri, kimlik bilgileri değişiklikleri ve hatta hesapların ele geçirilmesi gibi ciddi sonuçlara yol açabilir.
Bu makalede CSRF’nin mekaniğini, nasıl çalıştığını, başarılı bir CSRF saldırısının potansiyel etkisini, güvenlik açığı örneklerini ve CSRF’yi önlemenin çeşitli yöntemlerini inceleyeceğiz.
Ek olarak, bu güvenlik açığının tehlikelerini göstermek için CSRF saldırılarının gerçek dünyadaki örneklerine bakacağız.
CSRF nedir?
CSRF saldırıları, modern web uygulamalarının kullanıcıları tanımlamak için oturum çerezleri gibi kimlik doğrulama mekanizmalarına dayanması gerçeğinden yararlanır.
Bir kullanıcının kimliği doğrulandığında, tarayıcı, web uygulamasına yapılacak sonraki herhangi bir isteğe otomatik olarak oturum çerezini ekler.
Güvenlik açığının yattığı yer burasıdır. Saldırgan, kurbanın tarayıcısı tarafından bilgisi olmadan yürütülen kötü amaçlı bir istek oluşturabilir.
Oturum çerezi otomatik olarak dahil edildiğinden web uygulaması, talebi mağdur tarafından yapılmış gibi işler.
Temel Özellikler:
- Güvenin İstismarı: CSRF, bir web uygulamasının kullanıcının tarayıcısına olan güvenini kötüye kullanır.
- Kasıtsız Eylemler: Mağdurun farkında olmadan web uygulamasında hesap bilgilerini değiştirme, para aktarma veya veri silme gibi eylemler gerçekleştirmesi.
- Oturum Yönetimi: Bu saldırı genellikle başarılı olur çünkü CSRF belirteçleri veya SameSite çerezleri gibi azaltıcı etkenler mevcut olmadığı sürece modern tarayıcılar çapraz kaynak isteklerine oturum çerezlerini otomatik olarak dahil eder.
CSRF Nasıl Çalışır?
CSRF’nin nasıl çalıştığını anlamak için bir saldırının başarılı olması için karşılanması gereken koşulların ayrıntılı bir şekilde incelenmesi önemlidir. Yaygın bir analize göre aşağıdaki koşullar CSRF saldırısını mümkün kılar:
CSRF Saldırısının Koşulları:
- İlgili Eylem: Saldırganın kurbandan yapmasını istediği bir eylem olmalıdır. Bu ayrıcalıklı bir eylem (kullanıcı izinlerini değiştirmek gibi) veya kullanıcıya özel veriler üzerinde yapılan herhangi bir eylem (kurbanın şifresini değiştirmek gibi) olabilir.
- Çerez Tabanlı Oturum Yönetimi: Web uygulaması, oturum yönetimi için çerezlere güvenmelidir ve tarayıcı, uygulamaya yapılan herhangi bir talepte bu çerezleri otomatik olarak içermelidir.
- Öngörülemeyen İstek Parametresi Yok: Saldırganın isteği yürütmek için gerekli tüm parametreleri belirleyebilmesi gerekir. Örneğin, şifre değiştirme isteği mevcut şifreyi gerektiriyorsa, saldırgan bu şifreyi bilmediği sürece saldırı başarısız olacaktır.
CSRF Saldırısının Anatomisi
- Kötü Amaçlı İstek Oluşturma: Saldırgan, yürütüldüğünde kurban adına hareket edecek kötü niyetli bir istek oluşturur. Bu bir HTML formu, bir bağlantı ve hatta bir resim etiketi kullanılarak yapılabilir.
Örnek:
- Mağdurun Talebi Yerine Getirmesini Teşvik Etmek: Saldırganın, kurbanı kötü amaçlı bir sayfayı ziyaret etmesi veya kötü amaçlı bir bağlantıya tıklaması için kandırması gerekir. Örneğin, saldırgan kurbana kötü amaçlı sayfanın bağlantısını içeren bir e-posta gönderebilir veya kötü amaçlı isteği kurbanın ziyaret etme olasılığı bulunan bir web sayfasına yerleştirebilir.
- Kurbanın Tarayıcısı İsteği Gönderir: Kurban kötü amaçlı sayfayı ziyaret ettiğinde tarayıcı, kurbanın oturum çerezi de dahil olmak üzere otomatik olarak hedef web uygulamasına istek gönderir.
- Web Uygulaması Talebi İşler: Oturum çerezi otomatik olarak dahil edildiğinden web uygulaması, isteği mağdur tarafından yapılmış gibi işler. Eylem mağdurun bilgisi dışında gerçekleştirilir.
CSRF Saldırısı Örneği
Bir web uygulamasının kullanıcıların e-posta adreslerini aşağıdaki gibi basit bir HTTP isteğiyle değiştirmelerine izin verdiğini varsayalım:
POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE
[email protected]
Saldırgan, kurbanın e-posta adresini kendisininkiyle değiştiren kötü amaçlı bir istek oluşturabilir:
Kurban, kötü amaçlı formun bulunduğu sayfayı ziyaret ettiğinde, tarayıcısı otomatik olarak oturum çerezini içerecek ve savunmasız web uygulaması, kurbanın hesabıyla ilişkili e-posta adresini değiştirecektir.
CSRF Saldırılarının Etkisi
CSRF saldırısının etkisi, saldırganın kurbanı gerçekleştirmeye teşvik edebileceği eylemin niteliğine bağlıdır. Bazı yaygın sonuçlar şunlardır:
- Hesap Devralma: Saldırgan mağdurun e-posta adresini değiştirebilir veya şifresini sıfırlayabilirse mağdurun hesabının kontrolünü ele geçirebilir.
- Hileli İşlemler: Bankacılık veya e-ticaret web sitelerinde CSRF saldırıları, yetkisiz para transferleri veya satın alma işlemleriyle sonuçlanabilir.
- Veri Manipülasyonu: Saldırganlar kişisel bilgileri değiştirebilir, verileri silebilir veya kullanıcı ayarlarını değiştirebilir.
- Ayrıcalık Yükseltmesi: Mağdurun yönetici ayrıcalıkları varsa, saldırgan CSRF’yi kullanarak uygulamanın tamamı veya hassas veriler üzerinde kontrol sahibi olabilir.
CSRF Güvenlik Açıklarına Örnekler
- Kullanıcı Bilgilerini Değiştirme: CSRF saldırısının yaygın bir örneği, bir kullanıcının hesabının e-posta adresini veya şifresini değiştirmektir. Web uygulaması isteklerin kaynağını doğrulamazsa saldırgan kurbanın kimlik bilgilerini kolaylıkla güncelleyebilir.
- Siparişleri veya Ödemeleri Gönderme: E-ticaret sitelerinde saldırgan CSRF’yi kurban adına sipariş vermek veya ödeme başlatmak için kullanabilir.
- Kullanıcı İzinlerini Değiştirme: Daha karmaşık web uygulamalarında, bir CSRF güvenlik açığı mevcutsa, saldırganlar kullanıcı rollerini veya izinlerini değiştirerek ayrıcalık artışına yol açabilir.
CSRF Nasıl Önlenir?
Çeşitli stratejiler CSRF saldırıları riskini azaltabilir. Bu savunmalar, uygulamanın kullanıcıdan gelen meşru istekler ile bir saldırgandan gelen kötü niyetli istekler arasında ayrım yapabilmesini sağlamayı amaçlamaktadır.
1. CSRF Tokenları
CSRF’ye karşı en etkili savunma CSRF tokenlarının kullanılmasıdır. CSRF belirteci, sunucu tarafından oluşturulan benzersiz, gizli ve öngörülemeyen bir değerdir.
Bu belirteç, her form gönderimine veya hassas isteğe dahil edilir. Sunucu, isteğin amaçlanan kullanıcıdan geldiğinden emin olmak için belirteci doğrular.
Nasıl çalışır?:
- Sunucu bir CSRF belirteci oluşturur ve bunu HTML formuna gizli alan olarak ekler.
- Form gönderildiğinde sunucu, belirtecin sunucuda saklanan belirteçle eşleşip eşleşmediğini kontrol eder.
- Belirtecin eksik veya yanlış olması durumunda istek reddedilir.
Örnek:
2. SameSite Çerezleri
SameSite çerez özelliği, çerezlerin isteklerle birlikte gönderilme şeklini kısıtlayan bir tarayıcı özelliğidir.
SameSite niteliğini Lax veya Strict olarak ayarladığınızda, tarayıcı yalnızca aynı siteden gelen isteklere çerezleri dahil edecek ve böylece CSRF saldırılarını önleyecektir.
Örnek:
Set-Cookie: sessionId=abc123; SameSite=Gevşek
- Gevşek: Çerezler üst düzey gezinme istekleriyle (GET istekleri) gönderilir ancak siteler arası POST istekleriyle gönderilmez.
- Sıkı: Çerezler herhangi bir siteler arası istekle, hatta üst düzey gezinmelerle bile gönderilmez.
3. Başlık Doğrulamasına bakın
Bazı web uygulamaları, isteklerin kaynağını doğrulamak için Yönlendiren başlığını kullanır. Sunucu, isteğin aynı etki alanından gelip gelmediğini kontrol ederek yetkisiz kaynaklardan gelen istekleri önleyebilir.
Bununla birlikte, Referer başlığı bazı proxy’ler veya tarayıcılar tarafından değiştirilebildiğinden veya kaldırılabildiğinden, bu yöntem CSRF belirteçlerinden daha az güvenilirdir.
4. Çift Gönderim Çerezi
Çift gönderimli çerez tekniğinde, sunucu bir CSRF belirteci oluşturur ve bunu hem çerezde hem de gizli form alanında saklar.
Form gönderildiğinde sunucu, formdaki belirtecin çerezdeki belirteçle eşleşip eşleşmediğini kontrol eder. Bu, isteğin meşru olmasını sağlar.
5. CAPTCHA’lar
Kullanıcıların hassas eylemler gerçekleştirmeden önce CAPTCHA’yı tamamlamasını zorunlu kılmak, otomatik CSRF saldırılarını önleyebilir.
Etkili olmasına rağmen bu yöntem kullanıcı deneyimini olumsuz etkileyebilir ve her zaman en iyi çözüm değildir.
Gerçek Dünya CSRF Saldırıları
Gerçek dünyadaki CSRF saldırısının dikkate değer bir örneği, Gmail’in CSRF’ye karşı savunmasız olduğunun tespit edildiği 2007 yılında meydana geldi.
Saldırganlar, kullanıcıların e-posta yönlendirme ayarlarını değiştirerek e-postaları ele geçirmelerine olanak sağlamak için bu güvenlik açığından yararlanabilir.
Başka bir örnek, saldırganların kurban adına kötü amaçlı içerik yayınlamak veya profil bilgilerini değiştirmek için güvenlik açığını kullandığı sosyal medya platformlarına yapılan CSRF saldırılarını içerir.
Siteler Arası İstek Sahteciliği (CSRF), ele alınmadığı takdirde ciddi sonuçlara yol açabilecek tehlikeli bir web güvenlik açığıdır.
Saldırganlar, kullanıcıları istenmeyen isteklerde bulunmaları için kandırarak hesapları ele geçirebilir, para aktarabilir veya verileri değiştirebilir.
Ancak CSRF belirteçleri, SameSite çerezleri ve yönlendiren doğrulaması gibi uygun savunmalarla web geliştiricileri uygulamalarını bu tehdide karşı koruyabilir. CSRF’nin nasıl çalıştığını anlamak ve en iyi uygulamaları uygulamak, kullanıcıları bu tür saldırılardan korumak için çok önemlidir.