24/05/2018, 18:09

Chiến lược phòng chống virus

Trên thực tế có rất nhiều giải pháp bảo mật đã được triển khai để chống lại các nguy cơ từ virus máy tính. Tuy nhiên chưa có giải pháp nào thực sự là phương thuốc trị bách bệnh. Thiệt hại do virus máy tính gây ra ngày càng lớn đòi hỏi cần có các giải pháp ...

Trên thực tế có rất nhiều giải pháp bảo mật đã được triển khai để chống lại các nguy cơ từ virus máy tính. Tuy nhiên chưa có giải pháp nào thực sự là phương thuốc trị bách bệnh. Thiệt hại do virus máy tính gây ra ngày càng lớn đòi hỏi cần có các giải pháp hữu hiệu hơn để bảo vệ các hệ thống máy tính, đặc biệt là các hệ thống máy tính dịch vụ và thương mại.

Chúng ta hãy hình dung một kịch bản trong đó virus cố gắng bằng mọi cách xâm nhập vào hệ thống máy tính của chúng ta. Còn chúng ta thì nghĩ cách chống lại chúng. Để có thể phá hoại được một hệ thống, trước hết virus cần xâm nhập được vào hệ thống, rồi sau đó mới tìm các lỗ hổng bảo mật hoặc điểm yếu của hệ thống để triển khai tấn công. Rõ ràng kịch bản tấn công của virus mang đến cho ta hai chiến lược chính để phòng chống. Đó là ngăn ngừa virus xâm nhập hệ thống và giảm thiểu thiệt hại của hệ thống trong trường hợp bị xâm nhập. Nói theo khía cạnh về kiểm soát truy xuất thì có hai yếu tố cần được đảm bảo đó là kiểm soát việc truy xuất tới hệ thống và kiểm soát sự truy xuất bên trong chính hệ thống đó [1].

Hai kỹ thuật tương ứng để triển khai các chiến lược lần lượt là đặt các chốt chặn và triển khai mô hình sandbox. Với chiến lược thứ nhất, chúng ta phải đặt các chốt chặn tại các điểm vào của hệ thống cần bảo vệ. Các chốt chặn này thực chất là các chương trình kiểm tra, phân tích để phát hiện virus. Với mô hình sandbox, chúng ta không tập trung vào phát hiện virus mà tập trung nghiêm khắc giới hạn sự truy xuất của các chương trình không tin cậy tới các dữ liệu và tài nguyên của hệ thống. Sự truy xuất tới hệ điều hành được kiểm soát chặt chẽ theo nguyên lý ít đặc quyền nhất (The Least Privilege). Nghĩa là chương trình chỉ được cấp quyền truy xuất tối thiểu để đủ thực hiện công việc. Việc giới hạn truy xuất vì thế sẽ giảm thiểu rủi ro cho hệ thống khi bị xâm hại .

Trước hết cần xác định ra các con đường (hay các điểm vào) từ đó virus có thể xâm nhập vào máy tính. Tại các điểm vào đó chúng ta đặt các chương trình kiểm tra (Hình 11.4). Ví dụ các chương trình firewall được cài đặt để kiểm soát luồng thông tin vào ra một hệ thống. Kỹ thuật ký mã (code signing) hoặc mã mang theo bằng chứng (proof-carrying code) được triển khai để kiểm tra tính tin cậy và toàn vẹn của thông tin đảm bảo thông tin đến từ các nguồn tin cậy và bản thân thông tin không bị làm giả trong quá trình di trú [29].

Tuy vậy chúng ta cần lưu ý rằng việc kết hợp sử dụng kỹ thuật firewall và code signing là không khả thi vì kỹ thuật firewall yêu cầu duyệt từng gói tin và có thể thêm vào đó các sửa đổi cần thiết. Trong khi kỹ thuật code signing không cho phép thông tin bị sửa đổi để đảm bảo tính toàn vẹn.

Mô hình chốt chặn

