Technical hardware and software failures can compromise security if they are not addressed properly. Hardware failures may be due to known or unknown flaws and can cause unreliable service. Software bugs are also common given the large amount of code written. Common software failures include buffer overflows, SQL injection, and cross-site scripting. Secure software development processes like the Software Assurance Common Body of Knowledge can help address these issues and lead to more secure applications.