Home > Articles > Security > Software Security

Software [In]security: Top 11 Reasons Why Top 10 (or Top 25) Lists Don’t Work

Gary McGraw

Toggle Open Article Table of ContentsArticle Contents

Close Table of ContentsArticle Contents

  1. The 2009 Software Security Bug Parade
Close Table of Contents
  • PrintPrint
  • Share ThisShare This
  • DiscussDiscuss
Close WindowGary McGraw

Gary McGraw

Learn more…

Software [In]security: Cargo Cult Computer Security
Jan 28, 2010
Software [In]security: You Really Need a Software Security Group
Dec 21, 2009
Software [In]security: BSIMM Europe
Nov 10, 2009
Software [In]security: Startup Lessons
Oct 22, 2009
Software [In]security: BSIMM Begin
Sep 24, 2009
Software [In]security: Attack Categories and History Prediction
Aug 25, 2009
Software [In]security: Moving U.S. Cybersecurity Beyond Cyberplatitudes
Jul 16, 2009
Software [In]security: Measuring Software Security
Jun 18, 2009
Software [In]security: Twitter Security
May 15, 2009
Software [In]security: Software Security Comes of Age
Apr 16, 2009
Software [In]security: The Building Security In Maturity Model (BSIMM)
Mar 16, 2009
Software [In]security: Nine Things Everybody Does: Software Security Activities from the BSIMM
Feb 9, 2009
Software [In]security: Top 11 Reasons Why Top 10 (or Top 25) Lists Don’t Work
Jan 13, 2009
Software [In]security: Software Security Top 10 Surprises
Dec 15, 2008
Software [In]security: Web Applications and Software Security
Nov 14, 2008
Software [In]security: A Software Security Framework: Working Towards a Realistic Maturity Model
Oct 15, 2008
Software [In]security: Getting Past the Bug Parade
Sep 17, 2008
Software [In]security: Software Security Demand Rising
Aug 11, 2008
Software [In]security: Application Assessment as a Factory
Jul 17, 2008
Software [In]security: DMCA Rent-a-cops Accept Fake IDs
Jun 12, 2008
Why Is Security a Software Issue?
Jun 2, 2008
Software [In]security: Securing Web 3.0
May 15, 2008
Software [In]security: Paying for Secure Software
Apr 7, 2008
Game Hacking 101
Nov 21, 2007
The Role of Architectural Risk Analysis in Software Security
Mar 3, 2006
Reverse Engineering and Program Understanding
Dec 23, 2004
Security Expert Gary McGraw on Black Hats, the U.S. Government, and Good vs. Evil
Jun 11, 2004
Introduction to Software Security
Nov 2, 2001
Building Secure Software: Race Conditions
Nov 2, 2001

Sorry, this author hasn't posted any blogs.

Gary McGraw explains why there’s more to software security than watching the bug parade march by.

The 2009 Software Security Bug Parade

The 2009 CWE/SANS Top 25 Most Dangerous Programming Errors was recently released with much fanfare. Lists of "the most significant" software security bugs are certainly not a new phenomenon, with the OWASP top ten (first published in 2004) garnering a lion's share of the attention. Certainly the idea of knowing your enemy (in this case, software vulnerabilities) is important in software security. However, as I have pointed out in previous iterations of this column, there's more to software security than watching the bug parade march by.

Today, I present the top eleven reasons why generic top N bug parade lists may be less helpful than you think. But first, a history lesson…

Bug Parades of Christmas Past1

The idea of collecting and organizing information about computer security vulnerabilities has a long history. One of the first (unclassified) studies of computer security and privacy was the RISOS (Research into Secure Operating Systems) project from 19762. The problem of creating lists and taxonomies has been of great interest since then.

Well-known research projects include the "Protection Analysis" work of Bisbey and Hollingworth (1978) and Carl Landwehr's Naval Research Lab taxonomy from 1993. Plenty of taxonomy work has been done on the attack side of the equation too, including Cheswick and Bellovin's attack classes (2003) and my work with Hoglund on attack patterns (2004).

More recent strain of work on vulnerabilities includes Aslam's classification scheme (1995), PLOVER (Preliminary List of Vulnerability Examples for Researchers) from 2005, and the Common Weakness Enumeration (CWE) project (ongoing).

A number of practitioners have developed top ten lists and other related collections based on experience in the field. Two of the most popular and useful lists are the 19 Sins3 and the OWASP top ten. To this assembly of lists, piles, and collections we can add the list of the day — the CWE/SANS top 25.

Top Eleven Reasons Why Top Ten Lists Don't Work

Before I start, there are some important good things about top ten lists that are worthy of mention. The notion of knowing your enemy is essential in security (as it is in warfare), and top ten lists can help get software people started thinking about attacks, attackers, and the vulnerabilities they go after. These days almost any attention paid to the problem is good attention, and the fact that the technical media is paying attention to software security at all is a good thing. Top ten lists help in that respect.

