I.L.E.N rss feed Trang chủ Linux Bài 4: Tạo sao Windows là một khâu yếu trong an ninh, phần 2/2
Bài 4: Tạo sao Windows là một khâu yếu trong an ninh, phần 2/2
Thứ sáu, 18 Tháng 1 2013 10:31

Trong cuộc thi hack Hệ Điều Hành tổ chức năm 2008. Có ba chiếc notebook cài các hệ điều hành Windows Vista, Mac OS X và Ubuntu Linux với các bản vá lỗi mới nhất. Cuộc thi tiến hành trong ba ngày. Trong ngày đầu, người nào hack được máy nào sẽ được thưởng 20.000 USD và chiếc máy tính đó. Sang ngày thứ hai, giải thưởng rút xuống còn 10.000 USD + notebook và tới ngày thứ ba thì chỉ còn 5.000 USD. Luật chơi cũng nới lỏng dần: trong ngày đầu chỉ được tấn công hệ điều hành, sang ngày thứ hai được phép khai thác lỗi của các phần mềm tiêu chuẩn và tới ngày thứ ba thì được dùng mọi biện pháp có thể.

Máy đầu tiên bị hạ vào ngày thứ hai là MacBook Air chạy hệ điều hành Mac Leopard khi một lỗi trong trình duyệt Safari bị khai thác. Sang ngày thứ ba, đến lượt chiếc laptop Fujitsu U810 cài Windows Vista bị hạ khi các hacker khai thác một lỗi trong phần mềm Adobe Flash.

Hết thời hạn ba ngày, duy nhất chỉ còn chiếc Sony Vaio cài Ubuntu Linux là trụ vững được, chưa bị hack.

Cuộc thi này có thể không chứng minh được rằng hệ điều hành nào an toàn hơn nhưng ít nhất cũng cung cấp cho đọc giả cái nhìn khái quát về độ an toàn của các hệ điều hành phổ biến hiện nay.

Nội dung sau đây sẽ khảo sát chi tiết hơn những nguyên nhân cốt lõi khiến Windows trở nên mất an toàn và dễ bị tấn công, khai thác trong môi trường internet.

- Windows sơ khởi thiết kế dành cho cá nhân, người dùng đơn lẻ.
- Windows được thiết kế theo nguyên tắc đơn khối(monolithic)
- Windows phụ thuộc sâu mà mô hình RPC(Remote Procedure Call)
- Windows tập trung vào giao diện đồ họa.


1. Windows sơ khởi thiết kế dành cho cá nhân, người dùng đơn lẻ.

Hệ điều hành Windows của Microsoft ra đời từ thập niên 90 của thế kỷ trước. Thời mà các thiết kế chỉ dành cho những máy trạm, làm việc độc lập(single user). Khi mạng máy tính chỉ ở mức rất thô sơ và chưa tiến hóa. Chứ không phải là những thiết kế dành cho môi trường internet(network), một môi trường dễ bị tổn thương và đầy thù địch. Nơi mà mỗi PC khi nối mạng đều có thể trở thành loại vũ khí phá hoại mang tính toàn cầu như hiện nay. Vì thế, những lỗ hổng về an ninh đã tồn tại từ những ngày đầu của Windows vẫn còn tồn tại cho đến hôm nay ở những phiên bản Windows mới nhất.

Gần đây Windows mới phát triển từ thiết kế một người dùng(Single-User Desing) sang mô hình đa người dùng(Multi-User Model)
Thiết kế đầu tiên của Windows là một người dùng (single-user). Vì vậy cả người dùng và phần mềm ứng dụng đều có thể tự do truy cập đến toàn hệ thống, lục lọi mọi chương trình hệ thống hoặc file hệ thống quan trọng. Do đó, virus và các loại mã độc cũng có thể làm vậy vì Windows không cô lập, bảo vệ các chương trình hoặc file hệ thống.

Windows XP là phiên bản Windows đầu tiên có những cố gắng nghiêm chỉnh để cách ly người dùng khỏi hệ thống, mỗi người dùng có các file riêng và quyền truy cập hệ thống hạn chế. Nhưng khi đó, các ứng dụng Windows cũ lại không chạy được vì chúng “quen” được phép lục tung hệ thống. Do đó, Windows XP có một kiểu chạy tương thích (compatibility mode) cho phép các chương trình ứng dụng chạy như thể chạy trên các hệ Windows cũ, có quyền truy cập tự do vào hệ thống(và virus cũng có thể làm được như vậy).

Kiểu chạy compatibility mode của Windows
Kiểu chạy compatibility mode của Windows


