CSRF Nedir

 CSRF Nedir
Okunuyor CSRF Nedir

CSRF Nedir

Siteler Arası İstek Sahteciliği (CSRF), kimliği doğrulanmış kullanıcıları, o anda kimliklerinin doğrulandığı bir Web uygulamasına istek göndermeye zorlayan bir saldırıdır.

CSRF saldırıları, bir Web uygulamasının kimliği doğrulanmış bir kullanıcıya duyduğu güvenden yararlanır. (Tersine, siteler arası komut dosyası çalıştırma (XSS) saldırıları, bir kullanıcının belirli bir Web uygulamasında sahip olduğu güvenden yararlanır).

Bir CSRF saldırısı, bireysel bir kullanıcı tarafından oluşturulan bir istek ile bir kullanıcının rızası olmadan oluşturulan bir istek arasında ayrım yapamıyorsa, bir Web uygulamasındaki bir güvenlik açığından yararlanır.

Bir saldırganın bir CSRF saldırısı gerçekleştirme amacı, kullanıcıyı durum değiştirme isteği göndermeye zorlamaktır.

CSRF Nedir
CSRF Nedir

Örnekler şunları içerir:

  • Kayıt gönderme veya silme.
  • İşlem gönderme.
  • Bir ürün satın almak.
  • Şifre değiştirme.
  • Mesaj gönderme.

Sosyal mühendislik platformları genellikle saldırganlar tarafından bir CSRF saldırısı başlatmak için kullanılır. Bu, kurbanı, belirli bir Web uygulaması için kötü amaçlarla oluşturulmuş, yetkisiz bir istek içeren bir URL’yi tıklaması için kandırır.

Kullanıcının tarayıcısı daha sonra bu kötü amaçla hazırlanmış isteği hedeflenen bir Web uygulamasına gönderir. İstek, belirli bir web sitesiyle ilgili tüm kimlik bilgilerini de içerir (örneğin, kullanıcı oturumu tanımlama bilgileri).

Kullanıcı, hedeflenen bir Web uygulamasıyla etkin bir oturumdaysa uygulama bu yeni isteği kullanıcı tarafından gönderilen yetkili bir istek olarak değerlendirir. Böylece saldırgan, Web uygulamasının CSRF güvenlik açığından yararlanmayı başarır.

Bir Uygulama, Siteler Arası İstek Sahteciliği Saldırısını Nasıl Önleyebilir?

CSRF Nedir
CSRF Nedir

Bir CSRF saldırısını yenmek için uygulamaların, HTTP isteğinin uygulamanın kullanıcı arabirimi aracılığıyla meşru bir şekilde oluşturulup oluşturulmadığını belirlemenin bir yoluna ihtiyacı vardır.

Bunu başarmanın en iyi yolu bir CSRF belirtecidir. Bir CSRF belirteci, CSRF saldırılarını önlemek için kullanılan güvenli bir rastgele belirteçtir (örneğin, eş zamanlayıcı belirteci veya sorgulama belirteci). Belirtecin, kullanıcı oturumu başına benzersiz olması ve tahmin edilmesini zorlaştırmak için büyük rastgele değere sahip olması gerekir.

Bir CSRF güvenli uygulaması, her kullanıcı oturumu için benzersiz bir CSRF belirteci atar. Bu belirteçler, kritik sunucu tarafı işlemleriyle ilgili HTML formlarının gizli parametreleri içine eklenir. Daha sonra istemci tarayıcılarına gönderilirler.

Hangi sunucu tarafı işlemlerinin doğası gereği hassas olduğunu belirlemek uygulama ekibinin sorumluluğundadır. CSRF belirteçleri, HTML formunun bir parçası olmalıdır; oturum çerezlerinde saklanmaz.

Öngörülemeyen bir parametre eklemenin en kolay yolu, kullanıcının oturum kimliğini hash etmek için güvenli bir hash işlevi (örn., SHA-2) kullanmaktır. Rastgeleliği sağlamak için belirteçler, kriptografik olarak güvenli bir rastgele sayı üreteci tarafından oluşturulmalıdır.

