FixVibe
Covered by FixVibehigh

CSRF Koruması: Yetkisiz Durum Değişikliklerine Karşı Savunma

Siteler Arası İstek Sahteciliği (CSRF), web uygulamaları için önemli bir tehdit olmaya devam ediyor. Bu araştırma, Django gibi modern çerçevelerin korumayı nasıl uyguladığını ve SameSite gibi tarayıcı düzeyindeki özelliklerin yetkisiz isteklere karşı nasıl derinlemesine savunma sağladığını araştırıyor.

CWE-352

Etki

Siteler Arası İstek Sahteciliği (CSRF), bir saldırganın kurbanın tarayıcısını, kurbanın kimliğinin doğrulandığı farklı bir web sitesinde istenmeyen eylemler gerçekleştirmesi için kandırmasına olanak tanır. Tarayıcılar, isteklere çerezler gibi ortam kimlik bilgilerini otomatik olarak dahil ettiğinden, bir saldırgan, kullanıcının bilgisi olmadan şifreleri değiştirme, verileri silme veya işlemleri başlatma gibi durum değiştiren işlemleri taklit edebilir.

Temel Neden

CSRF'nin temel nedeni, web tarayıcısının, bir alan adına bir istek yapıldığında, isteğin kaynağına bakılmaksızın, bir alan adı ile ilişkili çerezleri gönderme yönündeki varsayılan davranışıdır. Talebin kaynağı [S1]. Bir isteğin, uygulamanın kendi kullanıcı arayüzünden kasıtlı olarak tetiklendiğine dair özel bir doğrulama olmadan, sunucu, meşru bir kullanıcı eylemi ile sahte bir eylem arasında ayrım yapamaz.

Django CSRF Koruma Mekanizmaları

Django, ara yazılım ve şablon entegrasyonu [S2] aracılığıyla bu riskleri azaltmak için yerleşik bir savunma sistemi sağlar.

Ara Yazılım Aktivasyonu

django.middleware.csrf.CsrfViewMiddleware, CSRF korumasından sorumludur ve genellikle [S2] varsayılan olarak etkinleştirilir. CSRF saldırılarının zaten [S2] ile gerçekleştirildiğini varsayan herhangi bir görünüm ara yazılımından önce konumlandırılmalıdır.

Şablon Uygulaması

Tüm dahili POST formları için geliştiricilerin, {% csrf_token %} etiketini <form> öğesi [S2] içine dahil etmesi gerekir. Bu, sunucunun daha sonra kullanıcının oturumuna göre doğruladığı benzersiz, gizli bir belirtecin isteğe dahil edilmesini sağlar.

Token Sızıntısı Riskleri

Kritik bir uygulama ayrıntısı, {% csrf_token %}'nin hiçbir zaman [S2] harici URL'lerini hedefleyen formlara dahil edilmemesi gerektiğidir. Bunu yapmak, gizli CSRF belirtecinin üçüncü bir tarafa sızdırılmasına neden olabilir ve potansiyel olarak kullanıcının oturum güvenliği [S2]'yi tehlikeye atabilir.

Tarayıcı Düzeyinde Savunma: SameSite Çerezleri

Modern tarayıcılar, derinlemesine bir [S1] savunma katmanı sağlamak amacıyla Set-Cookie başlığı için SameSite özelliğini sunmuştur.

  • Katı: Çerez yalnızca birinci taraf bağlamında gönderilir; bu, URL çubuğundaki sitenin, çerezin alan adı [S1] ile eşleştiği anlamına gelir.
  • Gevşek: Çerez, siteler arası alt istekler (resimler veya çerçeveler gibi) üzerine gönderilmez, ancak bir kullanıcı, örneğin [S1] standart bağlantısını takip ederek kaynak siteye gittiğinde gönderilir.

FixVibe bunu nasıl test ediyor?

FixVibe artık geçitli aktif kontrol olarak CSRF korumasını içeriyor. Etki alanı doğrulamasının ardından active.csrf-protection, keşfedilen durum değiştiren formları inceler, CSRF belirteci şeklindeki girişleri ve SameSite çerez sinyallerini kontrol eder, ardından düşük etkili bir sahte kaynak gönderimi gerçekleştirmeye çalışır ve yalnızca sunucu bunu kabul ettiğinde rapor verir. Çerez kontrolleri aynı zamanda CSRF savunmasını derinlemesine azaltan zayıf SameSite özelliklerini de işaretler.