Saturday, July 26, 2008

tool kiểm tra dns của bkis có thể trả về kết quả sai

tranh luận một hồi với các bác ở bkis, tôi phát hiện ra được vài chỗ mà tool của các bác bkis sẽ làm sai, false negative hay false positive:

1. client --> A --> B --> Authorative DNS servers

* A là dns cache thuộc quyền kiểm soát của sysadmin, được cấu hình để forward recursive query đến B, một dns cache nằm ngoài tầm của sysadmin.

* false negative sẽ xảy ra khi A đã vá, nhưng B chưa vá. Công cụ của bkis sẽ báo là an toàn, nhưng thực tế tất cả client sử dụng A đều đứng trước nguy cơ bị tấn công.

* false positive sẽ xảy ra khi A không vá, nhưng B đã vá. Công cụ của bkis sẽ báo là không an toàn, yêu cầu vá (không phải lúc nào cũng muốn vá là vá :-p), nhưng thực tế tất cả client sử dụng A đều an toàn trước loại tấn công này.

Trong cả hai trường hợp, cách làm của tôi đưa ra đều thông báo chính xác là bạn có đang an toàn hay không an toàn (lưu ý là nó quan tâm đến người sử dụng, bất kể DNS có được vá hay chưa vá). Và nó áp dụng được cả cho người dùng bình thường lẫn sysadmin.

2. client --> A --> NAT device --> Authorative DNS servers

* A là dns cache thuộc quyền kiểm soát của sysadmin, được cấu hình chấp nhận recursive query từ client.

* phía sau A (trước khi ra Internet) là một thiết bị NAT, làm thay đổi dest IP hoặc source port của các packet đi ra từ A

* false negative sẽ xảy ra khi A không vá, nghĩa là dùng fixed source port, nhưng khi đi ra đến NAT device, NAT device lại thay đổi source port, làm cho nó ngẫu nhiên, nên tool của bkis sẽ báo là an toàn.

tuy gọi là false negative nhưng NAT device trong trường hợp này lại vô tình bảo vệ cái lỗ hổng của A, làm cho việc khai thác trở nên rất khó.

* false postivie sẽ xảy ra khi A đã vá, nghĩa là source port đã được randomized, nhưng khi đi ra đến NAT device, NAT device lại thay đổi source port, làm cho nó hết ngẫu nhiên, nên tool của bkis sẽ báo là không an toàn.

tuy gọi là false postive, nhưng NAT device trong trường hợp này lại vô tình làm cho việc A có vá hay không vá trở nên vô nghĩa.

trong hai trường hợp này, cái cách làm của tôi cho kết quả giống với cách làm của bkis.

tóm gọn lại: có ai cần một phần mềm trả về kết quả sai (và phải cấu hình lung tung mới dùng được, và chỉ dành cho sysadmin :-p), trong khi chỉ cần gõ một lệnh là được kết quả chính xác hơn, ngay cả người dùng bt cũng có thể kiểm tra được?

1 comment:

Anonymous said...

Trong khi chỉ cần gõ một lệnh là được kết quả <<== bài cũ ở đâu rồi!!