Computer experts from more than 30 organizations worldwide have released a consensus list of the 25 most dangerous programming errors that lead to security breaches.
The list, which was spearheaded by the National Security Agency, is the first time a broad cross-section of the world's computer scientists have reached formal agreement on the most common programming pitfalls.
Few programming classes teach students how to avoid the mistakes, and organizations that develop software for sale generally don't screen their products for them. Instead, security literature and programs generally focuses on the vulnerabilities that result from such mistakes rather than on the mistakes themselves. By contrast, the consensus list concentrates on the programming errors that cause such vulnerabilities and offers concrete measures developers can take to avoid them.
"Now, with the Top 25, we can spend less time working with police after the house has been robbed and instead focus on getting locks on the doors before it happens," said Paul Kurtz, executive director of a group called the Software Assurance Forum for Excellence in Code.
The list could one day shift the responsibility of developing secure code to software companies by allowing buyers to get signed assurances that the products are free of the 25 errors, at least according to a press release announcing the list. (We find it hard to imagine Microsoft, Symantec, Oracle and any of the other software companies represented in the group agreeing to go along with such a plan, but there you go.)
New York state is already using the list to adjust contract language with software vendors, according to the press release.
More realistically, the list might help improve the quality of programming classes and training programs by creating consensus about what the most common mistakes are and what developers can do to prevent them.
The list is broken into three categories labeled insecure interaction between components (nine errors), risky resource management (nine also) and porous defenses (seven). Mistakes include improper input validation, external control of external state data and improper access control. Just two of the mistakes led to more than 1.5m website breaches last year, according to the SANS Institute. ®