Saturday, May 11, 2013

The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities 1st edition, Mark Dowd



This book was like a blow to the head for me. I'm not a security person, I'm not coveting ever more arcane vulnerabilities. Rather, I'm the poor guy at the other end of things: I'm a programmer. It's my job to avoid all the known and imaginable vulnerabilities while at the same time providing some useful functionality to my customers.

You bet I wouldn't like some self-styled security "researcher" tear apart my poor little programs and expose all their failings. What's troubling me, after reading this book, is that it looks very much like I hardly stand a chance. Security would be hard with the best of tools, unfortunately, at least when it comes to systems programming, the tools -- C, low-level APIs -- are dubious at best and introduce lots and lots of problems of their own. These tools hail from a happier time long ago when we were still trusting trust. I was overcome by a mixture of horror and chagrin when I saw proof in this book that not even the people writing sensitive security software (such as OpenSSH) wield these tools artfully enough to avoid vulnerabilities.

And this is where I come to the only beef I have with an otherwise comprehensive book. It's like a field guide to dangerous beasts that teaches you to recognize sabre-toothed tigers, but doesn't tell you how to get rid of them. Contrary to what the subtitle promises about preventing software vulnerabilities, there is just too little about it. This is a considerable shortcoming, in my view, as a lot of the demonstrated vulnerabilities don't have trivial remedies even after they are exposed.

Wrapping up, I feel left alone in the twilight and I think I saw a tiger over there.

This is a very comprehensive, and well-organized security assessment book for Software engineers. Yes, it has everything - all done well. If you are into security assessment and testing and live by it every day, you are still bound to learn a lot, to re-evaluate the things you know, and to genuinely improve your results. If you are a software engineer, it *will* help you build superior applications. If you are just an security enthusiast, you will genuinely enjoy the time spent with this book, and you will find this brick handy more often than previously imagined.

The authors of this book are some of the most respected in vulnerability research and theory, and have found many bugs that were years ahead of their time. As expected, they deliver on their prior reputation in this great and incredibly expansive book of knowledge and insight.

If you're tired of reading high-level theoretical books about "building security in" written by people who have no clue what a bug is or how to prevent them, this book is the ideal alternative.

For a hobbyist, it will guide you through practical methodologies about how bug hunting is done and teach you to think like a great vulnerability researcher.

For a developer, it will open your eyes to security oversights in most of the pieces of code you have ever written. Read hard, these bug classes affect the products you are shipping today.

For the security professional, this likely goes not only broader but deeper on lots of issues than you have ever looked, and far beyond any book I've seen. It can be used as page to page read, or a great reference. I personally use it all the time, and have definitely learnt from it. Great job guys!

Looking at the online website for this book, it becomes very apparent very quickly that this is one of those books that might just become a reference on security engineer's shelf at work. After ~6k and 8 years worth of books, I rarely buy anymore. Until I saw this. You may want to consider. HAL

Additional note, OCT/07. I haven't found anything in this book that isn't pretty much dead on the mark. You would be well served to at least consider this as an addition to lore and lexicon in the trade, if you travel this path. Most security eval processes still have waterfall at the core, and rely on a vaap for several areas that practitioners lack due to level of education wrt the Certifier/Accreditor. This leads to recommendation regurgitation that devolves to patch management, not effective analysis of design/implementation deficiencies susceptible to exploit by active Threat. So if you do get this, read between the lines of what they are saying and you'll find a whole new way of looking at things. Good stuff, well done. Bravo.

The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities by Mark Dowd, John McDonald, and Justin Schuh is a comprehensive treatment of how to study and assess the security of your software and operating system platforms. If you are at all responsible for the security of software in your organization (and that includes all the developers, too), then this is a book that should be resident on your shelf.

Contents:

Part 1 - Introduction to Software Security Assessment: Software Vulnerability Fundamentals; Design Review; Operational Review; Application Review Process

Part 2 - Software Vulnerabilities: Memory Corruption; C Language Issues; Program Building Blocks; Strings and Metacharacters; Unix 1 - Privileges and Files; Unix 2 - Processes; Windows 1 - Objects and the File System; Windows 2 - Interprocess Communications; Synchronization and State

Part 3 - Software Vulnerabilities in Practice: Network Protocols; Firewalls; Network Application Protocols; Web Applications; Web Technologies

Bibliography; Index

Rather than just dive right in to detailed hacks, the authors take a measured, structured approach to assessing the security of software. The first part of the book covers the general process of reviewing for security, including design security, operational security, and application security. They also present the general areas of potential weaknesses that you need to look for in each development stage. Instead of just saying "look for bugs", they present different approaches to reviews that each have their strengths and weaknesses. You come away from Part 1 with a practical methodology that you can use immediately to consistently review all parts of your development process. Parts 2 and 3 are a bit more like other security books you've possibly seen, but much more emphasis is placed on understanding the "why" behind the problem rather than just the "how" of fixing it. Armed with this deeper understanding of why certain techniques are lacking, it's easier to change fundamental coding habits rather than just fixing problems as they're discovered in testing (or unfortunately in production). Many of the examples are in C/C++, so if that's your language of choice you'll get a lot more out of the book than others. Still, a competent developer should be able to follow the concepts regardless of their language of choice. And it really doesn't matter if you're just Unix or just Windows. Both sides are covered...

