Overview
“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 Assessment covers 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 code drawn from past flaws in many of the industry's highest-profile applications.
Coverage includes
• 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.
Contents
ABOUT THE AUTHORS xv
PREFACE xvii
ACKNOWLEDGMENTS xxi
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
BIBLIOGRAPHY 1125
INDEX 1129
Editorials
From Barnes & Noble
The Barnes & Noble ReviewPlenty of books tell you how to write more secure code. But what if you need to deal with a huge existing code base, and you can't start all over again? For that, you need The Art of Software Security Assessment. It'll show you exactly how to find and assess issues in your existing applications and gain reasonable confidence that your software is safe -- if, in fact, it is.
The authors begin by introducing code auditing, helping you integrate it into your development lifecycle, and presenting some high-level methods you can use to start reviewing your applications, whatever their role or size. Next, they turn to the specific categories of high-risk security flaws most likely to afflict applications these days: memory-related problems, C language issues, malformed data, synchronization, state, and beyond.
Much of this coverage is platform independent, but not all. For example, the authors present two chapters on problems arising from Unix privileges, files, and processes; and two more on Windows application flaws, including IPC and filesystem problems. There's a good deal of illustrative sample code: much of it in C, but some in Intel assembly language where that's needed to make a point.
Finally, in Part III, the authors identify the most common security flaws in network, firewall, and web applications, and show you how to reveal them in your applications.
This book addresses security flaws that arise throughout the software development lifecycle: at design (including requirements and architecture); at implementation (where the code's doing what it's supposed to, but there's a security problem in the way it's doing it); and in operations, including deployment and configuration. The authors' integrated, start-to-finish approach makes their book both unique and immensely valuable. Bill Camarda, from the January 2007 Read Only