Saya baru saja membaca di internet tentang kerentanan keamanan yang baru ditemukan di ASP.NET. Anda dapat membaca detailnya di sini.
Masalahnya terletak pada cara ASP.NET mengimplementasikan algoritma enkripsi AES untuk melindungi integritas cookie yang dihasilkan aplikasi ini untuk menyimpan informasi selama sesi pengguna.
Ini agak kabur, tetapi di sini ada bagian yang lebih menakutkan:
Tahap pertama serangan membutuhkan beberapa ribu permintaan, tetapi begitu berhasil dan penyerang mendapatkan kunci rahasia, itu benar-benar tersembunyi. Pengetahuan kriptografi yang diperlukan sangat mendasar.
Secara keseluruhan, saya tidak cukup akrab dengan subjek keamanan / cryptograpy untuk mengetahui apakah ini benar-benar serius.
Jadi, haruskah semua pengembang ASP.NET takut akan teknik ini yang dapat memiliki situs web ASP.NET dalam hitungan detik atau apa?
Bagaimana masalah ini mempengaruhi rata-rata pengembang ASP.NET? Apakah itu mempengaruhi kita? Dalam kehidupan nyata, apa konsekuensi dari kerentanan ini? Dan, akhirnya: apakah ada solusi yang mencegah kerentanan ini?
Terima kasih atas jawaban Anda!
EDIT: Biarkan saya meringkas tanggapan yang saya dapatkan
Jadi, ini pada dasarnya adalah jenis serangan "padding oracle". @Sri memberikan penjelasan yang bagus tentang apa arti jenis serangan ini. Berikut adalah video yang mengejutkan tentang masalah ini!
Tentang keseriusan kerentanan ini: Ya, memang serius. Ini memungkinkan penyerang untuk mengetahui kunci mesin suatu aplikasi. Dengan demikian, ia dapat melakukan beberapa hal yang sangat tidak diinginkan.
- Dalam posisi kunci mesin aplikasi, penyerang dapat mendekripsi cookie otentikasi.
- Bahkan lebih buruk dari itu, ia dapat menghasilkan cookie otentikasi dengan nama pengguna mana pun. Dengan demikian, ia dapat muncul sebagai siapa pun di situs. Aplikasi tidak dapat membedakan antara Anda atau peretas yang membuat cookie autentikasi dengan nama Anda untuk dirinya sendiri.
- Ini juga memungkinkan dia untuk mendekripsi (dan juga menghasilkan) cookie sesi , meskipun ini tidak berbahaya seperti yang sebelumnya.
- Tidak terlalu serius: Dia bisa mendekripsi ViewState halaman yang dienkripsi. (Jika Anda menggunakan ViewState untuk menyimpan data rahasia, Anda tidak boleh melakukan ini lagi!)
- Cukup tak terduga : Dengan pengetahuan tentang kunci mesin, penyerang dapat mengunduh file sewenang-wenang dari aplikasi web Anda, bahkan yang biasanya tidak dapat diunduh! (Termasuk Web.Config , dll.)
Berikut adalah beberapa praktik baik yang saya dapatkan yang tidak menyelesaikan masalah tetapi membantu meningkatkan keamanan umum aplikasi web.
- Anda dapat mengenkripsi data sensitif dengan Konfigurasi Terlindungi
- Gunakan cookie Hanya HTTP
- Cegah serangan DoS
Sekarang, mari kita fokus pada masalah ini.
- Scott Guthrie menerbitkan sebuah entri tentang itu di blog-nya
- Posting blog FAQG ScottGu tentang kerentanan
- Pembaruan ScottGu tentang kerentanan
- Microsoft memiliki penasihat keamanan tentang hal itu
- Memahami kerentanan
- Informasi tambahan tentang kerentanan
Solusinya
- Aktifkan customErrors dan buat satu halaman kesalahan tempat semua kesalahan dialihkan. Ya, bahkan 404-an . (ScottGu mengatakan bahwa membedakan antara 404-an dan 500-an sangat penting untuk serangan ini.) Juga, ke dalam Anda
Application_Error
atauError.aspx
masukkan beberapa kode yang membuat penundaan acak. (Hasilkan nomor acak, dan gunakan Thread. Tidur untuk tidur selama itu.) Ini akan membuat mustahil bagi penyerang untuk memutuskan apa yang sebenarnya terjadi di server Anda. - Beberapa orang merekomendasikan untuk beralih kembali ke 3DES. Secara teori, jika Anda tidak menggunakan AES, Anda tidak menemukan kelemahan keamanan dalam implementasi AES. Ternyata, ini tidak dianjurkan sama sekali .
Beberapa pemikiran lain
- Tampaknya tidak semua orang berpikir solusinya cukup baik.
Terima kasih untuk semua orang yang menjawab pertanyaan saya. Saya belajar banyak tentang tidak hanya masalah ini, tetapi keamanan web secara umum. Saya menandai jawaban @ Mikael sebagai diterima, tetapi jawaban lainnya juga sangat berguna.