Giriş formlarının CSRF saldırılarına karşı belirteçlere ihtiyacı var mı?


161

Şimdiye kadar öğrendiğim kadarıyla, jetonların amacı, bir saldırganın bir form göndermesini önlemektir.

Örneğin, bir web sitesinde alışveriş sepetinize ürün ekleyen bir form varsa ve bir saldırgan, alışveriş sepetinize istemediğiniz öğelerle spam gönderebilirse.

Bu, alışveriş sepeti formu için birden fazla geçerli giriş olabileceği için, saldırganın yapması gereken tek şey web sitesinin sattığı bir öğeyi bilmek.

Bu durumda jetonların nasıl çalıştığını ve güvenlik eklediğini anlıyorum, çünkü kullanıcının sepete eklenen her öğe için formun "Doldur" düğmesine gerçekten doldurduğundan ve bastığından emin oluyorlar.

Bununla birlikte, jetonlar kullanıcı giriş formuna kullanıcı adı ve şifre gerektiren herhangi bir güvenlik ekliyor mu?

Kullanıcı adı ve şifre çok benzersiz olduğu için, saldırganın giriş sahteciliğinin çalışması için her ikisini de bilmesi gerekir (belirteç kurulumunuz olmasa bile) ve bir saldırgan zaten bunu biliyorsa, web sitesinde oturum açabilirdi kendisi. Bahsetmemek gerekirse, kullanıcının kendisini oturum açmasını sağlayan bir CSRF saldırısının hiçbir şekilde pratik bir amacı olmayacaktır.

CSRF saldırıları ve jetonları hakkındaki anlayışım doğru mu? Ve şüpheli olduğum için kullanıcı giriş formları için işe yaramaz mı?


Muhtemelen bu konuda varsayılan şifre kullandığınız için yönlendiricinizi ele geçirebilirler ve giriş için CSRF korumalı değildir.
AbiusX

Evet, Diğer web siteleri giriş formunuzu taklit edemez. Bunu yaparak ne başarabilirler? Önce buna izin vermek istemiyorsun. İkincisi: Yanlış şifre nedeniyle kullanıcıyı engellemek gibi çok kolay arıza durumları zaman kaçınılabilir.
mayankcpdixit

Yanıtlar:


126

Evet. Genel olarak, giriş formlarınızı diğer tüm CSRF saldırılarına karşı korumanız gerekir.

Aksi takdirde siteniz bir tür "güvenilir alan kimlik avı" saldırısına karşı savunmasızdır. Kısacası, CSRF savunmasız bir giriş sayfası, bir saldırganın bir kullanıcı hesabını kurbanla paylaşmasını sağlar.

Güvenlik açığı şu şekilde oynar:

  1. Saldırgan, güvenilen etki alanında bir ana bilgisayar hesabı oluşturur
  2. Saldırgan, bu ana bilgisayar hesabının kimlik bilgileriyle kurbanın tarayıcısında bir giriş isteği oluşturur
  3. Saldırgan, kurbanı ana bilgisayar hesabı yoluyla oturum açtıklarını fark etmeyebilecekleri güvenilir siteyi kullanmaya yönlendirir.
  4. Artık saldırgan, tarayıcısı ana bilgisayar hesabıyla oturum açarken kurbanın "oluşturduğu" (kasıtlı veya kasıtsız) herhangi bir veriye veya meta verilere erişebilir

İlgili bir örnek olarak YouTube'u düşünün . YouTube, kullanıcıların "kendi" görüntüleme geçmişinin bir kaydını görmelerine izin verdi ve giriş formları CSRF'ye karşı savunmasızdı! Yani sonuç olarak, bir saldırganın bir şifre ile bir hesap kurmak olabilir onlar biliyordu kullanarak YouTube'a kurban log o kurban izliyordum ne videoları takip - Hesap.

Bu yorum dizisinde bunun gibi gizlilik ihlalleri için "yalnızca" kullanılabileceğini ima eden bazı tartışmalar var. Belki de, Wikipedia'nın CSRF makalesindeki bölümü alıntılamak için :

