19 deadly sins of software security : programming flaws and how to fix them / Michael Howard, David LeBlanc, John Viega.
By: Howard, Michael
.
Contributor(s): LeBlanc, David
| Viega, John
.
Material type:
BookPublisher: New York : McGraw-Hill/Osborne, 2005Description: xxi, 281 p. : ill. ; 24 cm.ISBN: 0072260858.Other title: Nineteen deadly sins of software security.Subject(s): Computer security| Item type | Current library | Call number | Copy number | Status | Barcode | |
|---|---|---|---|---|---|---|
| General lending | MTU Bishopstown Library Lending | 005.8 (Browse shelf(Opens below)) | 1 | Available | 00114117 |
Enhanced descriptions from Syndetics:
This essential book for all software developers--regardless of platform, language, or type of application--outlines the 19 deadly sins of software security and shows how to fix each one.
Includes bibliographical references and index.
Buffer overruns -- Format string problems -- Integer overflows -- SQL injection -- Command injection -- Failing to handle errors -- Cross-site scripting -- Failing to protect network traffic -- Use of magic URL's and hidden form fields -- Improper use of SSL and TLS -- Use of weak password-based systems -- Failing to store and protect data securely -- Information leakage -- Improper file access -- Trusting network name resolution -- Race conditions -- Unauthenticated key exchange -- Cryptographically strong random numbers -- Poor usability.
Table of contents provided by Syndetics
- Foreword (p. xv)
- Acknowledgments (p. xvii)
- Introduction (p. xix)
- 1 Buffer Overruns (p. 1)
- Overview of the Sin (p. 2)
- Affected Languages (p. 2)
- The Sin Explained (p. 3)
- Sinful C/C++ (p. 6)
- Related Sins (p. 8)
- Spotting the Sin Pattern (p. 9)
- Spotting the Sin During Code Review (p. 9)
- Testing Techniques to Find the Sin (p. 9)
- Example Sins (p. 10)
- CVE-1999-0042 (p. 10)
- CVE-2000-0389-CVE-2000-0392 (p. 11)
- CVE-2002-0842, CVE-2003-0095, CAN-2003-0096 (p. 11)
- CAN-2003-0352 (p. 12)
- Redemption Steps (p. 12)
- Replace Dangerous String Handling Functions (p. 12)
- Audit Allocations (p. 13)
- Check Loops and Array Accesses (p. 13)
- Replace C String Buffers with C++ Strings (p. 13)
- Replace Static Arrays with STL Containers (p. 13)
- Use Analysis Tools (p. 13)
- Extra Defensive Measures (p. 14)
- Stack Protection (p. 14)
- Non-executable Stack and Heap (p. 14)
- Other Resources (p. 15)
- Summary (p. 16)
- 2 Format String Problems (p. 17)
- Overview of the Sin (p. 18)
- Affected Languages (p. 18)
- The Sin Explained (p. 18)
- Sinful C/C++ (p. 21)
- Related Sins (p. 21)
- Spotting the Sin Pattern (p. 21)
- Spotting the Sin During Code Review (p. 22)
- Testing Techniques to Find the Sin (p. 22)
- Example Sins (p. 22)
- CVE-2000-0573 (p. 23)
- CVE-2000-0844 (p. 23)
- Redemption Steps (p. 23)
- C/C++ Redemption (p. 23)
- Extra Defensive Measures (p. 24)
- Other Resources (p. 24)
- Summary (p. 24)
- 3 Integer Overflows (p. 25)
- Overview of the Sin (p. 26)
- Affected Languages (p. 26)
- The Sin Explained (p. 26)
- Sinful C and C++ (p. 26)
- Sinful C# (p. 31)
- Sinful Visual Basic and Visual Basic .NET (p. 33)
- Sinful Java (p. 34)
- Sinful Perl (p. 34)
- Spotting the Sin Pattern (p. 35)
- Spotting the Sin During Code Review (p. 36)
- C/C++ (p. 36)
- C# (p. 38)
- Java (p. 38)
- Visual Basic and Visual Basic .NET (p. 38)
- Perl (p. 39)
- Testing Techniques to Find the Sin (p. 39)
- Example Sins (p. 39)
- Flaw in Windows Script Engine Could Allow Code Execution (p. 39)
- Integer Overflow in the SOAPParameter Object Constructor (p. 39)
- Heap Overrun in HTR Chunked Encoding Could Enable Web Server Compromise (p. 40)
- Redemption Steps (p. 40)
- Extra Defensive Measures (p. 42)
- Other Resources (p. 42)
- Summary (p. 43)
- 4 SQL Injection (p. 45)
- Overview of the Sin (p. 46)
- Affected Languages (p. 46)
- The Sin Explained (p. 46)
- Sinful C# (p. 47)
- Sinful PHP (p. 48)
- Sinful Perl/CGI (p. 48)
- Sinful Java and JDBC (p. 49)
- Sinful SQL (p. 50)
- Related Sins (p. 51)
- Spotting the Sin Pattern (p. 52)
- Spotting the Sin During Code Review (p. 52)
- Testing Techniques to Find the Sin (p. 53)
- Example Sins (p. 54)
- CAN-2004-0348 (p. 54)
- CAN-2002-0554 (p. 55)
- Redemption Steps (p. 55)
- Validate All Input (p. 55)
- Never Use String Concatenation to Build SQL Statements (p. 55)
- PHP 5.0 and MySQL 4.1 or Later Redemption (p. 56)
- Perl/CGI Redemption (p. 57)
- Java Using JDBC Redemption (p. 58)
- ColdFusion Redemption (p. 59)
- SQL Redemption (p. 59)
- Extra Defensive Measures (p. 59)
- Other Resources (p. 59)
- Summary (p. 60)
- 5 Command Injection (p. 63)
- Overview of the Sin (p. 64)
- Affected Languages (p. 64)
- The Sin Explained (p. 64)
- Related Sins (p. 66)
- Spotting the Sin Pattern (p. 66)
- Spotting the Sin During Code Review (p. 66)
- Testing Techniques to Find the Sin (p. 68)
- Example Sins (p. 68)
- CAN-2001-1187 (p. 68)
- CAN-2002-0652 (p. 69)
- Redemption Steps (p. 69)
- Data Validation (p. 69)
- When a Check Fails (p. 71)
- Extra Defensive Measures (p. 72)
- Other Resources (p. 72)
- Summary (p. 72)
- 6 Failing to Handle Errors (p. 73)
- Overview of the Sin (p. 74)
- Affected Languages (p. 74)
- The Sin Explained (p. 74)
- Yielding Too Much Information (p. 74)
- Ignoring Errors (p. 74)
- Misinterpreting Errors (p. 75)
- Using Useless Error Values (p. 75)
- Handling the Wrong Exceptions (p. 75)
- Handling All Exceptions (p. 76)
- Sinful C/C++ (p. 76)
- Sinful C/C++ on Windows (p. 77)
- Sinful C++ (p. 78)
- Sinful C#, VB.NET, and Java (p. 78)
- Related Sins (p. 79)
- Spotting the Sin Pattern (p. 79)
- Spotting the Sin During Code Review (p. 79)
- Testing Techniques to Find the Sin (p. 80)
- Example Sin (p. 80)
- CAN-2004-0077 Linux Kernel do_mremap (p. 80)
- Redemption Steps (p. 80)
- C/C++ Redemption (p. 80)
- C#, VB.NET, and Java Redemption (p. 81)
- Other Resources (p. 82)
- Summary (p. 82)
- 7 Cross-Site Scripting (p. 83)
- Overview of the Sin (p. 84)
- Affected Languages (p. 84)
- The Sin Explained (p. 84)
- Sinful C/C++ ISAPI Application or Filter (p. 85)
- Sinful ASP (p. 85)
- Sinful ASP.NET Forms (p. 86)
- Sinful JSP (p. 86)
- Sinful PHP (p. 86)
- Sinful CGI Using Perl (p. 86)
- Sinful mod_perl (p. 87)
- Spotting the Sin Pattern (p. 87)
- Spotting the Sin During Code Review (p. 87)
- Testing Techniques to Find the Sin (p. 88)
- Example Sins (p. 89)
- IBM Lotus Domino Cross-Site Scripting and HTML Injection Vulnerabilities (p. 89)
- Oracle HTTP Server "isqlplus" Input Validation Flaws Let Remote Users Conduct Cross-Site Scripting Attacks (p. 90)
- CVE-2002-0840 (p. 90)
- Redemption Steps (p. 90)
- ISAPI C/C++ Redemption (p. 90)
- ASP Redemption (p. 91)
- ASP.NET Forms Redemption (p. 91)
- JSP Redemption (p. 92)
- PHP Redemption (p. 94)
- CGI Redemption (p. 95)
- mod_perl Redemption (p. 95)
- A Note on HTML Encode (p. 96)
- Extra Defensive Measures (p. 96)
- Other Resources (p. 97)
- Summary (p. 98)
- 8 Failing to Protect Network Traffic (p. 99)
- Overview of the Sin (p. 100)
- Affected Languages (p. 100)
- The Sin Explained (p. 100)
- Related Sins (p. 102)
- Spotting the Sin Pattern (p. 103)
- Spotting the Sin During Code Review (p. 103)
- Testing Techniques to Find the Sin (p. 106)
- Example Sins (p. 106)
- TCP/IP (p. 107)
- E-mail Protocols (p. 107)
- E*Trade (p. 107)
- Redemption Steps (p. 108)
- Low-Level Recommendations (p. 108)
- Extra Defensive Measures (p. 111)
- Other Resources (p. 111)
- Summary (p. 111)
- 9 Use of Magic URLs and Hidden Form Fields (p. 113)
- Overview of the Sin (p. 114)
- Affected Languages (p. 114)
- The Sin Explained (p. 114)
- Magic URLs (p. 114)
- Hidden Form Fields (p. 115)
- Related Sins (p. 115)
- Spotting the Sin Pattern (p. 115)
- Spotting the Sin During Code Review (p. 116)
- Testing Techniques to Find the Sin (p. 117)
- Example Sins (p. 118)
- CAN-2000-1001 (p. 118)
- MaxWebPortal Hidden Form Field Modification (p. 118)
- Redemption Steps (p. 118)
- Attacker Views the Data (p. 119)
- Attacker Replays the Data (p. 119)
- Attacker Predicts the Data (p. 121)
- Attacker Changes the Data (p. 122)
- Extra Defensive Measures (p. 123)
- Other Resources (p. 123)
- Summary (p. 123)
- 10 Improper Use of SSL and TLS (p. 125)
- Overview of the Sin (p. 126)
- Affected Languages (p. 126)
- The Sin Explained (p. 126)
- Related Sins (p. 129)
- Spotting the Sin Pattern (p. 130)
- Spotting the Sin During Code Review (p. 130)
- Testing Techniques to Find the Sin (p. 132)
- Example Sins (p. 132)
- E-mail Clients (p. 132)
- Safari Web Browser (p. 133)
- The Stunnel SSL Proxy (p. 133)
- Redemption Steps (p. 134)
- Choosing a Protocol Version (p. 134)
- Choosing a Cipher Suite (p. 135)
- Ensuring Certificate Validity (p. 136)
- Validating the Hostname (p. 137)
- Checking Certificate Revocation (p. 138)
- Extra Defensive Measures (p. 140)
- Other Resources (p. 140)
- Summary (p. 140)
- 11 Use of Weak Password-Based Systems (p. 143)
- Overview of the Sin (p. 144)
- Affected Languages (p. 144)
- The Sin Explained (p. 144)
- Related Sins (p. 146)
- Spotting the Sin Pattern (p. 146)
- Spotting the Sin During Code Review (p. 146)
- Password Content Policy (p. 147)
- Password Changes and Resets (p. 147)
- Password Protocols (p. 148)
- Password Handling and Storage (p. 148)
- Testing Techniques to Find the Sin (p. 149)
- Example Sins (p. 149)
- CVE-2005-1505 (p. 150)
- CVE-2005-0432 (p. 150)
- The TENEX Bug (p. 150)
- The Paris Hilton Hijacking (p. 151)
- Redemption Steps (p. 151)
- Multifactor Authentication (p. 152)
- Storing and Checking Passwords (p. 152)
- Guidelines for Choosing Protocols (p. 156)
- Guidelines for Password Resets (p. 156)
- Guidelines for Password Choice (p. 157)
- Other Guidelines (p. 158)
- Extra Defensive Measures (p. 158)
- Other Resources (p. 159)
- Summary (p. 159)
- 12 Failing to Store and Protect Data Securely (p. 161)
- Overview of the Sin (p. 162)
- Affected Languages (p. 162)
- The Sin Explained (p. 162)
- Weak Access Controls to "Protect" Secret Data (p. 162)
- Sinful Access Controls (p. 164)
- Embedding Secret Data in Code (p. 166)
- Related Sins (p. 166)
- Spotting the Sin Pattern (p. 166)
- Spotting the Sin During Code Review (p. 167)
- Testing Techniques to Find the Sin (p. 168)
- Example Sins (p. 170)
- CVE-2000-0100 (p. 171)
- CAN-2002-1590 (p. 171)
- CVE-1999-0886 (p. 171)
- CAN-2004-0311 (p. 171)
- CAN-2004-0391 (p. 171)
- Redemption Steps (p. 172)
- Use the Operating System's Security Technologies (p. 172)
- C/C++ Windows 2000 and Later Redemption (p. 173)
- ASP.NET 1.1 and Later Redemption (p. 175)
- C#.NET Framework 2.0 Redemption (p. 175)
- C/C++ Mac OS X v10.2 and Later Redemption (p. 175)
- Redemption with No Operating System Help (or Keeping Secrets Out of Harm's Way) (p. 176)
- A Note on Java and the Java KeyStore (p. 178)
- Extra Defensive Measures (p. 180)
- Other Resources (p. 180)
- Summary (p. 181)
- 13 Information Leakage (p. 183)
- Overview of the Sin (p. 184)
- Affected Languages (p. 184)
- The Sin Explained (p. 184)
- Side Channels (p. 185)
- TMI: Too Much Information! (p. 186)
- A Model for Information Flow Security (p. 188)
- Sinful C# (and Any Other Language) (p. 190)
- Related Sins (p. 190)
- Spotting the Sin Pattern (p. 190)
- Spotting the Sin During Code Review (p. 191)
- Testing Techniques to Find the Sin (p. 192)
- The Stolen Laptop Scenario (p. 192)
- Example Sins (p. 192)
- Dan Bernstein's AES Timing Attack (p. 192)
- CAN-2005-1411 (p. 193)
- CAN-2005-1133 (p. 193)
- Redemption Steps (p. 194)
- C# (and Other Languages) Redemption (p. 194)
- Network Locality Redemption (p. 195)
- Extra Defensive Measures (p. 195)
- Other Resources (p. 195)
- Summary (p. 196)
- 14 Improper File Access (p. 197)
- Overview of the Sin (p. 198)
- Affected Languages (p. 198)
- The Sin Explained (p. 198)
- Sinful C/C++ on Windows (p. 199)
- Sinful C/C++ (p. 199)
- Sinful Perl (p. 200)
- Sinful Python (p. 200)
- Related Sins (p. 200)
- Spotting the Sin Pattern (p. 201)
- Spotting the Sin During Code Review (p. 201)
- Testing Techniques to Find the Sin (p. 202)
- Example Sins (p. 202)
- CAN-2005-0004 (p. 202)
- CAN-2005-0799 (p. 202)
- CAN-2004-0452 and CAN-2004-0448 (p. 203)
- CVE-2004-0115 Microsoft Virtual PC for the Macintosh (p. 203)
- Redemption Steps (p. 203)
- Perl Redemption (p. 204)
- C/C++ Redemption on *nix (p. 204)
- C/C++ Redemption on Windows (p. 204)
- Getting the Location of the User's Temporary Directory (p. 205)
- .NET Code Redemption (p. 205)
- Extra Defensive Measures (p. 205)
- Other Resources (p. 206)
- Summary (p. 206)
- 15 Trusting Network Name Resolution (p. 207)
- Overview of the Sin (p. 208)
- Affected Languages (p. 208)
- The Sin Explained (p. 208)
- Sinful Applications (p. 210)
- Related Sins (p. 211)
- Spotting the Sin Pattern (p. 211)
- Spotting the Sin During Code Review (p. 212)
- Testing Techniques to Find the Sin (p. 212)
- Example Sins (p. 212)
- CVE-2002-0676 (p. 213)
- CVE-1999-0024 (p. 213)
- Redemption Steps (p. 213)
- Other Resources (p. 214)
- Summary (p. 215)
- 16 Race Conditions (p. 217)
- Overview of the Sin (p. 218)
- Affected Languages (p. 218)
- The Sin Explained (p. 218)
- Sinful Code (p. 220)
- Related Sins (p. 220)
- Spotting the Sin Pattern (p. 221)
- Spotting the Sin During Code Review (p. 221)
- Testing Techniques to Find the Sin (p. 222)
- Example Sins (p. 222)
- CVE-2001-1349 (p. 222)
- CAN-2003-1073 (p. 223)
- CVE-2000-0849 (p. 223)
- Redemption Steps (p. 223)
- Extra Defensive Measures (p. 225)
- Other Resources (p. 225)
- Summary (p. 226)
- 17 Unauthenticated Key Exchange (p. 227)
- Overview of the Sin (p. 228)
- Affected Languages (p. 228)
- The Sin Explained (p. 228)
- Related Sins (p. 229)
- Spotting the Sin Pattern (p. 230)
- Spotting the Sin During Code Review (p. 230)
- Testing Techniques to Find the Sin (p. 231)
- Example Sins (p. 231)
- Novell Netware MITM Attack (p. 231)
- CAN-2004-0155 (p. 231)
- Redemption Steps (p. 232)
- Extra Defensive Measures (p. 232)
- Other Resources (p. 233)
- Summary (p. 233)
- 18 Cryptographically Strong Random Numbers (p. 235)
- Overview of the Sin (p. 236)
- Affected Languages (p. 236)
- The Sin Explained (p. 236)
- Sinful NonCryptographic Generators (p. 237)
- Sinful Cryptographic Generators (p. 237)
- Sinful True Random Number Generators (p. 238)
- Related Sins (p. 239)
- Spotting the Sin Pattern (p. 239)
- Spotting the Sin During Code Review (p. 239)
- When Random Numbers Should Have Been Used (p. 239)
- Finding Places that Use PRNGs (p. 240)
- Determining Whether a CRNG Is Seeded Properly (p. 241)
- Testing Techniques to Find the Sin (p. 241)
- Example Sins (p. 242)
- The Netscape Browser (p. 242)
- OpenSSL Problems (p. 242)
- Redemption Steps (p. 243)
- Windows (p. 243)
- .NET Code (p. 243)
- Unix (p. 244)
- Java (p. 245)
- Replaying Number Streams (p. 245)
- Extra Defensive Measures (p. 246)
- Other Resources (p. 246)
- Summary (p. 246)
- 19 Poor Usability (p. 247)
- Overview of the Sin (p. 248)
- Affected Languages (p. 248)
- The Sin Explained (p. 248)
- Who Are Your Users? (p. 249)
- The Minefield: Presenting Security Information to Your Users (p. 249)
- Related Sins (p. 250)
- Spotting the Sin Pattern (p. 250)
- Spotting the Sin During Code Review (p. 250)
- Testing Techniques to Find the Sin (p. 251)
- Example Sins (p. 251)
- SSL/TLS Certificate Authentication (p. 251)
- Internet Explorer 4.0 Root Certificate Installation (p. 252)
- Redemption Steps (p. 253)
- When Users Are Involved, Make the UI Simple and Clear (p. 253)
- Make Security Decisions for Users (p. 253)
- Make Selective Relaxation of Security Policy Easy (p. 255)
- Clearly Indicate Consequences (p. 255)
- Make It Actionable (p. 258)
- Provide Central Management (p. 259)
- Other Resources (p. 259)
- Summary (p. 259)
- A Mapping the 19 Deadly Sins to the OWASP "Top Ten" (p. 261)
- B Summary of Do's and Don'ts (p. 263)
- Sin 1 Buffer Overruns Summary (p. 264)
- Sin 2 Format String Problems Summary (p. 264)
- Sin 3 Integer Overflows Summary (p. 264)
- Sin 4 SQL Injection Summary (p. 265)
- Sin 5 Command Injection Summary (p. 266)
- Sin 6 Failing to Handle Errors Summary (p. 266)
- Sin 7 Cross-Site Scripting Summary (p. 266)
- Sin 8 Failing to Protect Network Traffic Summary (p. 266)
- Sin 9 Use of Magic URLs and Hidden Form Fields Summary (p. 267)
- Sin 10 Improper Use of SSL and TLS Summary (p. 267)
- Sin 11 Use of Weak Password-Based Systems Summary (p. 268)
- Sin 12 Failing to Store and Protect Data Securely Summary (p. 269)
- Sin 13 Information Leakage Summary (p. 270)
- Sin 14 Improper File Access Summary (p. 270)
- Sin 15 Trusting Network Name Resolution Summary (p. 270)
- Sin 16 Race Conditions Summary (p. 271)
- Sin 17 Unauthenticated Key Exchange Summary (p. 271)
- Sin 18 Cryptographically Strong Random Numbers Summary (p. 271)
- Sin 19 Poor Usability Summary (p. 271)
- Index (p. 273)