Most of the vulnerabilities that hackers exploit to attack Web sites and corporate servers are usually the result of common and well-understood programming errors.
A list of 25 of the most serious such coding errors was released today by a group of 35 high-profile organizations, including Microsoft, Symantec, the U.S. Department of Homeland Security (DHS) and the National Security Agency's Information Assurance Division. The initiative was coordinated by the SANS Institute and The MITRE Corp., a federally funded research-and-development center.
Paul Kurtz, a partner with Good Harbor Consulting and one of the principal authors of the U.S. National Strategy to Secure Cyberspace document, called the list "an incredibly important development."
Speaking at a news conference this morning, Kurtz said it's unfortunate that the security community took this long to come up with a document recognizing common and long-standing coding errors.
The unusual announcement is designed to focus attention on insecure software-development practices and ways to avoid those practices, SANS officials said in a statement. The goal in releasing the list is to give software buyers, developers and training programs a tool they can use to identify programming errors known to pose serious security risks. Looking ahead, the list will be tweaked if necessary to accommodate any new or particularly dangerous coding errors that might surface he said.
The list is organized into three classes and covers a variety of familiar issues. Nine fall into the category of "insecure interaction between components." Another nine are seen as "risky resource management" errors, while the rest are described as "porous defense" issues.
Coding errors were included based on how frequently they occurred and the seriousness of the security risk they pose.
The top two software problems in the list are improper input validation and improper output encoding errors. Both of these errors are routinely made by "countless programmers" and are believed to be responsible for attacks that compromised hundreds of thousands of Web pages and databases in 2008, SANS said. Also making the list are errors such as a failure to preserve SQL query and Web page structures leading to SQL injection and cross-site scripting vulnerabilities as well as buffer-overflow mistakes and chatty error messages. The full list is available at www.sans.org/top25.
The fact that buffer-overflow errors made the list, even though programmers have been making that mistake for three decades, shows how hard it is to get "developers to build really good code," said Chris Wysopal, chief technology officer at application security vendor Veracode Inc. which helped compile the list. The increasing use of new Java and .Net tools for development are reducing some kinds of errors, but a majority of commercial software is still based on C, where programming practices haven't changed all that much, he said.
The Top 25 list can be an especially tool useful when companies are outsourcing work to a third-party or buying software from smaller vendors, he said.
The state of New York and other state governments are already planning to use it to help with software procurement. The idea is to get software developers to certify in writing that their code is free of the errors mentioned in the list, SANS said. It noted that the Common Criteria program used for federal procurement "may" also use the Top 25 list during the software buying process.
Another important audience for the list is the software programming community. The organizations behind the list hope that it will be used by application development teams to evaluate the security of code under development.
The developers of the list are also hoping that it will be useful at educational institutions in teaching programmers how to avoid errors. One of the organizations that participated in building the list was the University of California, Davis, which has established a secure coding clinic to check student-written software for the presence of the programming errors.