Version 3.0 Updated June 27, 2011
Click on the CWE ID in any of the listings and you will be directed to the relevant spot in the MITRE CWE site where you will find the following:
Each entry at the Top 25 Software Errors site also includes fairly extensive prevention and remediation steps that developers can take to mitigate or eliminate the weakness.
These weaknesses are related to insecure ways in which data is sent and received between separate components, modules, programs, processes, threads, or systems.
|CWE-89||Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')|
|CWE-78||Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')|
|CWE-79||Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')|
|CWE-434||Unrestricted Upload of File with Dangerous Type|
|CWE-352||Cross-Site Request Forgery (CSRF)|
|CWE-601||URL Redirection to Untrusted Site ('Open Redirect')|
The weaknesses in this category are related to ways in which software does not properly manage the creation, usage, transfer, or destruction of important system resources.
|CWE-120||Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')|
|CWE-22||Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')|
|CWE-494||Download of Code Without Integrity Check|
|CWE-829||Inclusion of Functionality from Untrusted Control Sphere|
|CWE-676||Use of Potentially Dangerous Function|
|CWE-131||Incorrect Calculation of Buffer Size|
|CWE-134||Uncontrolled Format String|
|CWE-190||Integer Overflow or Wraparound|
The weaknesses in this category are related to defensive techniques that are often misused, abused, or just plain ignored.
|CWE-306||Missing Authentication for Critical Function|
|CWE-798||Use of Hard-coded Credentials|
|CWE-311||Missing Encryption of Sensitive Data|
|CWE-807||Reliance on Untrusted Inputs in a Security Decision|
|CWE-250||Execution with Unnecessary Privileges|
|CWE-732||Incorrect Permission Assignment for Critical Resource|
|CWE-327||Use of a Broken or Risky Cryptographic Algorithm|
|CWE-307||Improper Restriction of Excessive Authentication Attempts|
|CWE-759||Use of a One-Way Hash without a Salt|
MITRE maintains the CWE (Common Weakness Enumeration) web site, with the support of the US Department of Homeland Security's National Cyber Security Division, presenting detailed descriptions of the top 25 Software errors along with authoritative guidance for mitigating and avoiding them. That site also contains data on more than 700 additional Software errors, design errors and architecture errors that can lead to exploitable vulnerabilities. CWE Web Site
SANS maintains a series of assessments of secure coding skills in three languages along with certification exams that allow programmers to determine gaps in their knowledge of secure coding and allows buyers to ensure outsourced programmers have sufficient programming skills. Organizations with more than 500 programmers can assess the secure coding skills of up to 100 programmers at no cost.
Email firstname.lastname@example.org for details.
SAFECode - The Software Assurance Forum for Excellence in Code (members include EMC, Juniper, Microsoft, Nokia, SAP and Symantec) has produced two excellent publications outlining industry best practices for software assurance and providing practical advice for implementing proven methods for secure software development.
Fundamental Practices for Secure Software Development 2nd Edition
Overview of Software Integrity Controls
Framework for Software Supply Chain Integrity
Fundamental Practices for Secure Software Development
Software Assurance: An Overview of Current Industry Best Practices
As part of DHS risk mitigation efforts to enable greater resilience of cyber assets, the Software Assurance Program seeks to reduce software vulnerabilities, minimize exploitation, and address ways to routinely acquire, develop and deploy reliable and trustworthy software products with predictable execution, and to improve diagnostic capabilities to analyze systems for exploitable weaknesses.
Nearly a dozen software companies offer automated tools that test programs for these errors.
New York State has produced draft procurement standards to allow companies to buy software with security baked in.
If you wish to join the working group to help improve the procurement guidelines you can go to the New York State Cyber Security and Critical Infrastructure Coordination web site.
Draft New York State procurement language will be posted at SANS Application Security Contract.
We asked several of the participants why they thought this effort was important enough to merit a significant amount of their time and expertise. Here are a few of their answers. More are at the end of the announcement.
"Just wanted to commend the depth of the CWE/SANS Top 25. The code examples are particularly excellent. I have asked all my developers to read one of these each day for the next 25 days. I'm taking my own advice as well, and even though I'm still reading some of the "easy" ones (like SQL injection), I still find that I am learning new things about old topics."
-- Mark E. Haase, OpenFISMA Project Manager, Endeavor Systems, Inc.
"Your document (2009 CWE/SANS Top 25 Most Dangerous Software Errors) is very useful. I would like to publish it on our intranet, for illustrating threats and vulnerabilities about coding."
-- colonel Jean-Michel HOUBRE, from the french MOD.
"We included the top25 reference in a request for bid last year. Project began in December and expect the project to be complete in October 2010. We are hopeful to have a much more secure and better application due to the reference and utilization of the SANS/MITRE Top 25."
-- Richard Lemons, WV Department of Health and Human Resources
"In the collaborated environment and ever increasing business requirements to integrate solutions, insecure applications are an easy target. The business today understands how much damage can be cause to business, revenue and customer confidence due to these issues. To ensure that our deliveries meet / surpass customer expectations on security, the CWE/SANS Top 25 Most Dangerous Software Errors is extensively leveraged in our software security assurance process."
-- Ketan Vyas, Head Application Security Initiative, Tata Consultancy Services
"I've read "2009 CWE/SANS Top 25 Most Dangerous Software Errors" article and found it very useful. I would like to translate it into Russian for our software testing community. Of course, link to original article will be stored."
-- Alexander Kozyrev
"The Top 25 provides much needed guidance for software developers focusing on eliminating software security defects in their products. If you're involved with software development at your organization and are looking to improve your product security posture, you need to read this."
-- Robert Auger, Co Founder of The Web Application Security Consortium
"The CWE/SANS Top 25 list provides a great starting point for developers who want to write more secure code. The majority of the flaw types of the most severe vulnerabilities that Red Hat fixed in 2009 are discussed in this document."
-- Mark J. Cox, Director, Security Response, Red Hat.
"The 2010 CWE/SANS Top 25 Software Errors provides valuable guidance to organizations engaged in the development or deployment of software. This list helps organizations focus on the most dangerous threats so that they can get the most out of their vulnerability reduction effort. The list can also be used as a framework to define short term and longer term programs for the elimination or mitigation of security vulnerabilities. Furthermore, it provides easy to comprehend description of the classes of vulnerabilities and high-level recommendations for mitigating or avoiding them altogether. This list is definitely a must-read for anyone who wishes to develop reasonably secure code."
-- Bruce Lowenthal, Director Security Alert, Oracle Corp.
"It's great to see the CWE/SANS Top 25 list continue to be maintained and mature. Relentlessly spreading the word about the most common security defects in programming is a vital need. The state of security in our software would without a doubt be much improved if everyone who touches software development reads and thoroughly understands this. Kudos."
-- Kenneth R. van Wyk, KRvW Associates, LLC