Software Engineering
S
oftware engineers and their customers continu-
ously face a complex and frustrating decision:
given a fixed budget, which combination of
vulnerability mitigation actions produces opti-
mal system security? In a world without budgetary or
temporal constraints, engineers could invest in whatever
tools or training they deemed necessary to safeguard ap-
plications and networks. Or they could spend arbitrary
amounts of time and money patching existing code and
take painstaking precaution in writing new software to
ensure its security. Of course, the economic reality is that
software engineers are pushed to get their product to
market as fast as possible, and security is often a distant
priority in the face of budgetary constraints. However,
fixing any remaining security vulnerabilities postproduc-
tion can be both costly and wasteful.
In this article, we describe a novel methodology for
quantitatively optimizing the blend of architectural and
policy recommendations that engineers can apply to
their products to maximize security under a fixed bud-
get. The results of our optimization are sometimes sur-
prising and even counterintuitive: bigger budgets don’t
always produce greater security, and the optimal combi-
nation of corrective actions changes nonlinearly with in-
creasing expenditures. These findings suggest that some
form of formal decision support could augment tradi-
tional methods.
A nontrivial problem
The problem we address here is nontrivial for several rea-
sons. The first challenge is the ability to obtain plausible,
reliable, and quantitative estimates of the cost of fixing se-
curity vulnerabilities and the corresponding benefits from
averting losses due to a breach. A large
body of academic literature extracts such
subjective judgments, particularly for risky outcomes, so
we used this knowledge base to inform our study.
1–3
The
innovation here isn’t how to elicit parameter values, but
rather what methods move us from those judgments to an
action plan.
The second challenge in prioritizing such correc-
tive actions is their many-to-many relationships with
the security problems they solve. If there were a one-
to-one relationship between action and vulnerability,
we would implement the mitigation action that solved
the most threatening problem first and take the re-
maining actions in a decreasing cost-effectiveness order
until either time or resource limitations prohibited fur-
ther steps.
However, such a simple ordering isn’t possible with a
many-to-many relationship. In fact, the decision of
which blend of mitigation steps to pursue is combinator-
ial, with the number of combinations growing exponen-
tially with the number of potential actions. This means
that considering every possible combination is prohibi-
tively time-consuming. Fortunately, we can couch the
problem as a mathematical optimization problem (specif-
ically, an integer program, or IP
4
) and solve at least to a
very good optimality approximation with a range of soft-
ware packages, including spreadsheet programs such as
Microsoft Excel.
5,6
The details of this formulation appear
in a separate technical report.
7
At Carnegie Mellon University’s Software Engineer-
ing Institute (SEI), we’ve been able to experiment with
this new methodology in a case study of the Security
Quality Requirements Engineering (Square) methodol-
JONATHAN
CAULKINS
Carnegie
Mellon
University
ERIC D. HOUGH
Space and
Naval
Warfare
Systems
Center San
Diego
NANCY R.
MEAD
Software
Engineering
Institute
HASSAN
OSMAN
Ernst & Young
PUBLISHED BY THE IEEE COMPUTER SOCIETY ■ 1540-7993/07/$25.00 © 2007 IEEE ■ IEEE SECURITY & PRIVACY 57
As a software engineer or client, how much of your budget
should you spend on software security mitigation for the
applications and networks on which you depend? The
authors introduce a novel way to optimize a combination of
security countermeasures under fixed resources.
Optimizing Investments in
Security Countermeasures
A Practical Tool for Fixed Budgets