Bir kullanıcı bu kritik işlemleri başlattığında, tarayıcı tarafından oluşturulan bir istek, ilişkili CSRF belirtecini içermelidir. Bu, son kullanıcı isteğinin meşruluğunu doğrulamak için uygulama sunucusu tarafından kullanılacaktır. CSRF belirteci testle eşleşmezse uygulama sunucusu isteği reddeder.

Siteler Arası İstekler Nasıl Tehlikeli Olabilir?

Bir web sitesi, bir kullanıcı adına başka bir web sitesinden veri talep ettiğinde, talep doğrulanmadığı, yani oturum çerezi gönderilmediği sürece güvenlik endişesi yoktur.

Ancak, istekle birlikte kullanıcının oturum tanımlama bilgisi gönderildiğinde, saldırganlar, kurbanın tarayıcısı ile web sunucusu arasındaki güven ilişkisini kötüye kullanan bir siteler arası istek sahteciliği saldırısı başlatabilir.

CSRF Savunma Stratejileri

Artık bir CSRF saldırısının nasıl gerçekleştiğini daha iyi anlamalısınız. Uygulamalarınızda bunları nasıl önleyebileceğinize bir göz atalım.

Temel olarak, iki stratejiniz var:

  1. Aldığınız isteğin geçerli olduğundan, yani sunucu tarafından oluşturulan bir formdan geldiğinden emin olun.
  • İsteğin meşru bir istemciden geldiğinden emin olmak.

İstekleri Doğrulama

Saldırganlar, bir formda veya bir sorgu dizesinde gönderilecek parametreleri ve değerleri biliyorlarsa bir CSRF saldırısı gerçekleştirebilirler.

Bu saldırıları önlemek için meşru kullanıcı tarafından gönderilen verileri saldırgan tarafından gönderilenlerden ayırt etmenin bir yoluna ihtiyacınız vardır. Başka bir deyişle, istekleri doğrulamak ve yalnızca meşru olanları kabul etmek için bir yola ihtiyacınız var.

CSRF belirteci kullanma

İstekleri doğrulamak için tipik yaklaşım, bazen anti-CSRF belirteci olarak da adlandırılan bir CSRF belirteci kullanmaktır.

CSRF belirteci, sunucu tarafından oluşturulan bir formdan veya bağlantıdan istek gönderdiğinizi kanıtlayan bir değerdir. Başka bir deyişle, sunucu istemciye bir form gönderdiğinde, istemcinin geri göndermesi gereken benzersiz bir rastgele değer (CSRF belirteci) ekler.

Sunucu bu formdan istek aldığında, alınan belirteç değerini daha önce oluşturulan değerle karşılaştırır. Eşleşirlerse, isteğin geçerli olduğunu varsayar.

Siteler Arası İstek Sahteciliği (CSRF) Nasıl Çalışır?

Kullanıcılar bir siteye erişmeye çalıştığında, tarayıcıları genellikle oturum açma işleminin daha uygun olması için istekleriyle birlikte siteyle ilişkili tüm kimlik bilgilerini otomatik olarak içerir.

Bu kimlik bilgileri, kullanıcının oturum tanımlama bilgisini, temel kimlik doğrulama bilgilerini, IP adresini, Windows etki alanı kimlik bilgilerini vb. içerebilir. Bununla birlikte, kullanıcının sitede kimliği doğrulandıktan sonra, sitenin sahte bir isteği meşru bir kullanıcı isteğinden ayırt etmesinin hiçbir yolu yoktur.

Bir saldırgan, bir CSRF saldırısı yoluyla kurbanın kimliğini ve erişimini birlikte seçerek, bir kullanıcının istenmeyen eylemler gerçekleştirmesini sağlayabilir. Tipik olarak, saldırgan bir sosyal mühendislik tekniğini kullanarak bir e-posta, sohbet mesajı veya benzer bir iletişim biçimi kullanarak kurbanı bir bağlantıya tıklamaya ikna eder.

