ASP.NET'te yeni keşfedilen bir güvenlik açığı hakkında internette yeni okudum. Ayrıntıları buradan okuyabilirsiniz.
Sorun, ASP.NET'in bu uygulamaların kullanıcı oturumları sırasında bilgi depolamak için oluşturduğu tanımlama bilgilerinin bütünlüğünü korumak için AES şifreleme algoritmasını uygulama biçiminde yatmasıdır.
Bu biraz belirsiz, ama işte daha korkutucu bir bölüm:
Saldırının ilk aşaması birkaç bin istek alır, ancak başarılı olduktan ve saldırgan gizli anahtarları aldığında, tamamen gizlidir.Gerekli olan kriptografik bilgi çok basittir.
Sonuçta, bunun gerçekten ciddi olup olmadığını bilmek için güvenlik / kriptografi konusuna yeterince aşina değilim.
Peki, tüm ASP.NET geliştiricileri saniyeler içinde herhangi bir ASP.NET web sitesine sahip olabilecek bu teknikten korkmalı mıdır?
Bu sorun ortalama ASP.NET geliştiricisini nasıl etkiler? Bizi hiç etkiliyor mu? Gerçek hayatta, bu güvenlik açığının sonuçları nelerdir? Ve son olarak: bu güvenlik açığını önleyen bir geçici çözüm var mı?
Cevaplarınız için teşekkürler!
EDIT: Aldığım yanıtları özetleyeyim
Yani, bu temelde bir "dolgu oracle" saldırı tipidir. @Sri , bu saldırı türünün ne anlama geldiği hakkında harika bir açıklama yaptı. İşte sorun hakkında şok edici bir video!
Bu güvenlik açığının ciddiyeti hakkında: Evet, gerçekten ciddidir. Saldırganın bir uygulamanın makine anahtarını tanımasını sağlar. Böylece, çok istenmeyen bazı şeyler yapabilir.
- Uygulamanın makine anahtarının bulunması durumunda, saldırgan kimlik doğrulama çerezlerinin şifresini çözebilir.
- Daha da kötüsü , herhangi bir kullanıcının adıyla kimlik doğrulama çerezleri oluşturabilir . Böylece, sitede herkes gibi görünebilir. Uygulama siz veya adınızla bir kimlik doğrulama çerezi oluşturan bilgisayar korsanı arasında ayrım yapamıyor.
- Bir önceki çerez kadar tehlikeli olmasa da, oturum çerezlerinin şifresini çözmesini (ve ayrıca oluşturmasını) sağlar .
- Çok ciddi değil: Şifrelenmiş ViewState sayfalarının şifresini çözebilir. (Gizli verileri depolamak için ViewState kullanıyorsanız, bunu yine de yapmamalısınız!)
- Oldukça beklenmedik : Makine anahtarı bilgisiyle saldırgan , normalde indirilemeyen dosyalar da dahil olmak üzere web uygulamanızdan herhangi bir rastgele dosyayı indirebilir! ( Web.Config vb. Dahil )
İşte aldığım iyi uygulamaların bir demet yok sorunu çözmek ama yardım bir web uygulamasının genel güvenliğini artırmak.
- Hassas verileri Korumalı Yapılandırma ile şifreleyebilirsiniz
- Yalnızca HTTP çerezlerini kullan
- DoS saldırılarını önleme
Şimdi bu konuya odaklanalım.
- Scott Guthrie blogunda bir giriş yayınladı
- Güvenlik açığıyla ilgili ScottGu'nun SSS blog yazısı
- ScottGu'nun güvenlik açığıyla ilgili güncellemesi
- Microsoft bu konuda bir güvenlik danışmanlığına sahiptir
- Güvenlik açığını anlama
- Güvenlik açığı hakkında ek bilgi
Çözüm
- CustomErrors özelliğini etkinleştirin ve tüm hataların yönlendirildiği tek bir hata sayfası oluşturun . Evet, 404'ler bile . (ScottGu, bu saldırı için 404 ve 500'leri ayırt etmenin çok önemli olduğunu söyledi.) Ayrıca, rastgele bir gecikme yapan bir kodun içine
Application_Error
veyaError.aspx
kodunuza koyun. (Rastgele bir sayı oluşturun ve bu kadar uzun süre uyumak için Thread.Sleep'ı kullanın.) Bu, saldırganın sunucunuzda tam olarak ne olduğuna karar vermesini imkansız hale getirir. - Bazı insanlar 3DES'e geri dönmeyi önerdi. Teorik olarak, AES kullanmazsanız, AES uygulamasındaki güvenlik zayıflığıyla karşılaşmazsınız. Sonuç olarak, bu hiç tavsiye edilmez .
Başka düşünceler
Soruma cevap veren herkese teşekkürler. Sadece bu konuda değil, genel olarak web güvenliği hakkında çok şey öğrendim. @ Mikael'in cevabını kabul edilmiş olarak işaretledim, ancak diğer cevaplar da çok faydalı.