Without further ado, however, here are eleven reasons why top ten lists don't work:

  1. Executives don't care about technical bugs. Security is about risk management. Risk management involves getting your head out of the technical weeds and understanding which applications really matter to your organization from a business perspective. Geeky pontification about top ten lists does very little (if anything) to manage business risk. Putting "controls" around "top generic technical problems" may not be the best course of action.
  2. Too much focus on bugs. Software security practitioners have known for years that software defects lead to serious security problems. What we all seem to forget sometimes is that defects come in two basic flavors (divided roughly 50/50 in terms of prevalence): bugs in the code and flaws in the design. Top ten lists tend to focus on bugs, to the detriment of any attention for design-level problems.
  3. Vulnerability lists help auditors more than developers. Teaching someone how to do the right thing is much more cost effective and efficient than attempting to teach someone how not to do an infinite set of wrong things. Software people react more positively to being shown how to do things right than they do to a bug parade. On the other hand, big lists of bugs certainly make auditing code easier. But how efficient is that?
  4. One person's top bug is another person's yawner. (This point is closely related to number 1.) Software defects do have serious and important business impact, but impact is not an objective variable that carries across all organizations. In my experience, a list of "top N defects" is very powerful in any given organization, but actual lists differ according to the dev group, coding habits, tech stacks, standards, and a host of other variables. You'll be very lucky if your real list of top bugs aligns with any generic list.
  5. Using bug parade lists for training leads to awareness but does not educate. (This point is closely related to number 3.) Developers and architects are much better off understanding and learning how to do things right (defensive programming) than they are when presented with a laundry list of defects, even when those defects are shown in living color. In the early days, Biology was about taxonomies and zoos. In modern times, Biology is about cell mechanisms, DNA, and evolution. Likewise, modern software security needs to be more about the mechanics of building systems that work than it is about collections of no-nos.
  6. Bug lists change with the prevailing technology winds. Though top ten lists can certainly be updated (witness the OWASP top ten), rapid changes in technology make lists of particular problems obsolete very quickly. In this sense, education about building things properly (and about how things like stacks really work) again trumps lists of specifics.
  7. Top ten lists mix levels. Taxonomies are always superior to lists, especially when they are simple. Thinking about seven top level concerns (as presented in the Seven Pernicious Kingdoms) is much less confusing from an intellectual perspective than equating "Buffer Overflows" and "Failing to Protect Network Traffic" as the 19 Sins work does. Lists of bugs have lower fidelity when it comes to activities required to build secure software.
  8. Automated tools can find bugs — let them. Teaching all developers the 700+ bad things in the Common Weakness Enumeration (or the even larger set of permutations allowed by languages like C++) is a futile exercise. We can start by using static analysis tools to remember all of the potential bugs and alert us to their presence. Better even than that would be adopting programming languages that don't suck. (For a real world story about language issues, see Microsoft's Missed Opportunity.)
  9. Metrics built on top ten lists are misleading. The notion of coming up with metrics for software security is of critical importance. But as all business school graduates know (and not enough geeks, sadly), bad metrics can do more harm than no metrics. Using the OWASP top 10 or the CWE/SANS top 25 to drive your software security initiative will be a major mistake. See points 1 and 4 for more.
  10. When it comes to testing, security requirements are more important than vulnerability lists. Security testing should be driven from requirements and abuse cases rather than from hoping to discover particular technical bugs in code. Proper use of threat modeling and architectural risk analysis drives effective traceable tests.
  11. Ten is not enough. A myopic focus on ten bugs makes little sense. Adding 15 more to the pile may not do much to help. As the CWE/SANS top 25 website says, "The CWE site also contains data on more than 700 additional programming errors, design errors, and architecture errors that can lead to exploitable vulnerabilities." Enough said.

Footnotes

1. Instead of providing a complete list of taxonomy references here, I direct interested readers to Chapter 12 of Software Security: Building Security In (Read in Safari Books Online). Also note that the annotated bibliography (Chapter 13) is available in full on the Web.

2. Robert Abbot, Janet Chin, James Donnelley, William Konigsford, Shigeru Tokubo, and Douglas Webb. "Security Analysis and Enhancement of Computer Operating Systems," NBSIR 76-1041, National Bureau of Standards, ICST, Washington, DC, 1976.

3. Published in 19 Deadly Sins of Software Security by Howard, LeBlanc, and Viega (2005).

  • Share ThisShare This
  • Your Account

Discussions

Wow Very Important Software security Tips
Posted Jan 23, 2009 06:45 AM by magstudios123
0 Replies
It's not that lists don't work...
Posted Jan 20, 2009 09:27 AM by KendallShaw
0 Replies

Make a New Comment

You must log in in order to post a comment.

Related Resources

Jennifer  BortelWin FREE iPhone Developer Books and Videos- Introducing @InformIT Giveaways
By Jennifer Bortel on February 5, 2010 No Comments

Apples’s recent iPad announcement made our hearts flutter so we couldn’t resist making an announcement of our own!

Today marks the first ever @InformIT Giveaway!

We’ll regularly post a video like this one profiling spectacular prizes we’re giving away—from books and videos to T-shirts and other exciting stuff. Check out the video below to see the giveaways for today, and then scroll down for more prize details and instructions on how to win them!

Dustin Sullivan"Every OSX developer should have this book on their desk."
By Dustin Sullivan on February 1, 2010 No Comments

That was the sentence Mike Riley ended his recent Dr Dobb's CodeTalk review of Cocoa Programming Developer's Handbook with.

David ChisnallCocoa Tip of the Day, 1/29/10
By David Chisnall on January 29, 2010 No Comments

Don't ignore old versions of OS X.

See All Related Blogs

Informit Network