Bài viết phòng chống virus máy tính ở cấp độ hệ điều hành đề nghị một giải pháp hoàn toàn khác: Chủ động phòng ngừa virus ở cấp thấp - cấp hệ điều hành, chứ không ngồi chờ virus lây lan rồi mới dùng phần mềm để diệt.
Trang 1PHÒNG CHỐNG VIRUS MÁY TÍNH Ở CẤP ĐỘ HỆ ĐIỀU HÀNH
Phạm Thanh Bình
Khoa Công nghệ thông tin - Đại học Thuỷ lợi, email: binhpt@tlu.edu.vn
1 GIỚI THIỆU CHUNG
Cuộc chiến chống virus máy tính (VRMT)
ngày càng trở nên dai dẳng Cứ mỗi khi có
một virus mới ra đời, các phần mềm diệt
virus lại cố gắng tìm cách diệt và cập nhật
virus mới vào cơ sở dữ liệu của nó Những
người viết virus lại tìm cách sửa đổi virus để
qua mặt phần mềm diệt, virus mới lại xuất
hiện… Quá trình đó cứ lặp đi lặp lại và chưa
biết lúc nào sẽ kết thúc [1]
Liệu có giải pháp nào giúp ngăn chặn
virus hiệu quả hơn so với việc sử dụng các
chương trình diệt virus đó không? Trong
khuôn khổ bài viết này chúng tôi xin đề nghị
một giải pháp hoàn toàn khác: Chủ động
phòng ngừa virus ở cấp thấp - cấp hệ điều
hành, chứ không ngồi chờ virus lây lan rồi
mới dùng phần mềm để diệt
2 PHƯƠNG PHÁP NGHIÊN CỨU
Để tìm kiếm giải pháp toàn diện cho việc
phòng chống VRMT, trước tiên chúng tôi
tiến hành nghiên cứu những kỹ thuật cơ bản
nhất của virus, như kỹ thuật lây lan, kỹ thuật
ngụy trang, kỹ thuật phá hoại… từ đó đúc rút
ra những đặc điểm chung nhất của VRMT
Biết được những đặc điểm cơ bản đó của
virus, ta có thể tìm ra những nguyên tắc
chung để nhận dạng và phát hiện virus khi
chúng chưa kịp kích hoạt và lây lan Bước
tiếp theo là xây dựng được một quy trình
phòng chống virus ở cấp thấp với nhiều mức
bảo vệ khác nhau
3 KẾT QUẢ NGHIÊN CỨU
3.1 Một số đặc điểm cơ bản của virus
máy tính [2]
Virus thường gắn bản thân nó vào một file
thi hành khác khi lây lan, khiến cho file đó bị
thay đổi so với bản gốc Đây là một đặc điểm
cơ bản giúp nhận dạng ra file bị nhiễm virus Khi nằm trong bộ nhớ, virus thường tìm cách truy cập vào những địa chỉ vùng nhớ ngoài quyền hạn được phép Một số virus còn tìm cách tự biến đổi mã lệnh nhị phân (virus đa hình) nhằm qua mặt phần mềm diệt virus Đây là những đặc điểm giúp nhận diện virus khi nó thi hành trong bộ nhớ
Để lây được sang file khác, virus buộc phải gọi tới các hàm truy cập file của hệ điều hành Đây là đặc điểm giúp ta có thể phát hiện và giám sát hành động của virus ở cấp
hệ điều hành
3.2 Đề xuất giải pháp
Virus muốn lây lan hay phá hoại thì mã lệnh của nó phải được kích hoạt Do đó nguyên tắc cơ bản là phải ngăn chặn virus từ trước khi nó được kích hoạt, hoặc kiểm soát từng hành động của nó khi nó đã kích hoạt Điều đó chỉ có thể được thực hiện ở cấp hệ điều hành Dưới đây là 3 giải pháp tương ứng với 3 mức độ bảo vệ:
a) Giám sát nguồn gốc phần mềm
Hầu hết các chương trình máy tính đều dành chỗ để chứa các thông tin về tác giả, bản quyền, số hiệu phiên bản Nếu ta bổ sung thêm vào đó một chút thông tin nhận dạng phần mềm nữa thì hiệu quả đem lại sẽ rất thú vị Giả sử ta gắn vào mỗi file chương trình mã hash của chính nó, nếu file này bị nhiễm virus và bị thay đổi, hệ điều hành có thể dễ dàng phát hiện điều đó khi so sánh chương trình với mã hash đính kèm:
Proc||Hash(Proc)
Do kích thước mã hash khá nhỏ nên việc đính kèm sẽ không ảnh hưởng lớn tới kích
Trang 2thước chương trình Tuy nhiên nếu chỉ làm
đơn giản như vậy thì một virus thông minh
có thể tự làm giả mã hash sau khi lây vào
file Giải pháp chặt chẽ hơn là tiến hành mã
hoá mã hash của chương trình bằng khoá
riêng của tác giả chương trình đó (PR A),
virus không biết PR A nên không thể làm giả
mã hash đính kèm:
Proc||E(PRA,Hash(Proc))||E(PRCA,PUA)
Để hệ điều hành có thể giải mã mã hash và
kiểm tra tính hợp lệ của chương trình, ta
cũng cần đính kèm theo khoá công khai của
tác giả chương trình (PU A) Đề phòng trường
hợp virus làm giả cặp khoá của tác giả, PU A
cần được xác minh bởi một tổ chức đáng tin
cậy (CA - Certificate Authority), dưới dạng
một chứng chỉ số: E(PRCA,PUA), trong đó
PRCA là khoá riêng của tổ chức CA [3]
Như vậy mỗi lập trình viên hay nhà sản
xuất phần mềm cần phải gắn vào sản phẩm
chứng chỉ số của mình, để đảm bảo nguồn
gốc phần mềm, cũng như chịu trách nhiệm
về phần mềm mình làm ra
Khi thi hành một chương trình trong máy
tính, việc đầu tiên mà hệ điều hành cần làm
là kiểm tra nguồn gốc chương trình, so sánh
chương trình với mã hash đính kèm Nếu
chương trình có nguồn gốc không hợp lệ
(chứng chỉ số không hợp lệ), hoặc mã hash
chương trình không khớp thì chương trình sẽ
bị từ chối thi hành
b) Kiểm soát chương trình trong bộ nhớ
Nếu vượt qua được mức bảo vệ thứ nhất
nói trên thì chương trình sẽ được hệ điều
hành cho phép thi hành Như vậy không có
nghĩa là chương trình hoàn toàn vô hại Rất
có thể người viết virus đã dùng một thủ thuật
nào đó (như tạo hồ sơ giả) để vượt qua vòng
kiểm duyệt của CA, và có được một chứng
chỉ số hợp lệ, nhờ đó chương trình chứa virus
sẽ qua được khâu kiểm tra nguồn gốc Lúc
này cần đến mức bảo vệ thứ hai Ở lần chạy
đầu tiên, chương trình sẽ được thi hành trong
chế độ kiểm soát đặc biệt:
+ Mã lệnh và dữ liệu của chương trình được
nạp vào những vùng nhớ riêng biệt
+ Các lệnh tham chiếu tới dữ liệu chỉ được
phép tham chiếu tới các địa chỉ bộ nhớ trong
vùng dữ liệu đã cấp
+ Các lệnh tham chiếu tới mã lệnh (như lệnh nhảy và lệnh Call) chỉ được phép tham chiếu tới vùng nhớ chứa mã lệnh được cấp + Mọi lời gọi tới hàm hệ thống luôn được
hệ điều hành giám sát
Bất cứ hành động nào vi phạm quy tắc nói trên sẽ bị ngăn chặn và không thể thi hành Nếu chương trình có chứa virus, và virus muốn tìm cách sao chép bản thân nó ra ngoài vùng nhớ được cấp, hành động đó sẽ bị ngăn chặn Một số virus đa hình cần thay đổi mã lệnh của nó thường xuyên, tức là nó phải truy cập vào vùng nhớ chứa mã lệnh để tiến hành đọc/ ghi (giống như đọc/ ghi dữ liệu), hành động đó cũng không thể thực hiện được Nếu virus không lây lan trong bộ nhớ, có thể nó sẽ tìm cách lây vào các file thi hành trong ổ đĩa, hoặc sao chép file chứa nó thành nhiều bản trên các ổ đĩa khác nhau Muốn vậy nó cần gọi tới các hàm hệ thống để truy cập file hay đĩa Do các hàm hệ thống đều được giám sát, một hành động đáng ngờ như
mở một file thi hành để ghi, ghi đè lên một file thi hành, hay tự động sao chép bản thân… sẽ bị phát hiện và từ chối
Thường thì các file thì hành rất hiếm khi
bị thay đổi, trừ khi nó được cập nhật lên phiên bản mới hay được cài đặt lại Nếu không phải các lý do đó thì gần như chắc chắn là do virus Nhưng nếu một chương trình vô hại thực sự muốn cập nhật lên phiên bản mới, liệu hành động đó có bị hiểu nhầm
là nguy hiểm và bị hệ điều hành từ chối không? Tất nhiên bộ phận giám sát hàm hệ thống đủ thông minh để phân biệt điều đó Đích của virus là lây lan sang file khác chứ không phải là lây vào chính nó
Giả sử bằng cách nào đó virus vẫn lây được vào một file thi hành khác, thì hành động đó cũng sẽ trở nên vô nghĩa vì file mới nhiễm sẽ không thể thi hành được, do virus không thể cập nhật một mã hash mới cho file
Như vậy mọi hành động nhằm lây lan hay ngụy trang của virus đều sẽ bị ngăn chặn, một chương trình có những lệnh đáng ngờ như vậy
sẽ bị từ chối thi hành Tuy nhiên việc kiểm soát tới từng lệnh tham chiếu như trên sẽ làm chậm đáng kể tốc độ thi hành của chương
Trang 3trình, và chỉ nên thực hiện trong lần chạy đầu
tiên tính từ khi file chương trình được cài đặt
vào máy tính Nhưng nếu virus đủ khôn ngoan
để không có hành động đáng ngờ nào trong lần
chạy đầu tiên, và nó chỉ ra tay hành động vào
một thời điểm bất ngờ khác? Lúc đó sẽ cần tới
mức bảo vệ thứ ba dưới đây
c) Hệ điều hành có cơ chế phân quyền
chặt chẽ
Với hai mức bảo mật nói trên, nếu chương
trình chứa virus vẫn vượt qua được thì nó
cũng không thể lây lan hay biến hình được,
tức là nó không thực sự là một virus nữa
Nhưng nó vẫn có thể nằm im chờ thời như
một trojan horse hay logic bomb, đến một
thời điểm nhất định sẽ bất ngờ phá huỷ các
file dữ liệu trên đĩa! Dự đoán hành động phá
hoại của virus không dễ dàng, vì việc truy
cập và đọc/ghi vào các file dữ liệu vốn là một
hành động hợp pháp và không bị nghi ngờ
Để hạn chế tối đa hậu quả phá hoại của
virus, các hệ điều hành cần được thiết kế với
một cơ chế phân quyền chặt chẽ Mỗi người
dùng hay nhóm người dùng chỉ được cấp
những quyền hạn nhất định đối với những
khu vực dữ liệu nhất định Khi đó nếu virus
bất ngờ tiến hành phá hoại các file dữ liệu thì
hậu quả cũng chỉ nằm trong phạm vi hạn chế
của một người dùng cụ thể, chứ không ảnh
hưởng chung tới toàn hệ thống
Cùng với hành động phá hoại, virus cũng
để lộ bản thân Do không còn khả năng lây
lan hay nguỵ trang, việc tiêu diệt virus sẽ trở
nên hết sức dễ dàng
3.3 Những khó khăn và hạn chế
Mục tiêu của giải pháp này là ngăn chặn
virus, tức là những mã lệnh có khả năng lây
lan Do đó đối với những mã độc không tự lây
lan được như trojan horse hay logic bomb thì
vẫn chưa có giải pháp triệt để (Khi nguồn gốc
phần mềm được giám sát chặt chẽ, những mã
độc loại này cũng sẽ hạn chế, nếu người dùng
cảnh giác, không tuỳ tiện chạy chương trình lạ
thì sẽ không bao giờ bị nhiễm)
Việc gắn mã hash và chứng chỉ số của tác
giả vào chương trình đòi hỏi cần có sự thay
đổi toàn diện trong thói quen của lập trình
viên và công tác phân phối phần mềm
Việc thiết kế lại hệ điều hành có thể ảnh hưởng tới các hệ thống đang tồn tại, tới các phần mềm hiện có, tới thói quen của người dùng… Tất cả những vấn đề nói trên đòi hỏi phải có quá trình chuyển đổi, tốn nhiều thời gian và không dễ thực hiện
4 KẾT LUẬN
Việc thiết kế và xây dựng một hệ điều hành an toàn sẽ giúp ngăn chặn được sự lây lan và phát triển của virus máy tính từ gốc Nhưng những khó khăn chủ yếu lại nằm ở vấn đề con người Liệu người dùng có chấp nhận thay đổi thói quen để có được sự an toàn không?
Ngoài vấn đề thói quen cũng cần kể đến vấn đề tài chính Về mặt kỹ thuật, việc xây dựng một hệ điều hành hoạt động theo nguyên tắc nêu trên không phải là quá khó, nhưng nó lại khác biệt với đa số các hệ điều hành đang tồn tại, tức là sẽ phải chỉnh sửa lại
cả hệ thống phần mềm ứng dụng kèm theo Điều đó đồng nghĩa với việc phải chi thêm nhiều tiền để có các phần mềm mới
Tuy nhiên vấn đề này đã từng có tiền lệ Khi MicroSoft chuyển đổi hệ điều hành Windows từ nền tảng cũ sang nền tảng NT (New Technology), ban đầu họ cũng gặp rất nhiều khó khăn, nhưng dần dần cũng được người dùng chấp nhận Hy vọng trong tương lai sẽ xuất hiện những hệ điều hành mới lấy thiết kế an toàn làm chủ đạo
Các nghiên cứu liên quan Các công trình nghiên cứu của Ludwig [4] hay Nachenberg [1] đã tổng hợp rất đầy đủ
về virus và cuộc chiến chống virus máy tính
5 TÀI LIỆU THAM KHẢO
[1] Carey Nachenberg, 1997, Computer virus-antivirus coevolution, ACM
[2] Andrew S Tanenbaum, 2001, Modern Operating Systems, Prentice Hall
[3] William Stallings, 2006, Cryptography and Network Security, Prentice Hall
[4] Mark Ludwig, 2009, The Giant Black Book
Of Computer Viruses, CreatSpace