Giriş CSRF çeşitli yeni saldırıları mümkün kılar; örneğin, bir saldırgan daha sonra yasal kimlik bilgileriyle siteye giriş yapabilir ve hesapta kaydedilmiş etkinlik geçmişi gibi özel bilgileri görüntüleyebilir.

"Yeni saldırılar" vurgusu. Kimlik avı saldırısının kullanıcılarınıza karşı etkisini düşünün ve ardından söz konusu kimlik avı saldırısının kullanıcının sitenize güvenilen imi üzerinden çalıştığını düşünün! Yukarıda bahsedilen yorum dizisine bağlı makale, basit gizlilik saldırılarının ötesine geçen çeşitli örnekler vermektedir.


6
CSRF koruması nasıl yardımcı olur? Saldırganın kendi CSRF jetonunu istemesini ve sadece bununla göndermesini engelleyen bir şey var mı? Kimliği doğrulanmış bir oturum olmadığından, web sunucusunun bir simgeyi diğerine tercih etmesi için bir neden yoktur.
A. Wilson

2
"Saldırganın kendi CSRF jetonunu istemesini ve sadece bununla göndermesini engelleyen bir şey var mı?" - Evet! CSRF önleme mantığının ardındaki varsayım budur. Tarayıcılar, bir form gönderiminin başka bir kaynağı hedeflemesine izin verdiler / yaptılar, ancak JS'nin şu anda kaydolma CORS'si aracılığıyla siteler dışında [kasıtlı olarak] verileri okumasına asla izin vermediler . CORS'i yanlış ayarlamazsanız, saldırgan form gönderimini tetikleyebilir ( çerezlerde mevcut bir CSRF jetonu içerebilir ) ancak gerekli ikinci kopyayı (örn. Gövde / başlıklarda) göndermek için jetonu bilmenin bir yolu yoktur . Böylece CSRF kodu reddedilir.
natevw