Mặc dù các kỹ thuật mới được triển khai rầm rộ song các phần mềm anti-virus ngày càng đóng vai trò quan trọng. Hàng chục ngàn virus đã tồn tại và virus mới xuất hiện hàng ngày hàng giờ. Nhận biết những virus này để bảo vệ máy tính là công việc vô cùng khó khăn nếu không có các chương trình anti-virus. Thực tế hầu hết các chương trình anti-virus đều triển khai kỹ thuật tìm kiếm kinh nghiệm (heuristics) để phát hiện virus. Kỹ thuật tìm kiếm kinh nghiệm bao gồm hai nhóm là tìm kiếm tĩnh (static) và tìm kiếm động (dynamic). Tìm kiếm tĩnh duyệt toàn bộ file, phân tích cấu trúc của nó và tìm kiếm các mẫu điển hình của virus. Sau đó sử dụng các thông tin này để đưa ra quyết định file có nhiễm virus hay không. Trong khi đó, tìm kiếm động thiết lập một môi trường kiểm soát ảo trong đó các file cần kiểm tra được mở ra (các file tài liệu) hoặc thực thi. Các hành vi lúc run-time của quá trình thử nghiệm sẽ được ghi lại, và dựa vào các luật bảo mật đã được thiết lập sẵn hệ thống sẽ đưa ra quyết định [30].

Chiến lược cơ bản để sử dụng kỹ thuật tìm kiếm kinh nghiệm là duy trì một cơ sở dữ liệu chứa các thông tin về virus. Tuy nhiên, nếu như thông tin về virus mới không được cập nhật đầy đủ (hoặc các luật bảo mật không đầy đủ trong trường hợp tìm kiếm động) thì các chương trình anti-virus trở thành vô dụng một khi có virus hoàn toàn mới xâm nhập hệ thống.

Như đã đề cập, các chương trình anti-virus không thể phát hiện được virus mới, do vậy không bảo vệ được máy tính trước những virus này. Giải thuật cho việc phát hiện mọi virus là khó và không khả thi [24]. Trong trường hợp này, chúng ta chỉ mong giảm thiểu được thiệt hại bằng việc giới hạn sự truy xuất của virus tới các dữ liệu và tài nguyên của hệ thống. Mô hình áp đặt các giới hạn này được biết đến với cái tên “Sandbox” (Hình 11.5).

Mô hình sandbox

Có nhiều người cho rằng máy tính hay bị nhiễm virus là do hay kết nối vào internet. Nếu bạn thường xuyên duyệt Web có lẽ bạn cũng đồng ý như vậy. Nhưng không, nếu chúng ta chỉ duyệt web không thôi thì khả năng máy tính bị nhiễm virus là rất thấp. Ngay cả khi bạn bị tái điều hướng (redirect) tới một trang web bất thường và chạy một chương trình nào trên đó. Điều này có được là do hầu hết các trình duyệt web đều đã triển khai mô hình sandbox. Các loại mã ngoại lai hay các chương trình không tin cậy sẽ phải chạy dưới sự kiểm soát của mô hình này. Tiếp theo chúng ta cùng xem xét hai ví dụ điển hình của việc triển khai mô hình sandbox trên thực tế.

Ví dụ : Java applet

Java là một ngôn ngữ mạnh mẽ, bảo mật. Vấn đề về bảo mật với Java chỉ thực sự liên quan đến applet. Tận dụng khả năng của Java, tin tặc có thể viết các applet để triển khai các kiểu tấn công như đã xét. Mô hình sandbox cho Java có lẽ nổi tiếng nhất. Bất cứ khi nào người dùng duyệt trang web có chứa applet. Applet được trình duyệt tự động tải về và chạy dưới sự kiểm soát chặt chẽ của mô hình này.

Ví dụ : Công nghệ Active Content và các chương trình trợ giúp (helper applications)

Để xử lý nhiều loại dữ liệu khác nhau, trình duyệt cần triệu gọi các chương trình trợ giúp tương ứng với chúng. Bất cứ khi nào một tài liệu bất kỳ được gửi từ Web Server cho trình duyệt web, trình duyệt sẽ trình diễn nội dung của tài liệu đó hoặc trực tiếp thông qua các chương trình có sẵn (built-in) hay các chương trình kết hợp, hoặc gián tiếp qua việc triệu gọi các chương trình trợ giúp chẳng hạn như Word, Excel, Ghostscript. Không may, các chương trình trợ giúp này thường cồng kềnh và không được thiết kế với các tiêu chí bảo mật.