This is definitely not a small book (close to 1200 pages), but it's not padded or fluffed out to get there. It delivers real value for your money...

This should have been the third book in line to be reviewed, but as I leafed through it, once, twice, and a third time I started to realize this is one of those rare security books that has a chance to revolutionize the industry like Applied Cryptography, Snort 2.0, or Hacking Exposed. The longer you wait to read this book, the further you will fall behind. Nuff said?

Every week that goes by we see an increasing understanding in the community about how important secure software is and that it takes the appropriate development process to create secure software. This book is hitting the marketplace at the perfect time, I hope the authors and publishing team have a runaway success, you deserve it. I also hope people will be encouraged by this book, secure software development is certainly possible, this book clearly shows that. It takes management support in terms of resources, training and good process, but it can certainly be done.

At 1128 content pages, much of this material will be things that you have picked up in other places, such as other books or courses you have taken. Much of it will be things you once knew and forgot. But this is the most complete book on software security out there covering Windows, Unix, Network Protocols, Web and other Applications.

What I particularly love is the how approachable the majority of the information is. Please do not get me wrong, if you have never written a line of code you are going to be lost during the code examples, the only signpost you get is the occasional bolded line, but you will still be able to clearly follow the discussion before the code example and right after the code example.

Section 1 of the book is called an Introduction to Software Security Assessment. I was able to read that 164 pages all at one time ( though I was up to 2 AM doing it). This is foundational material and if you are responsible for software development as a manager, I recommend you read at least this one section.

The next section, Software Vulnerabilities, starts with a buffer overflow chapter. This is a test of any good security book. If they point to an ancient paper like Smashing the Stack and mumble an incoherent sentence or two, you know they probably don't know what they are talking about. This book builds the case, uses both code fragments and clear diagrams with plenty of explanations.

The final section is titled, Software Vulnerabilities in Practice, I am not convinced this is an accurate section name. Network or Web should probably be in the name, chapters include Network Protocols, Firewalls ( probably the weakest chapter in the book), Network Application Protocols, Web Applications and Web Technologies.

Dowd et al have produced a vast excursion into how to analyse software for possible security flaws. This book was published around the same time as another related text, "The Art of Software Security Testing" by Wysopal et al. The latter is much shorter and offers a quick overview. Dowd's book is far more indepth. It gives more examples of many ways that code can inadvertently expose a computer to attacks.

There are numerous general guidelines. Like fixing simple bugs first. Partly so that you can demonstrate some tangible progress, especially if you have been called in as a consultant on someone else's project. Another tip is that automated source analysis tools are often weak.

A lot of the text centres on code written in C. Many bugs are ever-present. A big cause is the weak string handling routines, that often do not test for buffer overflows. Pages and pages go on at considerable length about this. It is not reassuring to read that C++ has also inherited these weaknesses from C. The narrative explains that part of the attraction of more recent languages like Java or C# has been their more robust string classes. Along with automatic memory allocation and deallocation.

A commendable aspect of the book is its evenhanded treatment of bugs associated with Microsoft's operating systems and those in the various unixes and linux. You get to appreciate that no modern operating system is free of these.

Despite the book's length, it cannot cover all the known attacks, let alone anticipate future ones. The authors encourage you to take the ideas given in the book as background, and possibly as inspiration in deducing future attacks.

This book is valuable enough to sell itself, and I don't think it's an exaggeration to state that it will quickly become required reading for anyone serious about application security assessment. With that said, here are some of the reviews I considered posting in lieu of the one you're currently reading:

1. You may already know John McDonald, and as such you're likely already aware of how unrewarding any given conversation with him is, but I encourage you to buy this book anyway. It's actually quite good, more interesting than "Pride and Prejudice" but slightly less so than "The Glass Menagerie" - overall a good purchase if you like puppets and security assessment.

2. If you buy this book you likely have a really unfulfilling social calendar and few, if any, friends. But the fact that you're looking at it means almost the same thing, so you might as well buy it anyway.

3. You might notice that many of the reviews posted here are exceedingly informative and written by very well-respected security industry leaders. This is not one of those reviews. But I've found this book extremely valuable, and I'm an order of magnitude hotter than those other guys.

4. If E Entertainment Television did a True Hollywood Story about application security assessment it would be significantly more intriguing than this book, but not nearly as useful. Also I would probably watch that all the way through - something I'm just not sure I can do in this case.

5. Reading this book makes you feel like you're wearing new socks. Having read it makes you feel like a used up industry wh*re.

Product Details :
Paperback: 1200 pages
Publisher: Addison-Wesley Professional; 1 edition (November 30, 2006)
Language: English
ISBN-10: 0321444426
ISBN-13: 978-0321444424
Product Dimensions: 7 x 2.1 x 9.2 inches

More Details about The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities 1st edition

or

Download The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities 1st edition PDF Ebook

No comments:

Post a Comment