Viruses don't depend on software flaws. Even if MS's code
were flawless - viruses could still exist and create a desire
for anti-virus measures.
Really. So why is it that when I run Linux, I don't worry about
viruses? Let's compare something as simple as an e-mail. The default
Windows tool _automatically executes code_ in the email. Behind the
scenes. Without so much as asking. Or warning. Or telling you how
mind-numbingly stupid it is to do this.
Well, fine, okay... as long as that code is well and truly sandboxed off
from the rest of the system, that's okay. It is, right? Umm... I'm not
aware of any assurances of that.
So, right there, we've got one boneheaded design. Here's another. I'll
send you a file, it shows up as "file.jpg". The mail says "look at the
pretty picture". If you've been on the web any length of time, you
probably realize a .jpg is an image file - should be safe, right?
Wrong. First, it's not file.jpg, it's file.jpg.exe - but MS, in their
infinite stupidity, chose to hide file extensions. Well, hell, that's
okay, not like it matters. See, as long as they don't compound their
stupidity by doing anything so unbelievably risky as executing code
simply because its filename says to execute it, that wouldn't matter.
Oh, whoops... they do. It's a .EXE file. Which means it executes. All
the user needs do is say "open attachment" - or, with appropriate
updates, save then double-click it.
Know what happens when someone sends me an executable attachment in
Linux? I save it, I double click it and... hmm; there it is, loaded up
in my text editor. Why? Because the default action for unknown file
types is to run the editor... and since the file, despite being a .out
or a .bin or a .sh or whatever, *is not an executable* - the execute bit
has not been set locally.
So, you send me file.jpg.sh on my Linux box, first I can *see* that it's
a .sh file, not a .jpg, and second, if I do try to run it, it doesn't
run anyway.
Simple, isn't it? Except that MS's ideas on file security are about
those of an old whore's ideas on sex - promiscuous doesn't begin to
describe it.
They _could_ have mimicked the *nix mechanism of requiring an execute
bit - a bit which needs to be set locally and manually, at least for
things other than full install packages, locally compiled binaries, etc.
The example was there before Windows was, even before DOS, so no excuses
there. The "innovation" of rendering HTML mails _at all_, let alone
with effectively unsecured scripting thrown in, is about as stupid a
desgin decision as one could make if *paid* to make soemthing unsafe.
But, hey, the worst that's going to happen is that the user will maybe
muck up his own files, right? Nope. First, MS makes absolutely no
attempt at install time or runtime to warn the user that "running as
root" is both dangerous and stupid. IIRC, XP even goes so far as to let
you run as root without a password - I can't begin to tell you how much
confidence that gives me. But, having failed to do this - warn you - it
thus leaves the entire system open to infection, attack, etc, rather
than just your files. Sure, escalation-of-privilege attacks can still
occur, but at least it'd give _some_ challenge to the intruder.
MS doesn't stop there, though. Nope, despite all that, your system
isn't nearly vulnerable enough. What else could they do? Oh, yes...
how about RPC and Windows File Sharing enabled by default if you have
network support? Never mind if you're actually on a LAN where it might
make sense to have such things, no, we'll open 'em up to the whole
frigging world the second you use a NIC-based internet connection. It
may even happen with dialup... don't recall.
Well, that's okay, I mean, they do bundle a firewall, right? One that's
enabled by default, blocking all inbound connections until explicitly
told not to? Nope. Until XP, they didn't include firewalling at all,
and with XP, you pretty much have to already know it's there and then go
hunting for it if you want to find it - and there's not a heck of a lot
of help during the configuration of it.
So... where's that leave us? Let's recap:
1) No firewalling
2) Unnecessary services open to the world
3) Users generally run as "root"
3b) ... often without even a password
4) Mails, HTML files, etc, merrily run scripts in the background, with
little expectation of them doing so safely
5) File extensions are hidden by default, but...
6) ... it is the file extension that defines whether something is
executable, leading to...
7) If you click it, it will run. Even if it claims to be a .jpg.
Now a lot of this could be remedied fairly simply. Don't run as root,
for starters. Toss OE and IE, etc, on the scrap heap. Replace them
with a slightly more reliable toolset. Except you can't. Oh, sure, you
can run Mozilla instead of IE... but you can't get rid of IE; the whole
flippin' system depends on it. So any issues IE has - and let's face
it, IE is a sieve - end up also being issues for everything else that
relies on it. Yes, certain updates allow you to "remove" IE... except
they don't; the core evilness is still there, all that's gone is the web
browser interface component. Big whoop.
MS relies heavily on "integration" - making various things work with
each other. That's fine and good and all, and it's a good idea... but
if you can't replace components even when they're found to be not merely
bad but actively dangerous, this integration ceases to be good and
starts to be a really, really, really bad thing. And anyone who says IE
isn't actively dangerous hasn't been paying attention.
But let's top this off with some other MS follies. NT4. Nice little
system, right? Then why did MS admit that NT4 was effectively
impossible to fix in relation to the various security issues they were
having with it? Why can't they fix shatter? Why is it that a flippin'
web page can cause a file to be installed and executed locally, with all
the privileges of a local file - i.e. the ability to do anything *you*
can do? Oh, right; because MS can't code their way out of a wet paper
bag.
Now note... not *one single item* of this entire list applies to Linux.
Or Unix. Or the various BSDs. Or VMS. Or... well, you get the point.
The virus, attacking such systems, has *none* of these points of entry,
with the sole exception - if enabled - of javascript support for web
pages - and even that is well protected from doing anything particularly
damaging.
Why don't these problems exist in other OSen? Because those OSen were
designed and written by people who care about security and are actually
competent to develop such code. MS has repeatedly yammmered on about
their "Most trusted Windows ever" and their "Security initiative" and
whatever else... but they keep right on delivering the same tired old
crap.
So no, if Microsoft wrote "flawless code", these problems simply would
not exist, or at least, not in the form they do now. Linux, for
example, has had a few viruses. Despite the relative ease of finding
Linux machines to attack, though, they never get very far. Why?
Several reasons. First, the entire infrastructure is better designed.
Second, while many things are "integrated" in the sense of being able to
use various components to get things done, those components can be
changed. Third, because it almost invariably requires a manual step to
turn something from a simple data file into an executable, a step which
doesn't change just because the file has a special name.
Oh, and fourth, because on those systems, serious security risks are
almost invariably fixed within hours, or at most days, of becoming
known. MS has been known to let *critical* vulnerabilities exist for 90
days and more after being identified. Not a good record for a company
that supposedly cares about security.
Oh, and a final note.
One thing that really separates Windows from Linux is updating. Let's
be honest, here... while MS's approach to security is about like trying
to wipe up the ocean with a sponge, they are not the only company
producing vulnerable software for Windows. Hell, given the half-baked
framework MS provides, it's virtually guaranteed that a non-trivial
application will have at least one potential way to hijack it for
malicious purposes.
So... when I get my list of updates, all graciously provided by
Microsoft in their lovely little "windows update" tool, I *do* get a
listing of all the security updates of all those other products, too,
right?
Wrong. Hell, I don't even get Microsoft's *own* product updates listed.
To get updates for Office, for example, I have to use a different tool.
And for updates to, oh, Corel or Mozilla or whomever else, I have to use
their tool, or go to their website, download the update and install it
myself.
Linux? I get a single unified approach that updates virtually _all_ my
software. For example, in Debian, from a root shell, I'd do the
following: apt-get update && apt-get upgrade and voila; instant updates
to all the installed apps. In Mandrake, there's a nifty little GUI tool
that lets me choose between bug fixes, security updates or general
updates, so I can, if I want, with a couple of mouse clicks,
automatically download, install and apply all the security fixes for 200
or more applications.
Could Microsoft do something like this? Sure they could. If they knew
Office had a hole, they could include it in the update list. If Corel
told MS "Draw 9 has a hole... here's the URL to the patch file", MS
could bundle that along with the rest. And so on. They go out of their
way to include this wonderful little tool to warn you about critical
security updates... then promptly ignore the vast majority of such
updates, *even from their own applications*.
Nope, any way you slice it, the entire mess that is today's internet,
with all the viruses, worms, spam zombies, trojans and the like, is
*directly* and *totally* a result of Microsoft's either not caring about
security, or being incompetent to actually provide security. Or both.
So what's their latest move? Did they decide to fix the OS? Did they
decide to develop a framework in which security was actually a core
component? No... they chose instead to pass the buck to the hardware
vendors. With the new "Trusted Computing" approach, it comes down to
the _hardware_ being relied on to protect things, because MS can't write
software well enough to do the job. Other OSen don't need this sort of
hand-holding; why does Windows? Right, it's because of Microsoft's
stellar record on producing flawless code with a critical eye to
security measures.
So yes... that entire 2 billion a year industry, plus all the damages
done - estimates range from a low of 20 billion to well over 200 billion
in lost data, downed servers, network outages, etc, etc, etc, - all lies
squarely on Microsoft's shoulders. That users are willing to _pay_ for
such a disaster boggles the mind.
PS. You'll note I'm posting from a Windows-based news client. I'll
point out two notes about that. First, I didn't pay for Windows;
Microsoft sent me my Windows free of charge, in return for various
things I recommended to them. Second, my Windows boxes live behind a
Linux box that, among other things, scans mails, web pages and the rest
for potentially malicious content. This drastically reduces the risks
and, since it also acts as a firewall, the Windows box is that much more
secure. Ain't it funny, though... this flagship product of a multi-
billion dollar empire being protected by a free product tossed together
by a pack of volunteer hacker types. Yet we're supposed to believe it
ain't Microsoft's fault. Bah.