Các công nghệ mã ẩn (Active Content) cho phép các đoạn mã máy tính (gọi tắt là mã) dưới dạng các script, macro hoặc các loại mã mô tả tài liệu (postscript) nhúng trong các tài liệu được thực thi khi một tài liệu được mở. Trong lúc người sử dụng hiển thị tài liệu một cách bị động thì nội dung của tài liệu lại được thông dịch và trở nên được kích hoạt (active) vì vậy công nghệ này có tên gọi là Active Content [31]. Giống như bất kỳ một công nghệ nào khác, công nghệ mã ẩn có thể cung cấp những khả năng hữu ích cho việc thực hiện các dịch vụ thiết yếu nhưng nó đồng thời cũng trở thành một điểm yếu bảo mật, tạo điều kiện cho các cuộc tấn công của tin tặc. Ví dụ, chúng ta có một file Word được đính kèm với thư điện tử (file này có chứa một virus macro). Trong khi file này chưa được mở (tức là nó ở trạng thái chưa được kích hoạt) chẳng có gì hư hại đến bảo mật của hệ thống. Tuy nhiên tại thời điểm Microsoft Word mở file và cho phép macro thực thi. File Word ở trạng thái kích hoạt và đe doạ tới bảo mật của hệ thống.

Đối với trình duyệt, mô hình sandbox đã được triển khai để khắc phục các nguy cơ đến từ công nghệ mã ẩn. Chúng ta dễ thấy điều này khi mở một file Word, Excel hay Postscript trong trình duyệt. Khi đó trình duyệt chỉ đóng vai trò như một công cụ hiển thị, các chức năng thông thường của các chương trình trợ giúp bị loại bỏ.

Để tăng cường phát hiện virus, chúng ta đã xây dựng các phần mềm tự kiểm tra (built-in self-test) dùng kỹ thuật mã hoá. Integrity Shell được xem là kỹ thuật tối ưu nhất trong cách tiếp cận này [24]. Theo đó, nó có thể phát hiện ra sự lây nhiễm đầu tiên để ngăn ngừa các lây nhiễm thứ cấp.

Kỹ thuật sandbox cũng bao hàm nhiều cách thức triển khai khác nhau. Mô hình sandbox cho Java applet gồm máy ảo (Virtual Machine) được nhúng trong trình duyệt và các thư viện lớp hỗ trợ thực thi. Mô hình sandbox cho các chương trình trợ giúp là một môi trường cách ly được tạo ra bởi phần mềm, trong đó triển khai các luật bảo mật để kiểm soát hành vi của các chương trình. Ngay bản thân trình duyệt cũng là đối tượng kiểm soát của nó. Mặc dù vậy phương pháp này có hạn chế là đòi hỏi sự hỗ trợ của hệ điều hành để lưu vết và lọc các lời gọi hệ thống.

Chưa bao giờ thế giới lại dành nhiều quan tâm đến bảo mật như lúc này. Các cuộc tấn công gần đây gây hoang mang lớn trong cộng đồng người dùng. Trong khi một số người có đôi chút hiểu biết về các cuộc tấn công thì úp mở về chúng. Đối với người dùng, virus dường như thật đáng sợ và hiện hữu mọi lúc mọi nơi. Thế nhưng sự thật không hẳn chỉ có duy nhất bức tranh mầu tối đó. Virus chỉ có thể xâm nhập vào máy tính của người dùng bằng những con đường nhất định và sẽ là vô hại nếu bạn có thể kiểm soát được các con đường này.

Mặc dù các chiến lược chống virus mang lại những kết quả ngăn chặn nhất định nhưng bản thân chúng vẫn còn nhiều hạn chế. Chẳng hạn chiến lược chốt chặn có thể không phát hiện được virus, hoặc virus có thể làm giả các bằng chứng để qua mặt các chương trình kiểm tra…Ở mô hình sandbox, sự truy xuất của các chương trình bị giới hạn do vậy các tính năng của chúng sẽ bị hạn chế. Sự hội tụ của các chiến luợc này có thể đưa đến một giải pháp toàn vẹn hơn, mang đến câu trả lời chính xác hơn cho vấn đề virus. Quả thực hiện nay chúng ta triển khai cùng một lúc rất nhiều các kỹ thuật khác nhau để bảo vệ máy tính. Đó cũng chính là xu hướng hiện tại để phòng chống virus.

0