Society?s increased dependency on networked software systems has been matched by an increase in the number of attacks aimed at these systems. These attacks--directed at organizations and individuals--have resulted in loss and compromise of sensitive data, system damage, lost productivity, and financial loss [1].
While many of the attacks on the Internet today are merely a nuisance, there is growing evidence that criminals, terrorists, and other malicious actors view vulnerabilities in software systems as a tool to reach their goals.
Current security engineering methods are demonstrably inadequate, as software vulnerabilities are currently being reported to the CERT/CC at a rate of over 4,000 per year [2]. These vulnerabilities are caused by software designs and implementations that do not adequately protect systems and by development practices that do not focus sufficiently on eliminating implementation defects that result in security flaws. An opportunity exists for systematic improvement that can lead to secure software architectures, designs, and implementations.