ฉันพยายามที่จะลดช่องโหว่ของเราที่จะพุดเดิ้ล SSL 3.0 สำรองโจมตี ผู้ดูแลระบบของเราได้เริ่มปิดใช้งาน SSL แล้วเพื่อรองรับ TLS สำหรับการเชื่อมต่อขาเข้ากับเซิร์ฟเวอร์ของเรา และเรายังแนะนำให้ทีมของเราปิดการใช้งาน SSL ในเว็บเบราว์เซอร์ของพวกเขา ตอนนี้ผมกำลังมองหาที่ codebase .NET ของเราซึ่งประทับจิต HTTPS การเชื่อมต่อกับบริการต่างๆผ่านSystem.Net.HttpWebRequest ฉันเชื่อว่าการเชื่อมต่อเหล่านี้อาจเสี่ยงต่อการโจมตีของ MITM หากอนุญาตให้ใช้ทางเลือกจาก TLS เป็น SSL นี่คือสิ่งที่ฉันได้กำหนดไว้จนถึงตอนนี้ โปรดตรวจสอบอีกครั้งเพื่อยืนยันว่าฉันถูกต้องหรือไม่ ช่องโหว่นี้เป็นช่องโหว่ใหม่ดังนั้นฉันจึงยังไม่เห็นคำแนะนำใด ๆ จาก Microsoft เกี่ยวกับวิธีลดความเสี่ยงใน. NET:
โปรโตคอลที่อนุญาตสำหรับคลาส System.Net.Security.SslStream ซึ่งรองรับการสื่อสารที่ปลอดภัยใน. NET ถูกตั้งค่าทั่วโลกสำหรับแต่ละ AppDomain ผ่านคุณสมบัติSystem.Net.ServicePointManager.SecurityProtocol
ค่าเริ่มต้นของคุณสมบัตินี้ใน. NET 4.5 คือ
Ssl3 | Tls
(แม้ว่าฉันจะไม่พบเอกสารประกอบเพื่อสำรองข้อมูลนั้นก็ตาม) SecurityProtocolType เป็น enum ที่มีแอตทริบิวต์ Flags ดังนั้นจึงเป็นบิตหรือของทั้งสองค่า คุณสามารถตรวจสอบสิ่งนี้ในสภาพแวดล้อมของคุณด้วยรหัสบรรทัดนี้:Console.WriteLine (System.Net.ServicePointManager.SecurityProtocol ToString ());
ควรเปลี่ยนเป็นเพียง
Tls
หรือTls12
ก่อนที่คุณจะเริ่มการเชื่อมต่อใด ๆ ในแอปของคุณ:System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
สำคัญ:เนื่องจากคุณสมบัติรองรับแฟล็กระดับบิตหลายตัวฉันจึงถือว่า SslStream จะไม่ถอยกลับไปใช้โปรโตคอลอื่นที่ไม่ระบุโดยอัตโนมัติในระหว่างการจับมือ มิฉะนั้นอะไรจะเป็นจุดที่รองรับหลายแฟล็ก?
อัปเดต TLS 1.0 เทียบกับ 1.1 / 1.2:
ตามที่ Adam Langley ผู้เชี่ยวชาญด้านความปลอดภัยของ Google พบว่า TLS 1.0 มีความเสี่ยงต่อ POODLE ในภายหลังหากใช้ไม่ถูกต้องดังนั้นคุณควรพิจารณาย้ายไปที่ TLS 1.2 โดยเฉพาะ
การอัปเดตสำหรับ. NET Framework 4.7 ขึ้นไป:
ตามที่กล่าวถึงโดยProf Von Lemongargleด้านล่างเริ่มต้นด้วยเวอร์ชัน 4.7 ของ. NET Framework ไม่จำเป็นต้องใช้แฮ็คนี้เนื่องจากการตั้งค่าเริ่มต้นจะช่วยให้ระบบปฏิบัติการสามารถเลือกเวอร์ชันโปรโตคอล TLS ที่ปลอดภัยที่สุดได้ ดูแนวทางปฏิบัติที่ดีที่สุดของ Transport Layer Security (TLS) ด้วย. NET Frameworkสำหรับข้อมูลเพิ่มเติม