Windows XP đã có một ít tiến bộ nhưng vẫn không phải hệ đa người dùng (multi-user) thực sự và do đó vẫn còn các lỗ hổng an ninh của hệ single-user.

Windows Server 2003 là một bước tiến mới về môi trường đa người dùng thật sự nhưng vẫn không thoát khỏi các lỗ hổng an ninh thừa kế từ các đời single-user trước. Vì vậy, Windows server 2003 mặc định phải tắt nhiều tính năng của trình duyệt có nguy cơ về an ninh như ActiveX, scripting,…

Ở đây có hai vấn đề: 
a. Do mới chuyển sang multi-user nên công nghệ sẽ không hoàn chỉnh.
b. Vẫn phải đảm bảo tương thích với một số ứng dụng cũ nên sẽ tạo lỗ hổng an ninh.

Như vậy trên Windows, các tác giả phần mềm độc hại có thể khá chắn chắn rằng lỗi của nhân mà tồn tại trong một bản Windows nào đó của họ thì cũng tồn tại trong máy Windows của bạn.

Gần đây, Google khi xây dựng hệ Chrome OS đã hứa hẹn là sẽ thiết kế mới hoàn toàn để đảm bảo an ninh. Và chỉ có như vậy mới triệt để.

2. Windows được thiết kế đơn khối(Monolithic By Design) Không phải đa khối(Modular)

Một hệ đơn khối thì các tính năng tích hợp trong một thể thống nhất. Ngược với đơn khối, trong hệ đa khối các tính năng được chia thành các lớp (các module) riêng biệt, mỗi lớp có khả năng truy cập giới hạn đến các lớp khác.

So sánh Monolithic và Modula
So sánh Monolithic và Modula


Trong khi một số nhược điểm an ninh của Windows là do thiết kế đơn người dùng như đã nói ở trên, một số nhược điểm khác lại do những quyết định thiết kế cố tình. Microsoft đã loại trình duyệt Nestcape cạnh tranh bằng cách tích hợp trình duyệt Internet Explorer vào hệ điều hành đến mức không thể gỡ ra được. Dùng Help hay Outlook, … đều phải gọi đến IE. Microsoft đã thành công loại các sản phẩm cạnh tranh bằng cách tích hợp ngày càng nhiều các dịch vụ vào hệ điều hành nhưng điều đó cũng tạo nên một con quái vật gồm các dịch vụ phụ thuộc qua lại lẫn nhau chặt chẽ và đó chính là một hệ đơn khối.

Sự phụ thuộc chặt chẽ vào nhau của các dịch vụ tạo ra hai hệ quả xấu:

1. Trong một hệ đơn khối, mọi lỗ hổng an ninh của một bộ phận sẽ ảnh hưởng đến tất cả các bộ phận khác phụ thuộc vào nó. Việc tích hợp IE vào hệ điều hành sẽ làm cho một lỗ hổng an ninh của IE sẽ ảnh hường đến hàng loạt ứng dụng khác.

2. Một hệ đơn khối về bản chất là không ổn định. Khi thiết kế một hệ có quá nhiều quan hệ phụ thuộc lẫn nhau giữa các bộ phận, việc thay đổi một bộ phận có thể gây nên vô số rủi ro, ảnh hưởng dây chuyền đến các bộ phận khác phụ thuộc vào bộ phận bị thay đổi. Một ví dụ điển hình là mỗi lần cập nhật hoặc vá lỗi một bộ phận của Windows thường làm hỏng các bộ phận hoặc ứng dụng khác (nhất là ứng dụng của bên thứ ba).

Màn hình xanh chết chóc(blue screen of death)
Màn hình xanh chết chóc(blue screen of death)


Người dùng có thể nhận biết được điều này thông qua lỗi màn hình xanh. Đó là vì Windows tích hợp đồ họa vào nhân, lỗi đồ họa sẽ làm sập cả hệ thống.


3. Windows phụ thuộc quá nhiều vào mô hình RPC

RPC là chữ viết tắt của Remote Procedure Call(gọi thủ tục từ xa). Một chương trình gửi một message lên mạng để bảo một chương trình khác làm một việc gì đó. Sở dĩ có từ “remote – từ xa” là vì chương trình được gọi có thể nằm trên cùng máy, trên máy khác trong mạng hoặc thậm chí trên Internet.

Mô hình workflow của RPC
Mô hình workflow của RPC


