Are macs more insecure than Windows / GNU/Linux?
While I am not a big Mac OS fan, I think unbiased analysis of its advantages and downsides is fundamental, to build a personal opinion. This article is a little biased against Mac OS, but I think it got the main point right:
I have developed this analogy of someone who wants to buy a nuclear reactor. There are two organizations interested in providing you with their nuclear reactor.Given those two choices… which would you consider to be more secure/stable/reliable? Which one would you choose? I’d personally go for Provider 1. At least I know what I’m getting. And the guys are so comfortable with their design that they even give it away to buyers. Perhaps the guys at Chernobyl chose provider # 2.
- Provider # 1 gives you the reactor plus all the design information, all blue prints, everything but the kitchen sink!
- Provider # 2 gives you the reactor and doesn’t give you a clue as to how it is built inside. It’s a black box (or a massive gray one). All you have is the control panels and the documentation that this provider is kind enough to provide with (you know…. they can’t give you everything for security reasons).
Great analogy, but the same is true for Windows
6 Responses to “Are macs more insecure than Windows / GNU/Linux?”
Leave a Reply

Matt on April 30th, 2009
I don't think Mac OS X is so closed. I have worked with it for many years and I can't say it's as close as Windows.
Major components of Mac OS X, including the UNIX core (and therefore the kernel) are made available as open source, allowing developers and students to view source code, learn from it and submit suggestions.
More than 230 components in Mac OS X are existing open source projects used in other platforms too. This core open source components have been subjected to review for decades and make Mac OS X a more robust, secure operating system.
Even Safari – at its core (the rendering engine) – uses software created by the open source community. Apple does not only use open source software but also enhances it returning value to the community.
What is not open source are the higher layers of the OS, like the GUI, some frameworks and utility apps.
Call me stupid, but I love working and developing with a single, standard, unified and consistent environment. All in all, I think Mac OS X is a great compromise between openness and closeness for a personal computer OS.
Snyke on April 30th, 2009
As for other Open source projects by Apple, they often are existing projects that are assimilated by Apple and due to licensing or simply to keep the status quo are kept open source. Fact is that some key elements are closed source, and I think I'm not the only one that would really like an open source iTunes for example.
iTunes is another major point of criticism I have towards Apple: the fact that their hardware (iPhone & iPod Touch) only works with that software, would be acceptable (as it is for many other hardware producers) but then refusing to support alternative Operating Systems and even actively trying to lock them out (encrypting the iTunes DB) makes me (and many others) really angry.
The highly polished look & feel of Mac OS, and the feeling that somehow it all fits together is actually what I envy the most about them. With KDE there is a major effort in consolidating the L&F of linux and Gnome is also doing a great Job, but the distributed nature of the OS makes it inherently unconsistent when it comes to L&F. Don't get me started on Winblows
Thanks for your comment, I really enjoy getting feedback. As I said the original article might be a little biased towards Linux and against Mac OS.
Jhangora on May 16th, 2009
Anonymous on September 4th, 2009
But as any Linux user will point out: Except for what you can find in common with Linux/BSD/OS X like CUPS or BASH, Apple made it their mission to lock down and bastardize what low-level and high-level open source software they could. This is why they chose BSD instead of Linux as the base for OS X because they could legally commit code theft.
I highly doubt the kernel in OS X has enough FOSS code remaining in it for me to think it'd be as secure as BSD or Linux. And Apple contributes scant little upstream for us to see what they have done.
Don't forget the hacking contests between Windows, OS X, and Linux. Both Windows and OS X caved easily. Ever article I've read on every contest I heard of said that the Linux box could not be compromised within the time limit, but that Windows and OS X both crumbled easily.
Why? I think it has to do with the dumbing-down of software, the valiant attempts to achieve the mythical "user friendly" state of zen that "technical" system distributions like Linux, BSD, or System V UNIX never bothered seeking. With every attempt to make everything a "snap" or "just works" for a system distribution you give over more and more to automation, and it is a sad, cold fact that the more automation in the system there is, the more stupid it can be even on a low level. How are Windows and OS X boxes compromised? Malicious data, either from malware or from a cracker, simply has to pass itself off as something that belongs in the automative process. It goes through and the system is compromised.
With most POSIX systems, the idea is that no data anywhere can proceed, be saved, be executed, change ANYTHING without the user knowing about it or telling it to do so when it comes to access control. A virus can't just come onto a POSIX box and execute itself. First off, nothing can just download itself on Linux without someone somewhere on the system knowing about it. A user would have to manually download the virus, too. Second off, except from repositories and a few binary packaged built for specific distributions, nothing, and I mean NOTHING can run on a POSIX system without being EXPLICITLY changed into an executive mode BY A USER. The virus would have to be manually turned "on" by the user. FINALLY, the only way something can be automatically executed is at boot time or when another app calls for it. Since this is a virus it's not going to likely find an app explicitly calling it… and the only way anything can run at boot time is if root permissions are used to configure the app as a daemon, which involves all of the followng: 1. An initscript for the daemon. Without this, the init program has no single clue how to treat the "daemon" at any runlevel. 2. Root permissions to even be set up in inits configuration to be run at the appropriate time. For a virus to do what it can do on OS X and Windows, a user would have to explicitly write a shell script for it… place it in the folder with the rest of the initscripts using root permissions… and, again using root, write to the init programs configuration the details of executing a script. Then, finally, RESTART THE COMPUTER SO THE VIRUS CAN START.
Now I don't know about you, but I think even social engineering in the extreme wouldn't be able to convince someone really stupid to go that far. A virus in Linux would have to rely solely on remote permissions escalation exploits and pray that its ACL remains intact upon transfer, even then, the virus can't do anything until executed, which is why running SSH/Telnet clients is dangerous when not needed, because that is all that is needed for a cracker to get it to work sans root permission. The problem with this is that Linux and BSD keep themselves up to date a lot more rapidly than OS X and Windows. Oftentimes by the time a virus for a specific exploit for Linux is completed and set out in the wild, the exploit it was counting on was patched up already, reducing the virus to a dud with an unspendable payload! Whereas OS X and especially Windows tend to go for months or even years before a certain exploit is fixed. They try to make it not look that way by simply not announcing their discovery of the exploit except for maybe a few days before the patch is released downstream. Linux and BSD can't get away with that because there ARE people out there who can see the code and would certainly know how long that exploit has been there, public developer mailing lists also keep them honest.
I ranted, and I am sorry. My point was that OS X is still pretty much a proprietary system and we have no way of knowing if its really secure beyond Apple's word, and they want us to use their product, so of COURSE they won't be honest about it.
Snyke on September 4th, 2009
Although I share many of your points I do not agree that it is really all that hard to create a virus in Linux. A Virus does not have to get root access to become very dangerous. In fact I bet I could write a simple virus that looks for hosts on the local network and tries to access with the trusted ssh-keys to spread itself, and then simply ship off all the users files to a mail account. Would be pretty dangerous don't you think?
What bothers me most of Mac isn't even the fact that it's not Opensource, but its apostle users going around, annoying the sh*t out of me, continuously trying to convert me, by pointing out the advantages of their OS.
And yes I completely agree that there is a delicate trade-off between "user friendliness" and verboseness of an operating system. Dumbing everything down is a good way to make it easily attackable.
Anonymous on September 4th, 2009
And I should have clarified with my statement about viruses on Linux. YES, it can be destructive without root permissions. It only needs the permissions of the user to wipe out the user's home directory. The problem is still that viruses still either need some mode of remote execution… or social engineering to trick the user into launching the virus to do its dirty work. Easier said and done with a system distribution family with a user base with a majority of technical know-it-alls who would easily prevent such a virus.
But the problem with that approach with a virus is that it'd only be useful for single-user destruction or data mining. Both suck, but they're not going to bring an infrastructure to its knees or zombify a Linux box as part of a botnet. Both would require a little more permissions than the average user, I believe.
Of course, if the user runs normally as root, that's another story, but I have a little belief about that: "If you run root like a normal user, you deserve every fuck-up that comes your way. Every security compromise and every disaster on the system caused by usage of root."
Never run as root if you can help it. Ever. I recommend using sudo. If it's not installed, INSTALL it. ANYTHING to keep you out of UID 0. Ubuntu has it right by simply denying a root login. No root means no brute force or dictionary attack will ever give a cracker access to the system directly in that way. They'd have to guess on what usernames are on the system and brute force/dictionary those.
And that's where having a smart user is best. A long non-word password (Symbolic alphanumerical.) is best, as even brute force attacks have to give up or be blocked eventually. It also helps to sit behind a router with no port forwarding configured. Then a firewall on the Linux box. Antivirus is nice, though a little bit overkill. Only 30 in-the-wild viruses for Linux means that one would probably be safe leaving Linux without a scanner. But if you wanna harden it up, go all out. Make the firewall extremely strict, install antivirus, make sure NO ONE who uses your computer has an easily brute forced/dictionaried password. Sit behind an ETHERNET router and wire up, turn ports off. Lots of stuff you can do to turn it into a fortress.
Most administrators who install ClamAV on a Linux box are actually server administrators protecting WINDOWS clients. Viruses on the Linux box are not on their mind.
Because, as we all know, Windows has over 50,000 in-the-wild viruses. The absolute highest in the history of operating systems. And to make things worse, Windows is commonly in the use of "computer security illiterates." Bad things happen.
And, bottom line, the user is the worst link in computer security. We click on banners that install malware, we get tricked into installing viruses, on and on. The best security for any sort of computer system is educating the users on what NOT to do.