As software becomes more complex and software security moves closer to the forefront of organizational plans, a means of defining what constitutes a secure system and assuring achievement of this standard is required. Attacks aimed at networked software systems are directed at governments, corporations, educational institutions, and individuals; and they can result in financial loss, the loss and compromise of sensitive data, system damage, and lost productivity— all enabled by simple software vulnerabilities. One way to combat this growing problem is through secure code. But what makes code secure?
The CERT Secure Coding Initiative, spearheaded by Robert Seacord, a senior member of the SEI technical staff, is building a comprehensive approach to secure software development in the C, C++, and Java programming languages. The cornerstone of this approach is the development of secure coding standards for each language. Seacord asserts that “security must be understood for organizations to embrace it—secure coding standards promote adoption by providing a precise and measurable definition.” CERT coordinates development of secure coding standards by security researchers, language experts, and software developers using a wiki-based community process. The CERT C Secure Coding Standard, for example, was published in October 2008 as an Addison-Wesley book. Once completed, these standards will be submitted to open-standards bodies for consideration and possible publication.
Attacks aimed at networked software systems are directed at governments, corporations, educational institutions, and individuals; and they can result in financial loss, the loss and compromise of sensitive data, system damage, and lost productivity— all enabled by simple software vulnerabilities.
Developers and software designers can apply these coding standards to their code to create secure systems, or analyze existing code against these standards. In September 2005, the team published Secure Coding in C and C++, and since then they have created and licensed courses, published books and papers, collaborated with government and private organizations, and presented at conferences to promote standards that will help improve the quality of software released today and in the future.
One example of collaborative work is The CERT Sun Microsystems Secure Coding Standard for Java. Currently being developed with Sun Microsystems, this standard provides guidance for secure programming in the Java Platform, Standard Edition 6 environment. Programmers who adopt the Java standard can avoid vulnerabilities in their Java-based applications. This coding standard is applicable to the wide range of products coded in Java such as PCs, game players, mobile phones, home appliances, and automotive electronics.
However, secure coding standards alone are inadequate to ensure secure software development because they may not be consistently and correctly applied. To solve this problem, CERT is developing an application certification process that can be used to verify the conformance of a software product with secure coding standards. Because this process depends on the application of source code analysis tools, CERT is working with industry partners such as LDRA and Fortify Software, and research partners such as JPCERT and Lawrence Livermore National Laboratory to enhance existing source code analysis tools to verify compliance with CERT guidelines.