RPC là một nguy cơ an ninh tiềm ẩn vì nó cho phép một máy khác trong mạng có thể bảo máy của bạn làm một việc gì đó. Windows phụ thuộc vào RPC đến mức mà bạn không thể tắt RPC đi ngay cả khi máy không nối mạng. Một số lỗi an ninh nghiêm trọng của Windows Server 2003(xem thống kê ở bài viết gốc) là do khe hở an ninh trong chính chức năng RPC chứ không phải trong chương trình sử dụng RPC. Cách thông thường nhất để khai thác một lỗ hổng RPC là tấn công dịch vụ sử dụng RPC.

Mô hình ứng dụng
Mô hình ứng dụng


Điều quan trọng là RPC không phải lúc nào cũng cần và vì thế rất khó hiểu là tại sao Microsoft lại dựa vào nó một cách bừa bãi đến vậy. Nếu một web site dùng một database server và một web server trên cùng một máy thì database server không cần phải dùng đến RPC để liên lạc với web server (nhưng lại vẫn phải dùng nếu là sản phẩm của Microsoft).

Một loại công cụ dùng khai thác lỗi RPC
Một loại công cụ dùng khai thác lỗi RPC


Nhắc đến điều đó vì chính sâu Slammer, một trong những sâu nguy hiểm nhất từng tấn công Internet, khai thác một trong những lỗi RPC của Microsoft. Slammer lây nhanh qua nhiều hệ thống đến nỗi thực tế đã làm tê liệt Internet.

Thông báo lỗi RPC thường thấy của Windows
Thông báo lỗi RPC thường thấy của Windows


4. Windows chú trọng vào giao diện đồ họa máy để bàn quen thuộc

Microsoft xem giao diện Windows quen thuộc của máy để bàn là một ưu điểm khi dùng Windows Server 2003.

Vì thế người dùng đăng nhập vào Windows Server với tên người quản trị (admininstrator) và có toàn quyền với hệ thống. Như vậy, khi dùng một chương trình dễ bị lỗi an ninh như IE, toàn server sẽ bị nguy hiểm.

Cuối cùng một Hệ Điều Hành chỉ được coi là an toàn khi Hệ Điều Hành đó phải đảm bảo sạch. Tức là không chứa những đoạn mã được cố tình đưa vào, ngoài chức năng của Hệ Điều Hành nhằm mục đích có hại cho người dùng.

Những những đoạn mã được cố tình đưa vào đó có thể là: trojan virus để đánh cắp thông tin gửi đến một địa chỉ định trước, các loại virus sửa, xóa thông tin, biến máy tính thành máy tính ma trong một mạng botnet, tạo các cổng hậu (backdoor) để người khác lén lút thâm nhập máy tính (thường là từ xa, qua mạng), thậm chí có thể là một “quả bom nổ chậm” đến một thời điểm định trước hoặc khi nhận được lệnh mới “nổ”… và còn nhiều cách khác nữa.

Các phần mềm ở dạng mã thực thi (dù là nguồn đóng hay nguồn mở) là nơi lý tưởng để cài mã độc vì người sử dụng không có cách nào để kiểm tra được.

Microsoft đã hai lần (năm 1999 và 2009) bị tố cáo cài sẵn cổng hậu trong các hệ điều hành Windows dành cho cục An ninh Quốc gia Mỹ. Mới đây(10/2011), cảnh sát Đức cũng bị tố cáo đã dùng một loại phần mềm gián điệp liên bang (federal Trojan) thâm nhập trái phép vào máy tính của công dân.

Mã nguồn của Microsoft đều được biên dịch thành thư viện liên kết động(DLLs)
Mã nguồn của Microsoft đều được biên dịch thành thư viện liên kết động(DLLs)


Ngay các phần mềm nguồn mở cũng có thể bị cài cắm theo kiểu này. Năm 2010, một trong những người được FBI thuê cài cổng hậu vào hệ điều hành OpenBSD đã lên tiếng tố cáo sau khi thời hạn bảo mật hợp đồng thuê nói trên đã hết.

Tại Việt Nam bộ gõ tiếng Việt Unikey for Windows tải về từ một số nguồn không tin cậy cũng bị cài cắm Trojan để lấy trộm thông tin.

Đối với các phần mềm, file nhỏ thì có thể dùng kỹ thuật dịch ngược(reverse engineering) từ mã thực thi thành mã nguồn rồi kiểm tra để tìm ra mã độc.

Nhưng nếu phần mềm lớn hàng nghìn dòng lệnh thì cách làm đó không khả thi. Ví dụ như trường hợp các bộ Windows nói trên, ta chỉ có thể tin tưởng vào lời thề sống chết của Microsoft, còn thì không có cách nào khác.

