Tôi vừa đọc trên mạng về một lỗ hổng bảo mật mới được phát hiện trong ASP.NET. Bạn có thể đọc chi tiết ở đây.
Vấn đề nằm ở chỗ ASP.NET thực hiện thuật toán mã hóa AES để bảo vệ tính toàn vẹn của cookie mà các ứng dụng này tạo ra để lưu trữ thông tin trong các phiên của người dùng.
Điều này hơi mơ hồ, nhưng đây là một phần đáng sợ hơn:
Giai đoạn đầu tiên của cuộc tấn công cần vài nghìn yêu cầu, nhưng một khi nó thành công và kẻ tấn công có được các khóa bí mật, nó hoàn toàn lén lút. Kiến thức về mật mã học là rất cơ bản.
Nói chung, tôi không đủ quen thuộc với chủ đề bảo mật / tiền điện tử để biết điều này có thực sự nghiêm trọng không.
Vì vậy, tất cả các nhà phát triển ASP.NET có sợ kỹ thuật này có thể sở hữu bất kỳ trang web ASP.NET nào trong vài giây hay không?
Vấn đề này ảnh hưởng đến nhà phát triển ASP.NET trung bình như thế nào? Nó có ảnh hưởng đến chúng ta không? Trong cuộc sống thực, hậu quả của lỗ hổng này là gì? Và, cuối cùng: có một số cách giải quyết ngăn chặn lỗ hổng này?
Cảm ơn câu trả lời của bạn!
EDIT: Hãy để tôi tóm tắt các câu trả lời tôi nhận được
Vì vậy, đây về cơ bản là một kiểu tấn công "sấm sét". @Sri cung cấp một lời giải thích tuyệt vời về ý nghĩa của kiểu tấn công này. Dưới đây là một video gây sốc về vấn đề này!
Về mức độ nghiêm trọng của lỗ hổng này: Vâng, nó thực sự nghiêm trọng. Nó cho phép kẻ tấn công làm quen với khóa máy của một ứng dụng. Vì vậy, anh ta có thể làm một số điều rất không mong muốn.
- Để xác định khóa máy của ứng dụng, kẻ tấn công có thể giải mã cookie xác thực.
- Thậm chí tệ hơn thế, anh ta có thể tạo cookie xác thực với tên của bất kỳ người dùng nào. Vì vậy, anh ta có thể xuất hiện như bất cứ ai trên trang web. Ứng dụng không thể phân biệt giữa bạn hoặc hacker đã tạo cookie xác thực với tên của bạn.
- Nó cũng cho phép anh ta giải mã (và cũng tạo ra) cookie phiên , mặc dù điều này không nguy hiểm như trước đây.
- Không quá nghiêm trọng: Anh ta có thể giải mã ViewState được mã hóa của các trang. (Nếu bạn sử dụng ViewState để lưu trữ dữ liệu tình cờ, bạn không nên làm điều này bằng mọi cách!)
- Khá bất ngờ : Với kiến thức về khóa máy, kẻ tấn công có thể tải xuống bất kỳ tệp tùy ý nào từ ứng dụng web của bạn, ngay cả những tệp thông thường không thể tải xuống! (Bao gồm Web.Config , v.v.)
Đây là một loạt các thực tiễn tốt mà tôi đã nhận được mà không giải quyết được vấn đề mà giúp cải thiện tính bảo mật chung của một ứng dụng web.
- Bạn có thể mã hóa dữ liệu nhạy cảm với Cấu hình được bảo vệ
- Sử dụng cookie chỉ HTTP
- Ngăn chặn các cuộc tấn công DoS
Bây giờ, hãy tập trung vào vấn đề này.
- Scott Guthrie đã xuất bản một mục về nó trên blog của mình
- Blog FAQ của ScottGu về lỗ hổng
- Cập nhật về lỗ hổng của ScottGu
- Microsoft có một lời khuyên bảo mật về nó
- Hiểu về lỗ hổng
- Thông tin bổ sung về lỗ hổng
Giải pháp
- Bật customErrors và tạo một trang lỗi duy nhất mà tất cả các lỗi được chuyển hướng. Có, thậm chí 404s . (ScottGu nói rằng sự khác biệt giữa 404 và 500 là điều cần thiết cho cuộc tấn công này.) Ngoài ra, vào
Application_Error
hoặcError.aspx
đặt một số mã gây chậm trễ ngẫu nhiên. (Tạo một số ngẫu nhiên và sử dụng Thread.S ngủ để ngủ lâu như vậy.) Điều này sẽ khiến kẻ tấn công không thể quyết định chính xác những gì đã xảy ra trên máy chủ của bạn. - Một số người đề nghị chuyển trở lại 3DES. Về lý thuyết, nếu bạn không sử dụng AES, bạn sẽ không gặp phải điểm yếu bảo mật trong việc triển khai AES. Hóa ra, điều này không được khuyến khích chút nào .
Một số suy nghĩ khác
- Có vẻ như không phải ai cũng nghĩ cách giải quyết là đủ tốt.
Cảm ơn tất cả những người đã trả lời câu hỏi của tôi. Tôi đã học được rất nhiều về không chỉ vấn đề này, mà cả bảo mật web nói chung. Tôi đã đánh dấu câu trả lời của @ Mikael là được chấp nhận, nhưng các câu trả lời khác cũng rất hữu ích.