25 Most Dangerous Software Coding Errors Hackers Exploit
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.
Mon, January 12, 2009
Computerworld — 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 Monday 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.


