1.4 Defenses
This is the shortest section in this
chapter, not because it isn't important, but because
the rest of the book concerns specific tools and techniques for
defending against the attacks we've discussed. The
whole point of threat analysis is to determine what level of defenses
are called for against the various things to which your systems seem
vulnerable.
There are three general means of mitigating risk. A risk, as
we've said, is a particular combination of assets,
vulnerabilities, and attackers. Defenses, therefore, can be
categorized as means of the following:
Reducing an asset's value to attackers
Mitigating specific vulnerabilities
Neutralizing or preventing attacks
1.4.1 Asset Devaluation
Reducing
an asset's value may seem like an unlikely goal, but
the key is to reduce that asset's value to
attackers, not to its rightful owners and users. The best example of
this is
encryption:
all of the attacks described in the examples earlier in this chapter
(against poor ABC Corp.'s besieged email system)
would be made largely irrelevant by proper use of email encryption
software.
If stolen email is effectively encrypted (i.e., using
well-implemented cryptographic software and strong keys and pass
phrases), it can't be read by thieves. If
it's digitally signed (also a function of email
encryption software), it can't be tampered with
either, regardless of whether it's encrypted. (More
precisely, it can't be tampered with without the
recipient's knowledge.) A "physical
world" example of asset devaluation is dye bombs: a
bank robber who opens a bag of money only to see himself and his loot
sprayed with permanent dye will have some difficulty spending that
money.
1.4.2 Vulnerability Mitigation
Another strategy to defend information
assets is to eliminate or mitigate vulnerabilities. Software patches
are a good example of this: every single sendmail bug over the years
has resulted in its developers' distributing a patch
that addresses that particular bug.
An even better example of mitigating software vulnerabilities is
"defensive coding": by running your
source code through filters that parse, for example, for improper
bounds checking, you can help insure that your software
isn't vulnerable to buffer-overflow attacks. This is
far more useful than releasing the code without such checking and
simply waiting for the bug reports to trickle in.
In short, vulnerability mitigation is simply another form of quality
assurance. By fixing things that are poorly designed or simply
broken, you improve security.
1.4.3 Attack Mitigation
In addition to asset devaluation and
vulnerability fixing, another approach is to focus on attacks and
attackers. For better or worse, this is the approach that tends to
get the most attention, in the form of
firewalls and
virus scanners. Firewalls and virus scanners exist to stymie
attackers. No firewall yet designed has any intelligence about
specific vulnerabilities of the hosts it protects or of the value of
data on those hosts, and nor does any virus scanner. Their sole
function is to minimize the number of attacks (in the case of
firewalls, network-based attacks; with virus-scanners,
hostile-code-based attacks) that succeed in reaching their intended
targets.
Access
control mechanisms, such as username/password schemes, authentication
tokens, and smart cards, also fall into this category, since their
purpose is to distinguish between trusted and untrusted users (i.e.,
potential attackers). Note, however, that
authentication
mechanisms can also be used to mitigate specific vulnerabilities
(e.g., using SecurID tokens to add a layer of authentication to a web
application with inadequate access controls).
|