The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities Paperback – Nov 20 2006
|New from||Used from|
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
From the Back Cover
“There are a number of secure programming books on the market, but none that go as deep as this one. The depth and detail exceeds all books that I know about by an order of magnitude.
—Halvar Flake,CEO and head of research, SABRE Security GmbH
The Definitive Insider's Guide to Auditing Software Security
This is one of the most detailed, sophisticated, and useful guides to software security auditing ever written.The authors are leading security consultants and researchers who have personally uncovered vulnerabilities in applications ranging from sendmail to Microsoft Exchange, Check Point VPN to Internet Explorer. Drawing on their extraordinary experience, they introduce a start-to-finish methodology for “ripping apart applications to reveal even the most subtle and well-hidden security flaws.
The Art of Software Security Assessmentcovers the full spectrum of software vulnerabilities in both UNIX/Linux and Windows environments. It demonstrates how to audit security in applications of all sizes and functions, including network and Web software. Moreover, it teaches using extensive examples of real codedrawn from past flaws in many of the industry's highest-profile applications.
• Code auditing: theory, practice, proven methodologies, and secrets of the trade
• Bridging the gap between secure software design and post-implementation review
• Performing architectural assessment: design review, threat modeling, and operational review
• Identifying vulnerabilities related to memory management, data types, and malformed data
• UNIX/Linux assessment: privileges, files, and processes
• Windows-specific issues, including objects and the filesystem
• Auditing interprocess communication, synchronization, and state
• Evaluating network software: IP stacks, firewalls, and common application protocols
• Auditing Web applications and technologies
This book is an unprecedented resource for everyone who must deliver secure software or assure the safety of existing software: consultants, security specialists, developers, QA staff, testers, and administrators alike.
ABOUT THE AUTHORS xv
I Introduction to Software Security Assessment
1 SOFTWARE VULNERABILITY FUNDAMENTALS 3
2 DESIGN REVIEW 25
3 OPERATIONAL REVIEW 67
4 APPLICATION REVIEW PROCESS 91
II Software Vulnerabilities
5 MEMORY CORRUPTION 167
6 C LANGUAGE ISSUES 203
7 PROGRAM BUILDING BLOCKS 297
8 STRINGS ANDMETACHARACTERS 387
9 UNIX I: PRIVILEGES AND FILES 459
10 UNIX II: PROCESSES 559
11 WINDOWS I: OBJECTS AND THE FILE SYSTEM 625
12 WINDOWS II: INTERPROCESS COMMUNICATION 685
13 SYNCHRONIZATION AND STATE 755
III Software Vulnerabilities in Practice
14 NETWORK PROTOCOLS 829
15 FIREWALLS 891
16 NETWORK APPLICATION PROTOCOLS 921
17 WEB APPLICATIONS 1007
18 WEB TECHNOLOGIES 1083
About the Author
Mark Dowd is a principal security architect at McAfee, Inc. and an established expert in the field of application security. His professional experience includes several years as a senior researcher at Internet Security Systems (ISS) X-Force, and the discovery of a number of high-profile vulnerabilities in ubiquitous Internet software. He is responsible for identifying and helping to address critical flaws in Sendmail, Microsoft Exchange Server, OpenSSH, Internet Explorer, Mozilla (Firefox), Checkpoint VPN, and Microsoft’s SSL implementation. In addition to his research work, Mark presents at industry conferences, including Black Hat and RUXCON.
John McDonald is a senior consultant with Neohapsis, where he specializes in advanced application security assessment across a broad range of technologies and platforms. He has an established reputation in software security, including work in security architecture and vulnerability research for NAI (now McAfee), Data Protect GmbH, and Citibank. As a vulnerability researcher, John has identified and helped resolve numerous critical vulnerabilities, including issues in Solaris, BSD, Checkpoint FireWall-1, OpenSSL, and BIND.
Justin Schuh is a senior consultant with Neohapsis, where he leads the Application Security Practice. As a senior consultant and practice lead, he performs software security assessments across a range of systems, from embedded device firmware to distributed enterprise web applications. Prior to his employment with Neohapsis, Justin spent nearly a decade in computer security activities at the Department of Defense (DoD) and related agencies. His government service includes a role as a lead researcher with the National Security Agency (NSA) penetration testing team–the Red Team.See all Product Description
Most Helpful Customer Reviews on Amazon.com (beta)
This book is not about binary analysis; assembly language is used only to demonstrate tricky C code.
Unlike many books with multiple authors, this is an extremely well put together book that flows naturally from chapter to chapter. The chapters on C auditing are amazing. The chapters on web assessment, while not the most in-depth chapters in the book, still contain a lot of information that is covered nowhere else (servlet race conditions, for example).
In fact, almost everything in this book is, if not new, covered more expertly than anywhere I've seen. For anyone doing software security assessment, this book is required reading. All 1200 pages of it.
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.
I can not recommend this book enough if you are serious about security.
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.
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
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...
Look for similar items by category
- Books > Computers & Technology > Certification Central > Exams > Security+
- Books > Computers & Technology > Computer Science > Software Engineering > Information Systems
- Books > Computers & Technology > Networking & Cloud Computing > Network Security
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development
- Books > Computers & Technology > Software
- Books > Computers & Technology > Web Development > Security & Encryption > Encryption
- Books > Qualifying Textbooks - Fall 2007 > Computers & Internet
- Books > Textbooks > Computer Science & Information Systems > Networking
- Books > Textbooks > Computer Science & Information Systems > Software Design & Engineering