Ngay phần mềm nguồn mở nổi tiếng về bảo mật TrueCrypt cũng không thoát khỏi nghi ngờ. Trong một bài nghiên cứu, sau khi thử tấn công TrueCrypt, các tác giả viết:

Nếu không dịch ngược, chẳng có gì đảm bảo là phần mềm thực thi được công bố đúng là được dịch từ mã nguồn đã công bố
Nếu không dịch ngược, chẳng có gì đảm bảo là phần mềm thực thi được công bố đúng là được dịch từ mã nguồn đã công bố


Không dùng kỹ thuật dịch ngược rất tốn kém thì không thể chứng minh được rằng phần mềm thực thi đúng là được dịch từ mã nguồn đã công bố. Vì chúng tôi không dịch ngược nên không thể khẳng định rằng không có cổng hậu trong gói mã thực thi. Vì vậy, chúng tôi khuyên bạn nên tự dịch từ mã nguồn, không nên tin tưởng mù quáng vào TrueCrypt Foundation.

Trong khi đó đối với Windows, hầu như tất cả chương trình mã nguồn đều được biên dịch thành thư viện liên kết động(DLLs) trước khi thực thi. Và không ai biết được bên trong chúng có gì ngoài Microsoft. Đây là một trong những yếu tố tạo nên sự thống trị, độc quyền của Microsoft hàng chục năm qua và cũng chính nó quật lại Microsoft khi những lỗ hổng nghiêm trọng liên tiếp được phát hiện, khai thác nhưng không ai có thể sửa được chúng. Cuối cùng, người dùng sẽ lãnh đủ và phải kiên nhẫn chờ đợi các bản vá từ Microsoft.

Tóm lại về nguyên tắc: 
a. Nếu không dịch ngược, chẳng có gì đảm bảo là phần mềm thực thi được công bố đúng là được dịch từ mã nguồn đã công bố,
b. Vì vậy, không có gì đảm bảo phần mềm thực thi là “sạch” và 
c. Mã nguồn đã công bố có thể tin là sạch vì được cộng đồng người dùng soi, nên nếu muốn dùng phần mềm sạch, tốt nhất là tự dịch mã nguồn đó thành phần mềm thực thi để dùng.

 

Theo bộ phận phụ trách nghiệp vụ của Trung tâm ứng cứu khẩn cấp máy tính Việt Nam (VNCERT) và thống kê từ Bộ Công an cho thấy, trong 2 năm(2008-2010), khi kiểm tra các thiết bị, máy tính nhập khẩu, lực lượng chức năng đã phát hiện tới 1.165/4.892 máy tính nhập khẩu bị nhiễm mã độc, con số này tương đương 1/3 tổng số thiết bị nhập khẩu.

Báo tuổi trẻ ngày 16/09/2012Theo Tổng cục Thống kê VN cho biết, trong tám tháng đầu năm nay mặt hàng điện tử, máy tính và linh kiện nhập khẩu có kim ngạch đạt 8 tỉ USD, tăng rất mạnh so với cùng kỳ năm trước, đến 88,7%. Mặt khác, Trung Quốc là thị trường lớn nhất của VN với kim ngạch nhập khẩu đạt 18,2 tỉ USD, tăng 17,9% so với cùng kỳ năm 2011. Điều này dễ dàng nhận thấy qua sự xuất hiện ồ ạt của máy tính xuất xứ từ Trung Quốc tại các cửa hàng bán lẻ ở VN.

Bài báo cho biết thêm:

Các nhân viên trong nhóm điều tra của Microsoft tại Trung Quốc đã mua 20 máy tính mới từ các nhà bán lẻ và cho chúng kết nối Internet. Windows bản lậu được cài sẵn trên tất cả máy tính được mua và bốn trong số đó được “tặng thêm” mã độc cài sẵn. Một máy tính có Nitol được chú ý nhất vì mã độc này ngay lập tức thức giấc và hoạt động khi điều tra viên mở máy lần đầu tiên mà không cần bất cứ thao tác nào từ phía người dùng. Nitol có chức năng cài đặt các backdoor (“cửa hậu”) để tội phạm mạng có thể điều khiển máy tính từ xa thực hiện gửi thư rác, theo dõi người dùng máy tính, đánh cắp dữ liệu cá nhân hoặc tấn công các trang web trên mạng...

(loạt bài giới thiệu hệ điều hành mã nguồn mở)

Tài liệu tham khảo:
1. Vì sao an ninh của Windows là khủng khiếp
2. Báo cáo về an ninh: Windows so với Linux
3. Tản mạn về phần mềm “sạch”

Kỳ tới: Các vấn đề pháp lý khi sử dụng HĐH Windows của Microsoft