1.1 The Vulnerability Cycle
Let's
consider for a moment an all-too-common
sequence of events in today's security world. (Figure 1-2 illustrates it graphically.)
Someone uncovers and discloses a new vulnerability in a piece of
software.
Bad guys quickly analyze the information and use the vulnerability to
launch attacks against systems or networks.
Simultaneously, good guys (we'll include security
folks who work for the vendor) start looking for a fix. They rally
software development engineers in their respective organizations to
analyze the vulnerability, develop a fix, test the fix in a
controlled environment, and release the fix to the community of users
who rely on the software.
If the vulnerability is serious, or the attacks are dramatic, the
various media make sure that the public knows that a new battle is
underway. The software developers at the organization that produced
the product (and the vulnerability!) are deluged with phone calls
from the media, wanting to find out what is going on.
Lots of folks get very worried. Pundits, cranks, finger-pointers, and
copycats do their thing.
If a knee-jerk countermeasure is available and might do some good,
we'll see a lot of it. (For example, CIOs may direct
that all email coming into an enterprise be shut off.) More often
than not, this type of countermeasure results in numerous and costly
business interruptions at companies that rely on the software for
conducting their business operations.
When a patch is ready, technically oriented folks who pay close
attention to such matters obtain, test, and apply the patch. Everyday
system administrators and ordinary business folks may get the word
and follow through as well. Perhaps, for a lucky few, the patch will
be installed as part of an automated update feature. But inevitably,
many affected systems and networks will never be patched during the
lifetime of the vulnerability—or will only receive the patch as
part of a major version upgrade.
Security technicians, their attention focused, examine related
utilities and code fragments (as well as the new patch itself!) for
similar vulnerabilities. At this point, the cycle can repeat.
Weeks or months go by, and a piece of malicious software is released
on the Internet. This software automates the exploitation of the
vulnerability on unpatched systems, spreading without control across
a large number of sites. Although many sites have patched their
systems, many have not, and the resulting panic once again causes a
great deal of business interruption across the Internet.
What's so bad about this scenario?
Let's consider some of the effects.
Many companies (some big, some small) just can't
keep up with today's cascade of patches. To get a
sense of the scope of the problem, let's assume that
the Internet and its critical services run on 100 key applications.
We estimate (conservatively, in our opinions) that there are 100 or
so vulnerabilities per application system. If that guess is in the
ballpark, that's about 10,000 security holes for
hackers to exploit, just in key applications!
Here's a rough calculation relating to operating
systems. Noted "secure coder"
Wietse Venema
estimates
that there is roughly one security bug per 1000 lines in his source
code. Given that desktop operating systems such as Linux or Windows
represent some 100 million lines of code, this translates into
hundreds of thousands of potential security bugs. According to CERT
statistics, collectively we will probably discover roughly 5000 bugs
in 2003. At this rate it could take 20 years per operating system to
find all the security bugs. Fixing them will take a little longer;
our experience is that, using today's common
practices, 10% to 15% of all security patches themselves introduce
security vulnerabilities! (It is only fair to point out here that
these numbers are anything but scientific, but we believe
they're not far from correct and the underlying
point remains the same.)
Applying patches over and over—as though system administrators
had nothing else to do—is never going to give us a secure
Internet-based infrastructure. As society's reliance
on Internet services grows, it's only a matter of
time before catastrophe strikes. The software so many of us depend on
every day is frighteningly open to attack.
|