Saya mencoba mengurangi kerentanan kami terhadap serangan Poodle SSL 3.0 Fallback . Admin kami telah mulai menonaktifkan SSL untuk mendukung TLS untuk koneksi masuk ke server kami. Dan kami juga menyarankan tim kami untuk menonaktifkan SSL di browser web mereka. Saya sekarang melihat basis kode .NET kami, yang memulai koneksi HTTPS dengan berbagai layanan melalui System.Net.HttpWebRequest . Saya yakin bahwa koneksi ini dapat rentan terhadap serangan MITM jika memungkinkan fallback dari TLS ke SSL. Inilah yang telah saya tentukan sejauh ini. Bisakah seseorang memeriksa ulang ini untuk memverifikasi bahwa saya benar? Kerentanan ini masih baru, jadi saya belum melihat panduan apa pun dari Microsoft tentang cara menguranginya di .NET:
Protokol yang diizinkan untuk kelas System.Net.Security.SslStream, yang menopang komunikasi aman di .NET, disetel secara global untuk setiap AppDomain melalui properti System.Net.ServicePointManager.SecurityProtocol .
Nilai default dari properti ini di .NET 4.5 adalah
Ssl3 | Tls
(walaupun saya tidak dapat menemukan dokumentasi untuk mendukungnya.) SecurityProtocolType adalah enum dengan atribut Flags, jadi itu sedikit OR dari dua nilai tersebut. Anda dapat memeriksanya di lingkungan Anda dengan baris kode ini:Console.WriteLine (System.Net.ServicePointManager.SecurityProtocol.ToString ());
Ini harus diubah menjadi hanya
Tls
, atau mungkinTls12
, sebelum Anda memulai koneksi apa pun di aplikasi Anda:System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
Penting: Karena properti mendukung beberapa bendera bitwise, saya berasumsi bahwa SslStream tidak akan otomatis mundur ke protokol tidak ditentukan lainnya selama jabat tangan. Jika tidak, apa gunanya mendukung banyak bendera?
Pembaruan pada TLS 1.0 vs 1.1 / 1.2:
Menurut pakar keamanan Google Adam Langley, TLS 1.0 kemudian ditemukan rentan terhadap POODLE jika tidak diterapkan dengan benar , jadi Anda harus mempertimbangkan untuk pindah ke TLS 1.2 secara eksklusif.
Pembaruan untuk .NET Framework 4.7 dan yang lebih baru:
Seperti disinggung oleh Prof Von Lemongargle di bawah ini, dimulai dengan versi 4.7 dari .NET Framework, tidak perlu menggunakan peretasan ini karena pengaturan default akan memungkinkan OS untuk memilih versi protokol TLS yang paling aman. Lihat praktik terbaik Transport Layer Security (TLS) dengan .NET Framework untuk informasi selengkapnya.