Tuesday, July 29, 2008

luôn có lỗi trong hệ thống

trong bài trước, tôi có nói, có nhiều trường hợp vì ràng buộc của các mục tiêu kinh doanh, chúng ta không thể vá lỗi, dù lỗi đó có nguy hiểm đến đâu đi chăng nữa. điều này thoạt nghe thì thấy hết sức nguy hiểm, nhưng nếu suy nghĩ kỹ, chúng ta sẽ thấy, sự thực là chúng ta đã, đang và sẽ sống với những hệ thống có lỗi nghiêm trọng.

khi một hệ thống nào đó bị tấn công, các *chuyên gia bảo mật* sẽ thường đổ lỗi sẽ cho đám sysadmin không chịu vá lỗi. "đã có bảng vá từ vài tháng trước, nhưng họ không chịu vá, để rồi bây giờ bị tấn công là phải rồi". đúng là việc vá lỗi là việc nên làm, nhưng lỗi không phải ở đám sysadmin.

một sự thật đáng buồn là có quá nhiều lỗ hổng bảo mật. mỗi tuần tôi nhận được một bản báo cáo từ US-CERT về số lỗ hổng bảo mật đã được phát hiện trong tuần. đây là danh sách trong tuần vừa rồi, chỉ tính riêng lỗi critical thôi là đã 25, còn tổng số là 52 lỗi tất cả.

để an toàn, sysadmin phải vá tất cả lỗi. để tấn công thành công, attacker chỉ cần khai thác thành công một lỗi. đó đã là một cuộc chiến quá có lợi cho attacker, vậy mà sự thật là sysadmin không có cách nào có thể vá hết lỗi được, bởi các điều kiện ràng buộc về mục tiêu kinh doanh như đã phân tích ở bài trước.


và dẫu cho sysadmin có vá hết lỗi, thì đó cũng chỉ là những lỗi đã biết và nhà sản xuất phần mềm đã cung cấp miếng vá rồi. còn những lỗi chưa có miếng vá thì sao? hay những lỗi đã được tìm thấy nhưng chưa được công bố rộng rãi (0-day)? hay những lỗi chưa được tìm thấy? hay những lỗi do lập trình viên cố tình tạo ra trong quá trình viết phần mềm, để trục lợi về sau (backdoor)?

nói cách khác, cái quy trình "có lỗi --> vá lỗi" không đem lại sự an toàn như mong đợi. dù muốn hay không, chúng ta phải thừa nhận rằng: luôn có lỗi trong hệ thống. vậy làm sao để bảo vệ an toàn cho một hệ thống luôn có lỗi?

tôi thấy có 3 giải pháp: theo dõi, theo dõi, và theo dõi.

phải theo dõi làm sao để có thể trả lời được câu hỏi: ai (who) làm thế nào (how) để gây ra chuyện gì (what) vào khi nào (when) trên hệ thống nào (where) của tôi?

theo dõi như thế nào? đó lại là một câu chuyện dài :-p.

No comments: