Thứ Ba, 11 tháng 9, 2012

Vì sao Linux sẽ không bao giờ dính virus như Windows


Why Linux Will Never Suffer From Viruses Like Windows
Tuesday, September 04, 2012 - by Jesse Litton in Misc
Bài được đưa lên Internet ngày: 04/09/2012
Lời người dịch: Một bài so sánh để giải thích vì sao Linux sẽ luôn ít bị dính virus hơn Windows, chứ không phải như các fan hâm mộ Windows luôn khẳng định vì ít người sử dụng Linux/Mac nên chúng mới có ít virus hơn, chứ không phải vì bản chất tự nhiên nguồn đóng của Windows làm cho nó đương nhiên là ít an ninh hơn so với Linux. Bạn hãy đọc kỹ và chiêm nghiệm.
Dường như có một hiện tượng lặp đi lặp lại trong báo chí về công nghệ, nơi mà bất kỳ trojan nào ảnh hưởng tới Linux hoặc Macs trở thành các tin tức hàng đầu. Mặt khác, các trojan mà ảnh hưởng tới Windows lại hầu hết được bỏ qua, có lẽ vì điều này được coi như là một tình trạng thông thường.
Có 2 tuyên bố phổ biến được làm trong các thảo luận về các sự kiến hiếm hoi đó:
  • Không hệ điều hành nào từ trước tới nay là an ninh trước các Trojan.
  • Linux/Mac chỉ có ít virus hơn vì không ai sử dụng chúng.
Tuyên bố thứ nhất hầu như là đúng, trong khi tuyên bố thứ 2 là một chuyện thần thoại được đánh xẹp theo quan điểm của tôi. Hãy để tôi giải thích, và tôi sẽ lắng nghe nếu bạn vẫn không đồng ý sau khi đọc những thứ sau đây một cách đầy đủ.
1. Không hệ điều hành nào từ trước tới nay hoàn toàn an ninh đối với các Trojan... nhưng chỉ tới khi chúng cho phép bất kỳ ai đó ghi một phần mềm không thể mở ra được đối với nó.
Nếu những người sử dụng có khả năng chạy bất kỳ thứ gì, thì họ cũng có thể cài đặt bất kỳ thứ gì họ bị lừa để chạy. Bất kỳ ai cũng có thể đánh lừa mọi người trong việc chạy một script để định dạng ổ đĩa của họ trong bất kỳ hệ điều hành nào... nếu người sử dụng đó khờ dại cả tin đủ để nháy vào các lời nhắc và đưa vào mật khẩu quản trị của mình. Chỉ có một cách duy nhất đối với việc này: Đừng để những người sử dụng chạy bất kỳ thứ gì họ muốn!
Lấy XBox 360 làm ví dụ. Thực sự đây là một máy tính đủ lông đủ cánh, với thị phần khổng lồ, chạy một hệ điều hành Windows. Vâng, với tất cả các điểm tổn thương kết hợp lại đó thì nó không biết các trojan đang trôi nổi xung quanh trong thế giới hoang dã. Vì sao? Vfi toàn bộ sự truy cập hệ thống bị hạn chế đối với các công ty được thiết lập với một chuỗi trách nhiệm rõ ràng. Những người sử dụng không thể chạy các phần mềm không được ký trong hệ thống, và thậm chí với những người lập trình XNA chỉ có được sự truy cập vào chiếc hộp cát què quặt.
There seems to be a recurring phenomenon in the technology press, where any trojan that affects Linux or Macs becomes front page news. On the other hand, trojans that affect Windows are mostly ignored, perhaps because this is considered to be the normal state of affairs.  
There are two common statements made in the discussions of these rare events:
  • No operating system will ever be secure from Trojans.
  • Linux/Mac only have fewer viruses because no one uses them.
The first statement is almost correct, whereas the second one is a flat out myth in my opinion. Let me explain, and I’ll listen if you still disagree after reading the following in its entirety.1.  No operating system will ever be totally secure from Trojans... but only as long as they allow anyone to write un-sandboxed software for it.
If users have the ability to run anything, they can also install anything they are tricked into running. Anyone can trick people into running a script to format their drive on any operating system... if the user is gullible enough to click through the prompts and enter the admin password. There is only one way around this: Don’t let the users run anything they want!
Take the XBox 360, for example.  It’s actually a full fledged computer, with huge marketshare, running a Microsoft operating system. Yet, with all these compounding points of vulnerability it has no known trojans floating around in the wild. Why? Because full system access is restricted to established companies with a clear chain of responsibility. Users can’t run unsigned software on the system, and even with XNA indie devs get only crippled sandbox access.
Apple’s taking this same approach with their Mac App Store. Apps delivered through the store must run in a sandboxed environment. Microsoft is also doing the same thing with their Windows 8 app store. If devs want to create their own apps with full system access, they won’t be able to play in these ecosystems.  Of course, Apple and Microsoft still let their own apps, the ones devs will be competing against, run with full system access (look for anti-trust lawsuits here later).
After “Secure Boot” (i.e. restricted boot) is prevalent, and the operating systems are locked down to not allow anyone to sideload any non-OEM software, we could be completely free of trojans and viruses.  That might be good for the average level of system security, but it would be a horrible blow to innovation, competition, and the indie/hobbyist developers.
Apple thực hiện tiếp cận y hệt với kho ứng dụng Mac App Store của hãng. Các ứng dụng được phân phối thông qua cửa hàng phải chạy trong một môi trường hộp cát đóng. Microsoft cũng làm điều y hệt với kho các ứng dụng của Windows 8. Tất nhiên, Apple và Microsoft vẫn để lại các ứng dụng của riêng họ, các ứng dụng mà các lập trình viên sẽ cạnh tranh với nhau một lần nữa, chạy với sự truy cập đầy đủ vào hệ thống (tìm các vụ kiện chống độc quyền ở đây sau).
Sau khi “Khởi động An toàn” (như sự khởi động bị hạn chế) là thường thấy, và các hệ điều hành bị khóa lại không cho phép bất kỳ ai tải bên ngoài bất kỳ phần mềm không phải của các nhà sản xuất thiết bị gốc (OEM), chúng ta có thể hoàn toàn tự do đối với các trojan và virus. Điều đó có thể là tốt cho mức an ninh hệ thống trung bình, nhưng nó có lẽ là một cú đánh kinh hoàng cho đổi mới, sạu cạnh tranh và các lập trình viên chuyên nghiệp/làm theo niềm đam mê.
2.Liệu sự áp dụng hệ thống có trực tiếp liên can tới sự có thể có virus/trojan ngày một gia tăng hay không? Không. Theo quan điểm của tôi. Có nhiều lý do các hệ thống Linux có ít virus hơn, và thị phần chỉ là một yếu tố. Tôi sẽ đề cập tới chúng từ quan điểm của Linux. Trên các đồ của Mac, vài điểm không áp dụng được, vì Apple đã lấy các phần mềm tự do và biến nó thành đóng, khu vường có hàng rào bao bọc.
Số phần trăm khổng lồ các phần mềm cho Linux được cài đặt từ các kho được ký:
1) Bản thân các bản tải về được ký có mật mã.
Khi một người sử dụng tải các phần mềm và các trình điều khiển cho Windows, họ thường làm điều đó từ nhiều website khác nhau trên Internet, và tin tưởng rằng những người quản trị của mỗi website có năng lực và đã làm đúng phận sự của họ để triển khai an ninh đúng phù hợp. Vào thời điểm tải về, không có sự kiểm tra để khẳng định sự hợp lệ rằng tệp mà người sử dụng đang lấy thực sự được một nguồn tin cậy tạo ra (và không một tin tặc nào đã thâm nhập được vào site đó) hoặc đang được một số người trung gian nào đó phục vụ.
Trên Linux, với một ít ngoại lệ, các trình điều khiển phần cứng cũng được đưa vào trong nhân. Như đối với phần mềm, những người sử dụng thường tải về chúng chỉ từ một tập hợp có giới hạn các kho mà các phát tán sở hữu. Tất cả các phần mềm được phân phối trong các gói cài đặt được ký có mật mã và những chữ ký đó được kiểm tra tại thời điểm cài đặt. Nếu một gói bị thay thế bằng một phiên bản bị thâm nhập và vì thế đã không được ký bằng một chứng chỉ tin cậy, thì những người sử dụng sẽ có được một cảnh báo lỗi to khổng lồ cho họ về điều đó.
2. Does system adoption directly correlate to an increased likelihood of viruses / trojans? No. Not in my opinion. There are many reasons Linux systems have fewer viruses, and market share is only one factor.  I’ll address these from the Linux perspective. On the Mac side of things, several of the points don’t apply, as Apple has taken free software and brought it into its closed, walled garden.A huge percentage of Linux software is installed from signed repositories:
1) The downloads themselves are cryptographically signed.
When a user downloads software and drivers for Windows, they’re typically doing it from many different websites on the internet, and trusting that the admins of every one of those sites is competent and has done their due diligence to implement the proper security.  At the time of the download, there is no check to verify that the file the user is getting was actually created by a trusted source (and not a hacker that has pwn’d the site) or is being served by some man in the middle.
On Linux, with few exceptions, the hardware drivers are also included with the kernel. As for software, users typically download that from only a limited set of distro-owned repositories.  All software is delivered in installation packages that are cryptographically signed and those signatures are checked at installation time.  If a package has been replaced with a hacked version and was therefore not signed with a trusted cert, users will get a big fat error warning them of that.


2) The repositories (“repos”, for short) keep all of the software up to date, not just the kernel or things made by the distro creator.
When a security flaw is found in a Windows application, the vendor will usually put an update on their website.  With the exception of a few MS partners that have their drivers on Windows Update, it is up to the user to go discover that and update their software.
On Linux, security issues can be raised and patches created by any entity, not just the original software author.  These updates are applied and pushed into the repos for all applications.  Users become aware of it almost immediately - as most distros check regularly and prompt users to click a button to update the app.
2) Các kho (“repos”, nói ngắn gọn) giữ cho tất cả các phần mềm được cập nhật, không chỉ nhân hay những thứ được người sáng tạo ra phát tán đó làm ra.
Khi một lỗi an ninh được tìm thấy trong một ứng dụng Windows, thì nhà cung cấp thường sẽ đặt một bản cập nhật lên website của họ. Với ngoại lệ của một ít các đối tác của Microsoft mà có các trình điều khiển của họ trong Windows Update, còn lại là phụ thuộc vào người sử dụng đi khám phá là cập nhật cho các phần mềm của họ.
Trên Linux, các vấn đề về an ninh có thể được nảy sinh và các bản vá được bất kỳ thực thể nào tạo ra, chứ không chỉ tác giả của phần mềm gốc ban đầu. Những bản cập nhật đó được áp dụng và được đẩy vào các kho cho tất cả các ứng dụng. Những người sử dụng đã nhận thức được về nó hầu như ngay lập tức - khi mà hầu hết các phát tán thường xuyên kiểm tra và nhắc nhở những người sử dụng để nháy vào một núm để cập nhật các ứng dụng.

I finally found a trojan! It's a Windows trojan in my Junk email folder, that doesn't work on my Linux box.
More than 99% of the software is open source:
It’s not unreasonable to wonder “How does having the source code available for any nefarious hackers to peruse, make software more secure?”.  The answer can be summed up in something Eric Raymond said about 13 years ago:  “Given enough eyeballs, all bugs are shallow”.
In the Windows world, we are trusting the vendor to have done the due diligence to investigate their own code for buffer overflows and other exploitable flaws. No one else has seen the code, so automated software source scans/reviews are impossible.
In the Linux world, there are dozens of companies and security researchers that constantly run scans over the entire ecosystem of software in their repositories - not just the software they’ve developed themselves.
Hơn 99% các phần mềm là phần mềm nguồn mở:
Không phải là không hợp lý để nghi ngờ “Làm thế nào có mã nguồn sẵn sàng cho bất kỳ tin tặc bất chính nào để xem xét kỹ, lamf cho phần mềm an ninh hơn nhỉ?”. Câu trả lời có thể được tóm tắt trong thứ gì đó mà Eric Raymond đã nói 13 năm về trước: “Có đủ các con mắt, thì tất cả các lỗi sẽ cạn”. Trong thế giới của Windows, chúng ta đang tin tưởng vào nhà cung cấp đã làm xong trách nhiệm điều tra mã nguồn của riêng họ đối với lỗi tràn bộ nhớ đệm và các lỗi có khả năng bị khai thác khác. Không có ai khác nhìn thấy được mã nguồn cả, nên việc tự động quét/rà soát lại mã nguồn của các phần mềm là không thể.
Trong thế giới Linux, có hàng tá các công ty và các nhà nghiên cứu an ninh thường xuyên chạy các lần quét qua toàn bộ hệ sinh thái của phần mềm trong các kho của họ - không chỉ phần mềm mà bản thân họ đã phát triển.
Mã nguồn mở cũng có xu hướng tự cho vay để sử dụng lại. Trong thế giới Linux, các lập trình viên thậm chí sẽ không bị xúi giục đi triển khai một tính năng trọng tâm về an ninh như bản thân các thư viện SSL, khi có những thư viện làm việc tuyệt vời, như những thứ có thể đưa trình gỡ rối các lỗi của chúng vào và sửa bất kỳ lỗi nào nằm bên trong, là một tài sản tuyệt vời.
Trong Windows, có một sự tăng cường về suy nghĩ “không phát minh ở đây” khi các ứng dụng tái triển khai cái bánh xa cho dự án nguồn đóng của họ để tránh phải trả tiền cho các lập trình viên phần mềm sở hữu độc quyền khác vì một thư viện tiện ích được hiệu đính tốt. Một phát tán Linux còn hơn cả chỉ Linux. Linux là nhân, và nhiều thành phần khác là một phần của môi trường GNU. Các gói chung (như máy chủ web Apache) được sử dụng trong các hệ điều hành nguồn mở khác nhau, bao gồm cả BSD. Và, trong trường hợp bạn không biết, thì các chàng trai BSD là dạng những người say mê về an ninh. Vì thế, những thành phần đó đã được soi xét kỹ lưỡng với hàng trăm chiếc răng lược tốt.
Kết hợp bản chất tự nhiên nguồn mở của Linux với hệ thống các kho được sử dụng cho sự phân phối các phần mềm, và bất kỳ ai cũng có thể thấy vì sao các khai thác Linux lại có vòng đời cực ngắn đáng sốc như vậy: Khi một khai thác ngày số 0 được tìm thấy, các cao thủ vội vã xem ai có thể tới với sự sửa lỗi tốt nhất (vì mỗi người đều có được sự truy cập tới nguồn), và nó được đẩy vào trong các kho và đưa ra cho mọi người ngay lập tức.
Open source code also tends to lend itself to re-use.  In the Linux world, devs are not even going to be tempted to go implementing a security-centric feature like SSL libraries themselves, when there are perfectly working ones available for their open source apps to use for free.  Having that code open, such that they can step their debugger into and fix any underlying bugs themselves, is a great asset.
On Windows, there’s a reinforcement of the “not invented here” mindset as apps re-implement the wheel for their closed-source project in order to avoid paying other proprietary software developers for a decently vetted utility library. A Linux distribution (distro) is more than just Linux. Linux is the kernel, and many of the other components are part of the GNU environment. Common packages (ex. Apache web server) are used in other open source operating systems, including BSD. And, in case you didn't know, the BSD guys are kind of nuts about security. So, these components have been scrutinized with a hundred fine toothed combs.
Combine the open-source nature of Linux with the repository system used for software distribution, and anyone can see why Linux exploits have shockingly short lifespans:  When a 0-day exploit is found, the geeks rush to see who can come up with the best fix (since everyone has access to the source), and it’s pushed into the repos and out to everyone immediately.
Linux distros are diverse:
Các phát tán Linux là đa dạng:
Các trojan thành công dựa vào một số lỗi hoặc sâu bọ để tồn tại, để giành lấy các quyền ưu tiên được leo thang. (Tôi biết, đúng thế chứ?). Trên Windows, các tác giả của phần mềm độc hại có thể khá chắc chắn rằng lỗi của nhân mà tồn tại trong máy Windows 7 của họ cũng tồn tại trong máy Windows 7 của bạn (nếu cả 2 đều được cập nhật).
Trên Linux, những tin tặc có thể đó có lẽ sẽ cực kỳ may mắn nếu 2 phát tán khác nhau đang chạy cùng một nhân - ít nhiều cùng tập hợp y hệt các bản vá - và có thể là nếu chúng đã được xây dựng với cùng y hệt các lực chọn biên dịch. Các lỗi y hệt không tồn tại ở khắp mọi nơi, nó làm cho Linux ít trở thành mục tiêu có thể hơn. Nó vẫn còn là một mục tiêu hấp dẫn (vì một số % lớn các máy chủ luôn sống trên Internet chạy nó), nó chỉ không dễ dàng gì bị khai thác ở mức hệ điều hành mà thôi.
Vì thế, kết luận là rõ ràng: Thậm chí nếu chúng đã có thị phần chính xác y hệt như nhau, thì cực kỳ không chắc rằng Linux có thể bao giờ đó có số lượng các khai thác y hệt như chúng ta thấy trong hệ sinh thái nguồn đóng như với Windows. Đây là một kết quả trực tiếp của bản chất tự nhiên mở, nó cho phép hằng hà xa số các công ty và những người ham thích truy cập và duy trì tất cả các phần của hệ thống - một tính năng mà đơn giản không thể nhân bản được trong các hệ điều hành sở hữu độc quyền. Linux sẽ luôn có nhiều hơn các con mắt soi xét qua mã nguồn để làm cho nó an ninh, hơn là việc có những con mắt nhìn qua mã nguồn để khai thác nó.
Tôi chào đón bất kỳ đàm luận hiểu biết nào về chủ đề này, thậm chí nếu bạn không đồng ý với tôi.
Successful trojans rely on some bug or flaw to exist, in order to gain elevated privileges. (I know:  duh, right?) On Windows, malware authors can be pretty sure that the kernel bug that exists on their Windows 7 box also exists on your Windows 7 box (if both are up to date).
On Linux, these would-be-hackers would be extremely lucky if two different distros are running the same kernel  -- much less the same patch-sets -- and maybe if they were built with the same compile options.  The same bugs do not exist everywhere, which makes Linux a less viable target. It's still an attractive target (since a large percentage of the always-on servers on the Internet run it), it's just not as easily exploited at the OS level.
So, the conclusion is obvious:  Even if they had the exact same market share, it is extremely unlikely that Linux would ever have the same number of exploits as we see in closed-source ecosystems such as Windows. This is a direct result of the open nature, which allows for innumerable companies and hobbyists to access and maintain all portions of the system--a feature that simply can't be replicated in proprietary operating systems. Linux will always have more eyes looking through the code to make it secure, than there are eyes looking through the code to exploit it.
I welcome any intelligent discourse on the topic, even if you disagree with me.
Dịch: Lê Trung Nghĩa

1 nhận xét:

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.