Siteler Arası İstek Sahteciliği (CSRF), bir web sitesinin güvenlik açıklarından yararlanmanın en eski yollarından biridir. Genellikle oturum açma gibi kimlik doğrulama gerektiren sunucu tarafı web anahtarlarını hedefler. Bir CSRF saldırısı sırasında, bir saldırgan kurbanını kendi adına yetkisiz, kötü niyetli bir web isteği yapmaya zorlamayı amaçlar.
Zayıf veya zayıf web sitesi güvenlik uygulamaları ve kullanıcının yolundaki dikkatsizlik, başarılı bir CSRF saldırısının yaygın nedenlerinden bazılarıdır.
Bir CSRF saldırısının ne olduğuna ve bir geliştirici veya kullanıcı olarak kendinizi bundan nasıl engelleyebileceğinize bakalım.
CSRF Saldırıları Sizi Nasıl Etkiler?
CSRF, kullanıcı oturum açma veya kimlik doğrulaması gerektiren web eylemleri sırasında yetkisiz istekleri uygulamak için kullanılan bir saldırıdır. CSRF saldırıları, bir kullanıcının kimlik bilgilerini çalmak için oturum kimliklerinden, çerezlerden ve diğer sunucu tabanlı güvenlik açıklarından yararlanabilir.
Örneğin, CSRF karşıtı prosedürleri etkinleştirmek, etki alanları arası kötü niyetli etkileşimleri önler.
Bu engel aşıldığında, bir saldırgan, kullanıcının tarayıcısı tarafından oluşturulan tanımlama bilgileri aracılığıyla kullanıcının oturum kimliğinden hızla yararlanabilir ve savunmasız web sitesine bir komut dosyası etiketi yerleştirebilir.
Saldırgan, bir kimliği manipüle ederek, ziyaretçileri başka bir web sayfasına yönlendirebilir veya bağlantılar göndermek için e-posta gibi sosyal mühendislik yöntemlerinden yararlanarak kurbanı kötü amaçlı yazılım indirmeye teşvik edebilir.
Kurban bu tür eylemleri gerçekleştirdikten sonra, kullanıcının hizmet sayfasına bir HTTP isteği gönderir ve istek eylemini saldırganın lehine yetkilendirir. Bu, şüphelenmeyen bir kullanıcı için yıkıcı olabilir.
Başarılı bir CSRF saldırısı, özellikle parola veya kullanıcı adı değiştirme istekleri gibi sunucu tabanlı eylemler sırasında, yetkili kullanıcıların erişim kimlik bilgilerini bir saldırgana kaybetmesine neden olabilir. Daha kötü senaryolarda, saldırgan tüm oturumu devralır ve kullanıcıların adına hareket eder.
CSRF, web üzerinden fon işlemlerini kaçırmak ve ayrıca kullanıcı adlarını ve şifreleri değiştirmek için kullanıldı, bu da kullanıcıların etkilenen hizmete erişimini kaybetmesine neden oldu.
Saldırganlar CSRF ile Oturumlarınızı Nasıl Ele Geçirir: Örnekler
CSRF saldırılarının ana hedefleri, bir kullanıcının kimlik doğrulamasını içeren web eylemleridir. Başarılı olmak için, kurbanın kasıtsız eylemlerine ihtiyacı var.
Bir CSRF saldırısı sırasında, GET, DELETE ve PUT eylemlerinin yanı sıra savunmasız POST istekleri bir saldırganın ana hedefleridir.
Şimdi bu terimlerin anlamlarına bakalım:
- GET: Veritabanından bir sonuç toplama isteği; örneğin, Google araması.
- POST: Genellikle web formları aracılığıyla istek göndermek için. POST isteği, bir kullanıcının kaydı veya oturum açma işlemi sırasında yaygındır, aksi takdirde kimlik doğrulama olarak bilinir.
- DELETE: Veritabanından bir kaynağı kaldırmak için. Bunu, hesabınızı belirli bir web hizmetinden her sildiğinizde yaparsınız.
- PUT: Bir PUT isteği, mevcut bir kaynağı değiştirir veya günceller. Bir örnek, Facebook adınızı değiştirmektir .
Pratikte, saldırganlar bir CSRF saldırısını yedeklemek için oturum ele geçirmeyi kullanır. Bu kombinasyonu kullanırken, saldırgan kurbanın IP adresini değiştirmek için bir ele geçirme kullanabilir.
IP adresindeki değişiklik daha sonra kurbanı, saldırganın CSRF aracılığıyla oluşturduğu çoğaltılmış bir form veya değiştirilmiş sunucu isteği gönderen aldatıcı bir bağlantı eklediği yeni bir web sitesine kaydeder.
Bundan şüphelenmeyen bir kullanıcı, yönlendirmenin servis sağlayıcıdan geldiğini düşünür ve saldırganın web sayfasındaki bağlantıya tıklar. Bunu yaptıktan sonra, bilgisayar korsanları, bilgileri olmadan sayfa yüklendiğinde bir form gönderir.
GET İsteği CSRF Saldırısı Örneği
Güvenli olmayan bir e-ticaret platformu üzerinden çevrimiçi ödeme yapmaya çalıştığınızı hayal edin. Platform sahipleri, işleminizi gerçekleştirmek için GET isteğini kullanır. Bu GET sorgusu şöyle görünebilir:
https://websiteurl/pay?amount=$10&company=[company ABC's account]
Bir korsan, GET isteğinin parametrelerini değiştirerek işleminizi kolayca çalabilir. Bunu yapmak için tek yapmaları gereken, adınızı onlarınkiyle değiştirmek ve daha da kötüsü, ödemeyi düşündüğünüz tutarı değiştirmek. Daha sonra orijinal sorguyu şuna benzer şekilde değiştirirler:
https://websiteurl/pay?amount=$20000&company=[attacker's account]
Bu değiştirilmiş GET isteğine bir bağlantıya tıkladığınızda, saldırganın hesabına kasıtsız bir transfer yapmış olursunuz.
GET istekleri aracılığıyla işlem yapmak kötü bir uygulamadır ve etkinlikleri saldırılara karşı savunmasız hale getirir.
POST İsteği CSRF Saldırısı Örneği
Ancak birçok geliştirici, POST isteğini kullanmanın web işlemleri yapmak için daha güvenli olduğuna inanmaktadır. Bu doğru olsa da, ne yazık ki, bir POST isteği de CSRF saldırılarına açıktır.
Bir POST isteğini başarılı bir şekilde ele geçirmek için, bir saldırganın tek ihtiyacı mevcut oturum kimliğiniz, bazı çoğaltılmış görünmez formlar ve bazen biraz sosyal mühendisliktir.
Örneğin, bir POST istek formu şöyle görünebilir:
Ancak bir saldırgan, yeni bir sayfa oluşturarak ve yukarıdaki formu şu şekilde değiştirerek kimlik bilgilerinizi değiştirebilir:
Değiştirilen formda, saldırgan miktar alanının değerini "30000" olarak ayarlar, alıcının hesap numarasını onunkiyle değiştirir, formu sayfa yüklendiğinde gönderir ve ayrıca form alanlarını kullanıcıdan gizler.
Geçerli oturumu ele geçirdiklerinde, işlem sayfanız, saldırganın sayfasına bir yönlendirme başlatır ve bu, ziyaret etme olasılığının en yüksek olduğunu bildikleri bir bağlantıya tıklamanızı ister.
Buna tıklamak, paranızı saldırganın hesabına aktaran çoğaltılmış formun gönderimini yükler. Bu, işlemin gerçekleşmesi için "gönder" gibi düğmelere tıklamanız gerekmediği anlamına gelir, çünkü JavaScript bunu bir sonraki web sayfasını yükledikten sonra otomatik olarak yapar.
Alternatif olarak, bir saldırgan, aynı sayfa yükleme formu gönderimini gerçekleştirmek için bir bağlantıya tıklamanızı isteyen HTML gömülü bir e-posta da hazırlayabilir.
Bir CSRF saldırısına karşı savunmasız olan başka bir eylem, bir PUT isteği örneği olan bir kullanıcı adı veya parola değişikliğidir. Saldırgan, istek formunuzu çoğaltır ve e-posta adresinizi onlarınkiyle değiştirir.
Ardından oturumunuzu çalar ve sizi bir sayfaya yönlendirir veya çekici bir bağlantıya tıklamanızı isteyen bir e-posta gönderir.
Ardından, parola sıfırlama bağlantısını sizinki yerine bilgisayar korsanının e-posta adresine gönderen değiştirilmiş bir form gönderir. Bu şekilde, bilgisayar korsanı şifrenizi değiştirir ve hesabınızdan çıkış yapmanızı sağlar.
Bir Geliştirici Olarak CSRF Saldırıları Nasıl Önlenir?
Bir CSRF'yi önlemenin en iyi yöntemlerinden biri, sunucuda bir durum değişikliği çalıştırmak için oturum tanımlama bilgilerine bağlı kalmak yerine sık değişen belirteçler kullanmaktır.
İlgili: Dijital Güvenliği Anlamak ve Gizliliğinizi Korumak için Ücretsiz Kılavuzlar
Birçok modern arka uç çerçevesi, CSRF'ye karşı güvenlik sunar. Dolayısıyla, CSRF'ye karşı kendinizi güçlendirmenin tekniklerinden kaçınmak istiyorsanız, yerleşik anti-CSRF belirteçleriyle birlikte gelen sunucu tarafı çerçevelerini kullanarak kolayca üstesinden gelebilirsiniz.
CSRF karşıtı bir belirteç kullandığınızda, sunucu tabanlı istekler, daha statik savunmasız oturum tanımlama bilgileri yerine rastgele dizeler oluşturur. Bu şekilde, oturumunuzu korsan tarafından tahmin edilmekten korursunuz.
Web uygulamanızda işlem yürütmek için iki faktörlü bir kimlik doğrulama (2FA) sistemi uygulamak, CSRF olasılığını da azaltır.
Yorum formları gibi kullanıcı alanlarına komut dosyası eklemeyi içeren siteler arası komut dosyası oluşturma (XSS) aracılığıyla bir CSRF başlatmak mümkündür. Bunu önlemek için, web sitenizdeki tüm kullanıcı formu alanlarında HTML otomatik çıkışını etkinleştirmek iyi bir uygulamadır. Bu eylem, form alanlarının HTML öğelerini yorumlamasını engeller.
Kullanıcı Olarak CSRF Saldırıları Nasıl Önlenir?
Kimlik doğrulama içeren bir web hizmetinin kullanıcısı olarak, saldırganların kimlik bilgilerinizi ve oturumlarınızı CSRF aracılığıyla çalmasını önlemede de bir rolünüz vardır.
Para transferini içeren etkinlikler sırasında güvenilir web hizmetlerini kullandığınızdan emin olun.
Buna ek olarak, kullanıcıları oturuma maruz kalmaktan koruyan güvenli web tarayıcıları ve ayrıca arama veri sızıntılarına karşı koruma sağlayan güvenli arama motorları kullanın.
İlgili: Verilerinize Saygı Gösteren En İyi Özel Arama Motorları
Bir kullanıcı olarak, kimliğinizi web üzerinden doğrulamak için Google Authenticator gibi üçüncü taraf kimlik doğrulayıcılara veya alternatiflerine de güvenebilirsiniz .
Bir saldırganın oturumunuzu ele geçirmesini durdurmak için kendinizi çaresiz hissedebilseniz de, tarayıcınızın parolalar ve diğer oturum açma ayrıntıları gibi bilgileri saklamamasını sağlayarak bunu önlemeye yardımcı olabilirsiniz.
Web Güvenliğinizi Güçlendirin
Geliştiricilerin, geliştirme ve dağıtım sırasında web uygulamalarını güvenlik ihlalleri açısından düzenli olarak test etmesi gerekir.
Ancak, diğerlerini engellemeye çalışırken diğer güvenlik açıklarını ortaya çıkarmak yaygındır. Bu nedenle, bir CSRF'yi engellemeye çalışırken diğer güvenlik parametrelerini ihlal etmediğinizden emin olun.