7
Sanırım son yorumunuz yanlış (A. Wilson'ın söylediklerini yanlış anladınız). Biz bir saldırganın yükleyebilirsiniz söylüyorsun http://good.com/login.html, bir istemci iç içe CSRF belirteci ayrıştırmak ve sonra yayımlamak http://bad.com/login.htmlo göndermesi değiştirilmiş formu içerir onun adı, şifre ve ne olursa olsun kurban türlerinden belirteci. CORS çünkü sen geçerli değildir' iki ayrı müşterim var: Saldırgan ve kurban. Soruyu tekrarlamak için: CSRF koruması giriş formları için gerçekten işe yarıyor mu?
Gili

8
Evet, CSRF bir oturum açma formunu siteler arası istek sahteciliğinden koruyacaktır . Uygun bir CSRF jetonu, her üretildiğinde kriptografik olarak benzersizdir. Elbette, saldırgan bir jeton alabilir, ancak yine de kurbanın tarayıcılarında sahip olduğu [potansiyel olarak ayarlanmamış] çerezi eşleştirmeyecektir ve saldırgan, iyi bir alandaki bir sayfadan ödün vermeden söz konusu çerezi ayarlayamaz. (Örneğiniz, CSRF ve bir çeşit garip kimlik avı saldırısı arasında biraz karışık görünüyor, bu yüzden asıl sorunuza cevap verip vermediğimden emin değilim…)
natevw

3
Yanlış olabilirim, ancak kullanıcı yanlışlıkla ürün satın almakla ilgili bir şey yaparsa önemli bir tehdit var gibi görünüyor . Örneğin, bir saldırgan kullanıcıyı bir web sitesine giriş yapmak için kandırır ve kullanıcı başka bir hesapta olduklarını (Amazon veya benzeri olduğunu) fark etmeden ürün satın almaya devam eder. Artık saldırganın kayıtlı ödeme bilgilerine erişimi var, satın alma işlemlerini yeniden yönlendirebilir, vb.
you786

14

Anlayışınız doğru - CSRF'nin asıl amacı, saldırganın önceden meşru görünen bir talepte bulunabilmesidir. Ancak, saldırgan kurbanın kullanıcı adını ve şifresini bilmediği sürece bu bir giriş formu ile yapılamaz, bu durumda saldırmanın daha etkili yolları vardır (kendiniz giriş yapın).

Sonuç olarak, bir saldırganın yapabileceği tek şey, güvenlik sisteminin kullanıcıyı bir süre kilitleyebileceği durumlarda, başarısız girişleri spam yaparak kullanıcılarınızın rahatsız etmesidir.


2
Vay Süper hızlı cevap! Çok teşekkürler! Artık web sitemi güvenle oluşturmaya devam edebilirim.
php_learner

21
Oturum açma CSRF, kullanıcının gizliliğine yönelik saldırılar için hala kullanılabilir seclab.stanford.edu/websec/csrf/csrf.pdf
Ağustos'ta

6
@squiddle: Bu oldukça ilginç bir yazı, bağlantı için teşekkürler. Ama saldırganın denetimindeki bir hesapla Kullanıcı oturum dayanıyor ve bir şey fark olmayacak kullanıcı doğru olmadığını varsayar ve kullanıcının daha sonra sunucuda depolanan olacak hassas bilgileri üretecek varsayar. Yani IMHO "klasik" CSRF'den daha az ciddi.
Jon

6
@Jon Evet, daha az ciddi olabilir, ama sonunda sadece rahatsızlıktan, yani gizlilik istilasından daha fazlası olabilir. Her hizmet kendi tehdit modellerini tanımlamalı ve buna göre işlem yapmalıdır. Bunu yapmak için en azından olası tehditlerin farkında olmanız gerekir. Bu yüzden 2 sentimi ekledim.
squiddle

1
Lütfen "Bir saldırganın yapabileceği tek şey, güvenlik sisteminin kullanıcıyı bir süre için kilitleyebileceği durumlarda, başarısız oturum açma bilgilerini spam yoluyla kullanıcılarınızın rahatsız etmesidir."
samthebest

0

Evet , Diğer web siteleri giriş formunuzu taklit edemez! Kadar basit.

Bunu yaparak ne başarabilirler?

  • İlk olarak: buna izin vermek istemiyorsun.
  • İkincisi: Çok basit başarısızlık vakaları bile:
    • yanlış şifre nedeniyle kullanıcıyı engelleme nno. zaman kaçınılabilir.
    • Kötü hackleme uyarıları önlenebilir. vs vs.

Bu noktaların çoğu yanlış. Saldırgan giriş formu oluşturabilir, kullanıcının kimlik bilgilerini giriş formunu (csrf jetonu ile) yükleyebilir ve üç bilgi parçasını hedefe gönderebilir. CSRF bunu engellemez.
Snapey

@Snapey Tarayıcılar genellikle JS'nin CSRF verilerini okumasına izin vermez. JS kullanarak orijinal form gönderme isteğini taklit edemezsiniz.
mayankcpdixit

Csrf jetonu genellikle javascript tarafından kullanılmak üzere istemciye iletilir. Saldırgandan sadece giriş formunu ve kimlik bilgilerini doldurmayı istediğim cors hakkında konuşmuyorum. @mayankcpdxit. Görünüşe göre csrf, kimlik bilgileri doldurmayı önler, ki bunu yapmaz.
Snapey

Teorik olarak, evet önleyemez. Ancak, iframe'lerde CSRF formlarını yüklemeyi durdurur ve çapraz kaynak taleplerine izin vermeyi durdurursanız CSRF'den sonra kimlik bilgisi doldurmayı otomatikleştirmek mümkün değildir.
mayankcpdixit

-1

CSRF doğrulama giriş öncesi IMHO için çok anlamlı değil.

Bağlantı için squiddle sayesinde: seclab.stanford.edu/websec/csrf/csrf.pdf , ilk sayfayı okuyabiliriz:

The most popular CSRF defense is to include a secret
token with each request and to validate that the received
token is correctly bound to the users session,
preventing CSRF by forcing the attacker to guess the
sessions token.

CSRF doğrulama ön girişini denerseniz, potansiyel bir saldırgana web sitenizin geçerli bir kodunu kazma fırsatı verirsiniz! Daha sonra amacı yenerek jetonu yeniden gönderebilir.

Belki de bir saldırgan sitenizin kullanıcı adını tahmin etmeye çalışabilir. Ne yaptım, IP adresi başarılı olmadan 10 kullanıcı adı söylemeye çalışırsa, ben sadece kara listeye.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.