ฉันเพิ่งอ่านเกี่ยวกับช่องโหว่ความปลอดภัยที่ค้นพบใหม่ใน ASP.NET คุณสามารถอ่านรายละเอียดได้ที่นี่
ปัญหาอยู่ในลักษณะที่ ASP.NET ใช้อัลกอริทึมการเข้ารหัส AES เพื่อปกป้องความสมบูรณ์ของคุกกี้ที่แอปพลิเคชันเหล่านี้สร้างขึ้นเพื่อเก็บข้อมูลระหว่างเซสชันผู้ใช้
มันค่อนข้างคลุมเครือ แต่นี่เป็นส่วนที่น่ากลัวกว่า:
ขั้นแรกของการโจมตีใช้เวลาไม่กี่พันคำร้องขอ แต่เมื่อประสบความสำเร็จและผู้โจมตีได้รับกุญแจความลับมันลับ ๆ ล่อ ๆ โดยสิ้นเชิง
โดยรวมแล้วฉันไม่คุ้นเคยกับเรื่องความปลอดภัย / การเข้ารหัสลับที่จะรู้ว่านี่เป็นเรื่องที่ร้ายแรงหรือไม่
ดังนั้นนักพัฒนา ASP.NET ทุกคนควรกลัวเทคนิคนี้ที่สามารถเป็นเจ้าของเว็บไซต์ ASP.NET ใด ๆ ในไม่กี่วินาทีหรืออะไร
ปัญหานี้ส่งผลกระทบต่อนักพัฒนา ASP.NET โดยเฉลี่ยอย่างไร มันส่งผลกระทบต่อพวกเราหรือไม่? ในชีวิตจริงสิ่งที่เป็นผลมาจากช่องโหว่นี้คืออะไร? และในที่สุด: มีวิธีแก้ไขบางอย่างที่ป้องกันช่องโหว่นี้หรือไม่?
ขอบคุณสำหรับคำตอบ!
แก้ไข: ฉันขอสรุปคำตอบที่ฉันได้รับ
ดังนั้นนี่คือการโจมตีแบบ "ช่องว่างภายใน" @Sriให้คำอธิบายที่ดีเกี่ยวกับการโจมตีประเภทนี้หมายความว่าอย่างไร นี่คือวิดีโอที่น่าตกใจเกี่ยวกับปัญหานี้!
เกี่ยวกับความร้ายแรงของช่องโหว่นี้: ใช่มันเป็นเรื่องร้ายแรง ช่วยให้ผู้โจมตีรู้จักรหัสเครื่องของแอปพลิเคชัน ดังนั้นเขาสามารถทำสิ่งที่ไม่ต้องการมาก
- ในการกดปุ่มของเครื่องของแอปผู้บุกรุกสามารถถอดรหัสคุกกี้การตรวจสอบสิทธิ์
- ยิ่งกว่านั้นเขาสามารถสร้างคุกกี้การรับรองความถูกต้องด้วยชื่อของผู้ใช้ใด ๆ ดังนั้นเขาสามารถปรากฏเป็นทุกคนในเว็บไซต์ แอปพลิเคชันไม่สามารถแยกความแตกต่างระหว่างคุณหรือแฮ็กเกอร์ที่สร้างคุกกี้การรับรองความถูกต้องด้วยชื่อของคุณเอง
- นอกจากนี้ยังช่วยให้เขาถอดรหัส (และสร้าง) คุกกี้เซสชันแม้ว่าจะไม่เป็นอันตรายเหมือนคุกกี้ก่อนหน้า
- ไม่ร้ายแรง: เขาสามารถถอดรหัส ViewState ที่เข้ารหัสของหน้า (ถ้าคุณใช้ ViewState เพื่อเก็บข้อมูลที่มีความมั่นใจคุณไม่ควรทำสิ่งนี้เลย!)
- ค่อนข้างคาดไม่ถึง : ด้วยความรู้เกี่ยวกับคีย์เครื่องผู้โจมตีสามารถดาวน์โหลดไฟล์ใดก็ได้จากเว็บแอปพลิเคชันของคุณแม้กระทั่งไฟล์ที่ไม่สามารถดาวน์โหลดได้! (รวมWeb.Configฯลฯ )
นี่เป็นแนวทางปฏิบัติที่ดีที่ฉันได้รับซึ่งไม่ได้แก้ปัญหา แต่ช่วยปรับปรุงความปลอดภัยทั่วไปของเว็บแอปพลิเคชัน
- คุณสามารถเข้ารหัสข้อมูลที่สำคัญได้ด้วย Protected Configuration
- ใช้คุกกี้ HTTP เท่านั้น
- ป้องกันการโจมตี DoS
ทีนี้เรามาดูเรื่องนี้กันดีกว่า
- Scott Guthrie เผยแพร่รายการเกี่ยวกับเรื่องนี้ในบล็อกของเขา
- บล็อกคำถามที่พบบ่อยของ ScottGu โพสต์เกี่ยวกับช่องโหว่
- การปรับปรุงของ ScottGu เกี่ยวกับช่องโหว่
- Microsoft มีคำแนะนำด้านความปลอดภัยเกี่ยวกับเรื่องนี้
- ทำความเข้าใจกับช่องโหว่
- ข้อมูลเพิ่มเติมเกี่ยวกับช่องโหว่
การแก้ไขปัญหา
- เปิดใช้งาน customErrors และสร้างหน้าข้อผิดพลาดเดียวซึ่งมีการเปลี่ยนเส้นทางข้อผิดพลาดทั้งหมด ใช่404 แม้กระทั่ง (ScottGu กล่าวว่าความแตกต่างระหว่าง 404 และ 500 มีความจำเป็นสำหรับการโจมตีนี้.) นอกจากนี้ยังลงของคุณ
Application_Error
หรือError.aspx
ใส่รหัสบางอย่างที่ทำให้ล่าช้าสุ่ม (สร้างตัวเลขสุ่มและใช้ Thread.Sleep เพื่อหลับนานขนาดนั้น) สิ่งนี้จะทำให้ผู้โจมตีไม่สามารถตัดสินใจได้ว่าเกิดอะไรขึ้นบนเซิร์ฟเวอร์ของคุณ - บางคนแนะนำให้เปลี่ยนกลับเป็น 3DES ในทางทฤษฎีหากคุณไม่ใช้ AES คุณจะไม่พบจุดอ่อนด้านความปลอดภัยในการใช้งาน AES ตามที่ปรากฏออกมาสิ่งนี้ไม่แนะนำเลย
ความคิดอื่น ๆ
ขอบคุณทุกคนที่ตอบคำถามของฉัน ฉันได้เรียนรู้มากมายเกี่ยวกับปัญหานี้ไม่เพียง แต่ความปลอดภัยของเว็บโดยทั่วไป ฉันทำเครื่องหมายคำตอบของ @ Mikael ว่ายอมรับแล้ว แต่คำตอบอื่น ๆ ก็มีประโยชน์มาก