Kullanıcı daha sonra bilmeden e-posta mesajında ​​veya belirli bir görev URL’si isteyen bir site sayfasını yükledikten sonra kötü amaçlı HTML veya JavaScript koduyla karşılaşabilir. Ardından görev, doğrudan veya siteler arası komut dosyası çalıştırma kusuru kullanılarak yürütülür. Kullanıcı genellikle kötü niyetli bir eylem gerçekleşene kadar herhangi bir şey olduğunun farkında değildir.

CSRF saldırıları genellikle sunucuda durum değişikliğine neden olan işlevleri hedefler ancak hassas verilere erişmek için de kullanılabilir.

 

İşe Yaramayan Önlemlere Örnekler

Çok Adımlı İşlemler: Saldırganın her birini tahmin edebildiği/belirleyebildiği sürece kaç adım olduğu önemli değildir.

HTTPS: Her zaman iyi bir fikirdir, ancak CSRF’ye karşı koruma sağlamak için hiçbir şey yapmaz.

URL Yeniden Yazma: Bu, saldırganların bir CSRF saldırısı sırasında kurbanın oturum kimliğini tahmin etmesini engeller, ancak daha sonra saldırganın bunu URL’de görmesine izin verir. Bir kusuru diğeriyle değiştirmek iyi bir fikir değil.

Gizli Tanımlama Bilgisi Kullanma: İsteğin bir parçası olarak gizli bir tanımlama bilgisi bile gönderilir, bu da saldırganın bunu kullanmaya devam edebileceği anlamına gelir.

Yalnızca POST İsteklerini Kabul Etme/GET İsteklerinden Kaçınma: Sahte POST istekleri, bir CSRF saldırısı yürütmek için hala kullanılabilir.

HTTP İstekleri ve Çerezler Nelerdir?

1. HTTP GET İsteği

Bu, bir web sunucusundan veri istemek için kullanılan bir istektir (örneğin, bir URL yazarak (bir web sitesi istemek) ve bunun yüklenmesiyle sonuçlanır).

2. HTTP POST İsteği

Bu, bir web sunucusuna veri göndermek için kullanılan bir istektir (örneğin, bir web formu gönderimi).

Bazı GET ve POST istekleri, kullanıcı etkileşimi olmadan otomatik olarak tetiklenir (örneğin, arama önerileri getirme veya img src özniteliğiyle resim içeriği yükleme).

Oturum Çerezleri

Oturum tanımlama bilgileri, HTTP’nin durumu işleme biçimidir (çünkü durumu yerel olarak işlemez). Web siteleri, kullanıcıları tanımlamak ve oturumlarını korumak için oturum tanımlama bilgilerini (benzersiz bir kimlik içeren) kullanır.

Ayarlandıktan sonra, kullanıcının tarayıcısı, siteye kullanıcıyı tanımlamak için yaptığı her istekte çerezi sunucuya gönderir.

Saldırgan, kullanıcının tarayıcısını bir istek yürütmeye zorlayarak kullanıcının kimliğine bürünmek için tanımlama bilgisinden yararlanabilir. Kullanıcı siteye zaten giriş yaptıysa, çerez istekle birlikte otomatik olarak gönderilir.

CSRF Belirteçleri (Tokenleri) Nelerdir?

CSRF Nedir
CSRF Nedir

CSRF belirteci, sunucu tarafı bir uygulama tarafından oluşturulan ve istemci tarafından yayınlanan sonraki HTTP isteklerine dahil edilmek üzere istemciye gönderilen benzersiz, öngörülemeyen bir gizli değerdir.

Belirteç verildikten sonra, istemci bir istekte bulunduğunda, sunucu isteğin beklenen belirteci içerip içermediğini kontrol eder ve belirteç eksik veya geçersizse onu reddeder.

CSRF belirteçleri, CSRF saldırılarını önleyebilir. Çünkü saldırganların bir kurbana besleyebilecekleri tamamen geçerli HTTP istekleri oluşturmasını engeller. Saldırgan, kullanıcının CSRF belirtecinin değerini belirleyemez veya tahmin edemez, bu nedenle oluşturduğu herhangi bir istek uygulama tarafından kabul edilmemelidir.

Yorum Yap