Trong mấy năm gần đây, các loại virus lây nhiễm qua thiết bị nhớ USB phát tán rất mạnh trong khi người dùng lúng túng, không biết làm thế nào để tự vệ. Bài viết của tôi về các nguy cơ bảo mật do thiết bị nhớ USB đem lại trên TGVT số tháng 2/2008 (http://www.pcworld.com.vn/A0802_116) đã “ngây thơ” giới thiệu với bạn đọc phương pháp vô hiệu tính năng AutoRun để ngăn chặn virus. Đến nay, rất nhiều người (tất nhiên trong đó có tôi) đã sử dụng thủ thuật đó để rồi vẫn dính virus mà không nhận ra. Để chuộc lỗi, tôi xin phép trình bày nguyên nhân của vấn đề và cách ngăn chặn virus “autorun” hiệu quả hơn.
AutoRun,
AutoPlay và cách Windows xử lý tệp AUTORUN.INF
Do
cơ chế AutoRun của Windows khá “lùng nhùng” và virus thường lợi dụng
điều đó để đánh lừa người dùng theo nhiều cách khác nhau nên muốn tránh
những trường hợp “chết vì thiếu hiểu biết”, chúng ta nên tìm hiểu cụ thể
những bí mật đằng sau hậu trường. AutoRun là cơ chế xuất hiện từ
Windows 95, cho phép tự động chạy các ứng dụng mỗi khi một ổ đĩa được
kết nối. Với người dùng, nó thường được gọi là AutoPlay. Trong các tài
liệu, chúng ta thường thấy các thuật ngữ AutoRun và AutoPlay được dùng
lẫn lộn (thiết lập AutoPlay trong Windows Policy làm thay đổi mục
AutoRun trong Registry, tệp autorun.inf là tác nhân thêm "AutoPlay" vào
trình đơn ngữ cảnh của ổ đĩa). Hai thuật ngữ này tiếp tục được dùng lẫn
với nhau mà không có sự phân biệt nào cho đến khi có Windows XP và sự
cải tiến cơ chế AutoPlay của Microsoft. Kể từ đó, để nâng cao tính bảo
mật (hay cũng có thể chỉ đơn giản là phản ánh sự đa dạng của ứng dụng),
người dùng được lựa chọn ứng dụng để gọi từ hộp thoại AutoPlay thay cho
việc thiết bị tự quyết định. Các mục chọn của hộp thoại AutoPlay phụ
thuộc vào loại tệp có trên ổ đĩa (ảnh, nhạc hay phim) và các thiết lập
trong tệp Autorun.inf. Vì AutoPlay do người dùng điều khiển và “an toàn”
hơn nên Windows đã kích hoạt nó một cách mặc định cho các ổ đĩa tháo
lắp được.
Nếu mọi chuyện chỉ dừng lại ở đây thì đã không có gì
phải lo lắng nhiều vì Microsoft đã cung cấp cho chúng ta hai thiết lập
NoDriveAutoRun và NoDriveTypeAutoRun để vô hiệu tính năng AutoRun (cũng
như AutoPlay). Nhưng không, người dùng tiếp tục bị thử thách. Microsoft
tự động đặt lại giá trị mặc định của NoDriveTypeAutoRun trên các máy
tính chạy Windows Server 2003, Windows XP hay Windows 2000 sau khi chúng
gia nhập Active Directory domain
(http://support.microsoft.com/kb/895108). Chưa hết, thay vì ngưng mọi
hoạt động AutoPlay nếu giá trị NoDriveTypeAutoRun cấm điều đó thì
Windows lại âm thầm phân tích tệp Autorun.inf và thực hiện tất cả những
gì đọc được trừ thao tác cuối cùng là gọi hộp thoại AutoPlay hay thực
thi chương trình ứng dụng (Microsoft đã phải cung cấp bản vá từ tháng
8/2008, các bạn có thể xem thêm ở phần sau). Chính vì sự không nhất quán
này, những người dùng chưa cập nhật bản vá cần thiết mà đã chỉnh sửa
registry để tắt tính năng AutoRun đã tự “nộp mình cho virus xơi”. Trong 4
kiểu lây lan của virus (1 - Lây ngay lập tức; 2 - Lây qua hộp thoại
Autoplay (dễ bị phát hiện); 3 - Lây khi người dùng nhấn đúp vào ổ đĩa; 4
- Lây khi người dùng chọn trình đơn ngữ cảnh của ổ đĩa), việc tắt tính
năng AutoRun nửa vời chỉ chặn hai cách lộ liễu nhất. Khi đó, virus không
cần phải tự động thi hành khi thiết bị nhớ USB được cắm vào máy hay
thêm một mục đánh lừa vào hộp thoại AutoPlay (xem phần “Đừng nhầm lẫn
với hộp thoại AutoPlay”), chúng chỉ cần báo cho Windows các hoạt động
cần thực hiện khi người dùng mở ổ đĩa (nhấn đúp hay chọn Open từ trình
đơn ngữ cảnh) rồi ung dung “nằm đợi”. Những lời khuyên không nhấn đúp
vào biểu tượng ổ đĩa trong Windows Explorer trở nên thừa thãi vì dù bạn
có nhấn chuột phải và chọn Open từ trình đơn ngữ cảnh thì cũng vẫn dính
virus (trừ một vài loại “nhân đạo”). Hậu quả tệ hại nhất của việc tắt
tính năng AutoRun “giả” là người dùng bị nhiễm virus mà vẫn tin rằng
mình thông minh, miễn nhiễm với chúng.
Ngăn
chặn virus autorun lây vào máy
Dù AutoPlay đã
được Microsoft cải tiến nhưng vẫn không khắc phục được hết những lỗ hổng
bảo mật. Lựa chọn tối ưu cho người dùng là tắt hẳn tính năng AutoRun.
Tài liệu How to disable the Autorun functionality in Windows
(http://support.microsoft.com/kb/967715/) cho biết để đảm bảo vô hiệu
tính năng Autorun, chúng ta cần cài đặt một bản cập nhật (nếu không thể
cài đặt bản cập nhật KB967715 thành công, các bạn có thể cài đặt bản
KB950582 thay thế) trước khi sửa giá trị NoDriveTypeAutoRun trong
Registry hay sử dụng Group Policy (nếu chọn cách sửa NoDriveTypeAutoRun,
hãy đặt giá trị 255 cho nó để cấm Autorun trên tất cả các ổ đĩa; các
thiết bị nhớ USB U3 đã lừa Windows bằng cách thông báo nó vừa là thiết
bị nhớ USB vừa là CD). Hơn thế nữa, tài liệu này còn chỉ cho chúng ta
đường dẫn trỏ tới phương pháp cấm hẳn việc sử dụng các thiết bị nhớ USB.
Tuy nhiên, đó là một câu chuyện khác.
Vì cách làm do Microsoft
hướng dẫn tương đối phức tạp và mất thời gian, tôi xin giới thiệu một
cách đơn giản hơn, cách này xuất hiện lần đầu trên blog của Nick Brown
và đã được Đội ứng cứu máy tính khẩn cấp của Mỹ - US CERT dẫn lại
(Vulnerability Note VU#889747, http://www.kb.cert.org/vuls/id/889747),
vì thế các bạn có thể an tâm sử dụng:
Tạo một subkey tên là
autorun.inf trong mục HKLM\Software\Microsoft\Windows
NT\CurrentVersion\IniFileMapping. Đổi mục (Default) dưới subkey đó thành
chuỗi @SYS:DoesNotExist
Nếu không quen sửa registry, các bạn có
thể chép 3 dòng dưới đây vào một tệp NOAUTRUN.REG (thực ra là bất cứ tên
gì cũng được miễn là với đuôi .REG) rồi nhấn đúp vào nó (trong Windows
Explorer, chứ không phải nhấn đúp vào 3 dòng nội dung của tệp): REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\
IniFileMapping\ Autorun.inf]
@="@SYS:DoesNotExist"
Thực chất của cách làm này là thông
báo cho Windows biết mỗi khi gặp tệp AUTORUN.INF thì không đọc nội dung
tệp mà tìm đọc khóa HKEY_LOCAL_MACHINE\SOFTWARE\ DoesNot Exist trong
registry. Vì khóa này không tồn tại nên sẽ không có gì “tự động” xảy ra.
Để dễ hiểu, người dùng Việt Nam có thể đổi DoesNotExist thành
KhongTonTai hoặc KhongKhongThay (theo bạn, tên nào hay hơn?).
Theo
Nick Brown, Windows lưu các thông tin về tính năng AutoRun của các
thiết bị nhớ USB đã được cắm vào máy tính tại mục
HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\
MountPoints2 của registry (bạn đọc đã từng sử dụng USB có thể dễ dàng
kiểm chứng điều này). Vì vậy, ngay cả nếu tính năng AutoRun đã được vô
hiệu bằng một trong hai cách trên, Windows vẫn có thể tự động chạy các
ứng dụng - có thể là virus - trên các USB thân quen khi chúng được cắm
lại vào máy. Theo Wiki, không có tài liệu nào của Microsoft mô tả về mục
MountPoints2 trong registry vì nó được dùng để theo dõi việc sử dụng
trái phép hệ điều hành bằng cách sao chép trực tiếp từ đĩa sang đĩa.
Cũng không có thông tin nào cho thấy bản vá lỗi AutoRun của Microsoft đã
khắc phục vấn đề do mục MountPoints2 gây ra hay chưa. Vì vậy, tốt nhất
là các bạn nên xóa cả mục MountPoints2 của tất cả các tài khoản trên máy
để tránh hậu họa.
Lưu ý, cả hai cách trên đều tắt được tính năng
autorun một cách triệt để nhưng không đảm bảo chặn hoàn toàn các loại
virus/worm thường lây qua đường autorun. Có ít nhất hai khả năng để các
loại virus đó lây vào máy bạn: lây qua mạng (nhờ lỗ hổng của hệ điều
hành) như Conficker, lây nhờ sự ngờ nghệch của người dùng khi họ nhấn
đúp vào tệp thi hành của nó (Phimnguoilon.exe chẳng hạn) – nếu bạn làm
như vậy thì đừng nên kêu ca về việc bị nhiễm virus!
Ngăn
chặn virus autorun lây vào USB