Software Security Engineering: A Guide for Project Managers: SEI Series in Software Engineering (Paperback)
Autor Julia H. Allen, Sean Barnum, Robert Jellisonen Limba Engleză Paperback – 30 apr 2008
-Steve Riley, senior security strategist, Microsoft Corporation
"There are books written on some of the topics addressed in this book, and there are other books on secure systems engineering. Few address the entire life cycle with a comprehensive overview and discussion of emerging trends and topics as well as this one."
-Ronda Henning, senior scientist-software/security queen, Harris Corporation
Software that is developed from the beginning with security in mind will resist, tolerate, and recover from attacks more effectively than would otherwise be possible. While there may be no silver bullet for security, there are practices that project managers will find beneficial. With this management guide, you can select from a number of sound practices likely to increase the security and dependability of your software, both during its development and subsequently in its operation.
Software Security Engineering draws extensively on the systematic approach developed for the Build Security In (BSI) Web site. Sponsored by the Department of Homeland Security Software Assurance Program, the BSI site offers a host of tools, guidelines, rules, principles, and other resources to help project managers address security issues in every phase of the software development life cycle (SDLC). The book's expert authors, themselves frequent contributors to the BSI site, represent two well-known resources in the security world: the CERT Program at the Software Engineering Institute (SEI) and Cigital, Inc., a consulting firm specializing in software security.
This book will help you understand why
- Software security is about more than just eliminating vulnerabilities and conducting penetration tests
- Network security mechanisms and IT infrastructure security services do not sufficiently protect application software from security risks
- Software security initiatives should follow a risk-management approach to identify priorities and to define what is "good enough"-understanding that software security risks will change throughout the SDLC
- Project managers and software engineers need to learn to think like an attacker in order to address the range of functions that software should not do, and how software can better resist, tolerate, and recover when under attack
Preț: 315.07 lei
Preț vechi: 393.84 lei
-20% Nou
Puncte Express: 473
Preț estimativ în valută:
60.30€ • 62.63$ • 50.09£
60.30€ • 62.63$ • 50.09£
Carte indisponibilă temporar
Doresc să fiu notificat când acest titlu va fi disponibil:
Se trimite...
Preluare comenzi: 021 569.72.76
Specificații
ISBN-13: 9780321509178
ISBN-10: 032150917X
Pagini: 334
Dimensiuni: 180 x 233 x 18 mm
Greutate: 0.54 kg
Ediția:1
Editura: Addison-Wesley Professional
Seria SEI Series in Software Engineering (Paperback)
Locul publicării:Boston, United States
ISBN-10: 032150917X
Pagini: 334
Dimensiuni: 180 x 233 x 18 mm
Greutate: 0.54 kg
Ediția:1
Editura: Addison-Wesley Professional
Seria SEI Series in Software Engineering (Paperback)
Locul publicării:Boston, United States
Descriere
“This book’s broad overview can help an organization choose a set of processes, policies, and techniques that are appropriate for its security maturity, risk tolerance, and development style. This book will help you understand how to incorporate practical security techniques into all phases of the development lifecycle.”
—Steve Riley, senior security strategist, Microsoft Corporation
“There are books written on some of the topics addressed in this book, and there are other books on secure systems engineering. Few address the entire life cycle with a comprehensive overview and discussion of emerging trends and topics as well as this one.”
—Ronda Henning, senior scientist-software/security queen, Harris Corporation
Software that is developed from the beginning with security in mind will resist, tolerate, and recover from attacks more effectively than would otherwise be possible. While there may be no silver bullet for security, there are practices that project managers will find beneficial. With this management guide, you can select from a number of sound practices likely to increase the security and dependability of your software, both during its development and subsequently in its operation.
Software Security Engineering draws extensively on the systematic approach developed for the Build Security In (BSI) Web site. Sponsored by the Department of Homeland Security Software Assurance Program, the BSI site offers a host of tools, guidelines, rules, principles, and other resources to help project managers address security issues in every phase of the software development life cycle (SDLC). The book’s expert authors, themselves frequent contributors to the BSI site, represent two well-known resources in the security world: the CERT Program at the Software Engineering Institute (SEI) and Cigital, Inc., a consulting firm specializing in software security.
This book will help you understand why
Chapter 1: Why Is Security a Software Issue? 1
1.1 Introduction 1
1.2 The Problem 2
1.3 Software Assurance and Software Security 6
1.4 Threats to Software Security 9
1.5 Sources of Software Insecurity 11
1.6 The Benefits of Detecting Software Security Defects Early 13
1.7 Managing Secure Software Development 18
1.8 Summary 23
Chapter 2: What Makes Software Secure? 25
2.1 Introduction 25
2.2 Defining Properties of Secure Software 26
2.3 How to Influence the Security Properties of Software 36
2.4 How to Assert and Specify Desired Security Properties 61
2.5 Summary 71
Chapter 3: Requirements Engineering for Secure Software 73
3.1 Introduction 73
3.2 Misuse and Abuse Cases 78
3.3 The SQUARE Process Model 84
3.4 SQUARE Sample Outputs 91
3.5 Requirements Elicitation 99
3.6 Requirements Prioritization 106
3.7 Summary 112
Chapter 4: Secure Software Architecture and Design 115
4.1 Introduction 115
4.2 Software Security Practices for Architecture and Design: Architectural Risk Analysis 119
4.3 Software Security Knowledge for Architecture and Design: Security Principles, Security Guidelines, and Attack Patterns 137
4.4 Summary 148
Chapter 5: Considerations for Secure Coding and Testing 151
5.1 Introduction 151
5.2 Code Analysis 152
5.3 Coding Practices 160
5.4 Software Security Testing 163
5.5 Security Testing Considerations Throughout the SDLC 173
5.6 Summary 180
Chapter 6: Security and Complexity: System Assembly Challenges 183
6.1 Introduction 183
6.2 Security Failures 186
6.3 Functional and Attacker Perspectives for Security Analysis: Two Examples 189
6.4 System Complexity Drivers and Security 203
6.5 Deep Technical Problem Complexity 215
6.6 Summary 217
Chapter 7: Governance, and Managing for More Secure Software 221
7.1 Introduction 221
7.2 Governance and Security 223
7.3 Adopting an Enterprise Software Security Framework 226
7.4 How Much Security Is Enough? 236
7.5 Security and Project Management 244
7.6 Maturity of Practice 259
7.7 Summary 266
Chapter 8: Getting Started 267
8.1 Where to Begin 269
8.2 In Closing 281
—Steve Riley, senior security strategist, Microsoft Corporation
“There are books written on some of the topics addressed in this book, and there are other books on secure systems engineering. Few address the entire life cycle with a comprehensive overview and discussion of emerging trends and topics as well as this one.”
—Ronda Henning, senior scientist-software/security queen, Harris Corporation
Software that is developed from the beginning with security in mind will resist, tolerate, and recover from attacks more effectively than would otherwise be possible. While there may be no silver bullet for security, there are practices that project managers will find beneficial. With this management guide, you can select from a number of sound practices likely to increase the security and dependability of your software, both during its development and subsequently in its operation.
Software Security Engineering draws extensively on the systematic approach developed for the Build Security In (BSI) Web site. Sponsored by the Department of Homeland Security Software Assurance Program, the BSI site offers a host of tools, guidelines, rules, principles, and other resources to help project managers address security issues in every phase of the software development life cycle (SDLC). The book’s expert authors, themselves frequent contributors to the BSI site, represent two well-known resources in the security world: the CERT Program at the Software Engineering Institute (SEI) and Cigital, Inc., a consulting firm specializing in software security.
This book will help you understand why
- Software security is about more than just eliminating vulnerabilities and conducting penetration tests
- Network security mechanisms and IT infrastructure security services do not sufficiently protect application software from security risks
- Software security initiatives should follow a risk-management approach to identify priorities and to define what is “good enough”—understanding that software security risks will change throughout the SDLC
- Project managers and software engineers need to learn to think like an attacker in order to address the range of functions that software should not do, and how software can better resist, tolerate, and recover when under attack
Chapter 1: Why Is Security a Software Issue? 1
1.1 Introduction 1
1.2 The Problem 2
1.3 Software Assurance and Software Security 6
1.4 Threats to Software Security 9
1.5 Sources of Software Insecurity 11
1.6 The Benefits of Detecting Software Security Defects Early 13
1.7 Managing Secure Software Development 18
1.8 Summary 23
Chapter 2: What Makes Software Secure? 25
2.1 Introduction 25
2.2 Defining Properties of Secure Software 26
2.3 How to Influence the Security Properties of Software 36
2.4 How to Assert and Specify Desired Security Properties 61
2.5 Summary 71
Chapter 3: Requirements Engineering for Secure Software 73
3.1 Introduction 73
3.2 Misuse and Abuse Cases 78
3.3 The SQUARE Process Model 84
3.4 SQUARE Sample Outputs 91
3.5 Requirements Elicitation 99
3.6 Requirements Prioritization 106
3.7 Summary 112
Chapter 4: Secure Software Architecture and Design 115
4.1 Introduction 115
4.2 Software Security Practices for Architecture and Design: Architectural Risk Analysis 119
4.3 Software Security Knowledge for Architecture and Design: Security Principles, Security Guidelines, and Attack Patterns 137
4.4 Summary 148
Chapter 5: Considerations for Secure Coding and Testing 151
5.1 Introduction 151
5.2 Code Analysis 152
5.3 Coding Practices 160
5.4 Software Security Testing 163
5.5 Security Testing Considerations Throughout the SDLC 173
5.6 Summary 180
Chapter 6: Security and Complexity: System Assembly Challenges 183
6.1 Introduction 183
6.2 Security Failures 186
6.3 Functional and Attacker Perspectives for Security Analysis: Two Examples 189
6.4 System Complexity Drivers and Security 203
6.5 Deep Technical Problem Complexity 215
6.6 Summary 217
Chapter 7: Governance, and Managing for More Secure Software 221
7.1 Introduction 221
7.2 Governance and Security 223
7.3 Adopting an Enterprise Software Security Framework 226
7.4 How Much Security Is Enough? 236
7.5 Security and Project Management 244
7.6 Maturity of Practice 259
7.7 Summary 266
Chapter 8: Getting Started 267
8.1 Where to Begin 269
8.2 In Closing 281
Cuprins
Foreword xi
Preface xiii
About the Authors xxiii
Chapter 1: Why Is Security a Software Issue? 1
1.1 Introduction 1
1.2 The Problem 2
1.3 Software Assurance and Software Security 6
1.4 Threats to Software Security 9
1.5 Sources of Software Insecurity 11
1.6 The Benefits of Detecting Software Security Defects Early 13
1.7 Managing Secure Software Development 18
1.8 Summary 23
Chapter 2: What Makes Software Secure? 25
2.1 Introduction 25
2.2 Defining Properties of Secure Software 26
2.3 How to Influence the Security Properties of Software 36
2.4 How to Assert and Specify Desired Security Properties 61
2.5 Summary 71
Chapter 3: Requirements Engineering for Secure Software 73
3.1 Introduction 73
3.2 Misuse and Abuse Cases 78
3.3 The SQUARE Process Model 84
3.4 SQUARE Sample Outputs 91
3.5 Requirements Elicitation 99
3.6 Requirements Prioritization 106
3.7 Summary 112
Chapter 4: Secure Software Architecture and Design 115
4.1 Introduction 115
4.2 Software Security Practices for Architecture and Design: Architectural Risk Analysis 119
4.3 Software Security Knowledge for Architecture and Design: Security Principles, Security Guidelines, and Attack Patterns 137
4.4 Summary 148
Chapter 5: Considerations for Secure Coding and Testing 151
5.1 Introduction 151
5.2 Code Analysis 152
5.3 Coding Practices 160
5.4 Software Security Testing 163
5.5 Security Testing Considerations Throughout the SDLC 173
5.6 Summary 180
Chapter 6: Security and Complexity: System Assembly Challenges 183
6.1 Introduction 183
6.2 Security Failures 186
6.3 Functional and Attacker Perspectives for Security Analysis: Two Examples 189
6.4 System Complexity Drivers and Security 203
6.5 Deep Technical Problem Complexity 215
6.6 Summary 217
Chapter 7: Governance, and Managing for More Secure Software 221
7.1 Introduction 221
7.2 Governance and Security 223
7.3 Adopting an Enterprise Software Security Framework 226
7.4 How Much Security Is Enough? 236
7.5 Security and Project Management 244
7.6 Maturity of Practice 259
7.7 Summary 266
Chapter 8: Getting Started 267
8.1 Where to Begin 269
8.2 In Closing 281
Glossary 283
References 291
Build Security In Web Site References 311
Index 317
Preface xiii
About the Authors xxiii
Chapter 1: Why Is Security a Software Issue? 1
1.1 Introduction 1
1.2 The Problem 2
1.3 Software Assurance and Software Security 6
1.4 Threats to Software Security 9
1.5 Sources of Software Insecurity 11
1.6 The Benefits of Detecting Software Security Defects Early 13
1.7 Managing Secure Software Development 18
1.8 Summary 23
Chapter 2: What Makes Software Secure? 25
2.1 Introduction 25
2.2 Defining Properties of Secure Software 26
2.3 How to Influence the Security Properties of Software 36
2.4 How to Assert and Specify Desired Security Properties 61
2.5 Summary 71
Chapter 3: Requirements Engineering for Secure Software 73
3.1 Introduction 73
3.2 Misuse and Abuse Cases 78
3.3 The SQUARE Process Model 84
3.4 SQUARE Sample Outputs 91
3.5 Requirements Elicitation 99
3.6 Requirements Prioritization 106
3.7 Summary 112
Chapter 4: Secure Software Architecture and Design 115
4.1 Introduction 115
4.2 Software Security Practices for Architecture and Design: Architectural Risk Analysis 119
4.3 Software Security Knowledge for Architecture and Design: Security Principles, Security Guidelines, and Attack Patterns 137
4.4 Summary 148
Chapter 5: Considerations for Secure Coding and Testing 151
5.1 Introduction 151
5.2 Code Analysis 152
5.3 Coding Practices 160
5.4 Software Security Testing 163
5.5 Security Testing Considerations Throughout the SDLC 173
5.6 Summary 180
Chapter 6: Security and Complexity: System Assembly Challenges 183
6.1 Introduction 183
6.2 Security Failures 186
6.3 Functional and Attacker Perspectives for Security Analysis: Two Examples 189
6.4 System Complexity Drivers and Security 203
6.5 Deep Technical Problem Complexity 215
6.6 Summary 217
Chapter 7: Governance, and Managing for More Secure Software 221
7.1 Introduction 221
7.2 Governance and Security 223
7.3 Adopting an Enterprise Software Security Framework 226
7.4 How Much Security Is Enough? 236
7.5 Security and Project Management 244
7.6 Maturity of Practice 259
7.7 Summary 266
Chapter 8: Getting Started 267
8.1 Where to Begin 269
8.2 In Closing 281
Glossary 283
References 291
Build Security In Web Site References 311
Index 317
Notă biografică
Julia H. Allen is a senior member of the technical staff within the CERTProgram at the Software Engineering Institute (SEI), a unit of Carnegie Mellon University in Pittsburgh, PA. In addition to her work in software security and assurance, Allen is engaged in developing and transitioning executive outreach programs in enterprise security and governance. She is the author of The CERT Guide to System and Network Security Practices (Addison-Wesley, 2001), Governing for Enterprise Security (CMU/SEI, 2005), and the CERT Podcast Series: Security for Business Leaders (2006/2007).
Sean Barnum is a Principal Consultant at Cigital and is technical lead for their federal services practice. He has more than twenty years of experience in the software industry in the areas of development, software quality assurance, quality management, process architecture and improvement, knowledge management, and security. He is a frequent contributor and speaker for regional and national software security and software quality publications, conferences, and events. He is very active in the software assurance community and is involved in numerous knowledge standards-defining efforts, including the Common Weakness Enumeration (CWE), the Common Attack Pattern Enumeration and Classification (CAPEC), and other elements of the Software Assurance Programs of the Department of Homeland Security and the Department of Defense. He is also the lead technical subject matter expert for the Air Force Application Software Assurance Center of Excellence.
Robert J. Ellison, Ph.D., is a member of the Survivable Systems Engineering Team within the CERTProgram at the Software Engineering Institute and, in that capacity, has served in a number of technical and management roles. He was a project leader for the evaluation of software engineering development environments and associated software development tools. He was also a member of the Carnegie Mellon University team that wrote the proposal for the SEI; he joined the new FFRDC in 1985 as a founding member. Ellison regularly participates in the evaluation of software architectures and contributes from the perspective of security and reliability measures.
Gary McGraw, Ph.D.,
is the CTO of Cigital, Inc., a software security and quality consulting firm with headquarters in the Washington, D.C., area. He is a globally recognized authority on software security and the author of six best selling books on this topic. The latest is Exploiting Online Games (Addison-Wesley, 2008). His other titles include Java Security, Building Secure Software, Exploiting Software, and Software Security; and he is editor of the Addison-Wesley Software Security series. McGraw has also written more than ninety peer-reviewed scientific publications, authors a monthly security column for darkreading.com, and is frequently quoted in the press. Besides serving as a strategic counselor for top business and IT executives, Gary is on the Advisory Boards of Fortify Software and Raven White. He serves on the Dean’s Advisory Council for the School of Informatics at Indiana University. Gary is an IEEE Computer Society Board of Governors member and produces the monthly Silver Bullet Security Podcast for IEEE Security & Privacy magazine.
Nancy R. Mead, Ph.D., is a senior member of the technical staff in the Survivable Systems Engineering Group, which is part of the CERT Program at the Software Engineering Institute. Mead is also a faculty member in the Master of Software Engineering and Master of Information Systems Management programs at Carnegie Mellon University. She has more than one hundred publications and invited presentations. She is a fellow of the Institute of Electrical and Electronic Engineers, Inc. (IEEE) and the IEEE Computer Society and is also a member of the Association for Computing Machinery (ACM).
Sean Barnum is a Principal Consultant at Cigital and is technical lead for their federal services practice. He has more than twenty years of experience in the software industry in the areas of development, software quality assurance, quality management, process architecture and improvement, knowledge management, and security. He is a frequent contributor and speaker for regional and national software security and software quality publications, conferences, and events. He is very active in the software assurance community and is involved in numerous knowledge standards-defining efforts, including the Common Weakness Enumeration (CWE), the Common Attack Pattern Enumeration and Classification (CAPEC), and other elements of the Software Assurance Programs of the Department of Homeland Security and the Department of Defense. He is also the lead technical subject matter expert for the Air Force Application Software Assurance Center of Excellence.
Robert J. Ellison, Ph.D., is a member of the Survivable Systems Engineering Team within the CERTProgram at the Software Engineering Institute and, in that capacity, has served in a number of technical and management roles. He was a project leader for the evaluation of software engineering development environments and associated software development tools. He was also a member of the Carnegie Mellon University team that wrote the proposal for the SEI; he joined the new FFRDC in 1985 as a founding member. Ellison regularly participates in the evaluation of software architectures and contributes from the perspective of security and reliability measures.
Gary McGraw, Ph.D.,
is the CTO of Cigital, Inc., a software security and quality consulting firm with headquarters in the Washington, D.C., area. He is a globally recognized authority on software security and the author of six best selling books on this topic. The latest is Exploiting Online Games (Addison-Wesley, 2008). His other titles include Java Security, Building Secure Software, Exploiting Software, and Software Security; and he is editor of the Addison-Wesley Software Security series. McGraw has also written more than ninety peer-reviewed scientific publications, authors a monthly security column for darkreading.com, and is frequently quoted in the press. Besides serving as a strategic counselor for top business and IT executives, Gary is on the Advisory Boards of Fortify Software and Raven White. He serves on the Dean’s Advisory Council for the School of Informatics at Indiana University. Gary is an IEEE Computer Society Board of Governors member and produces the monthly Silver Bullet Security Podcast for IEEE Security & Privacy magazine.
Nancy R. Mead, Ph.D., is a senior member of the technical staff in the Survivable Systems Engineering Group, which is part of the CERT Program at the Software Engineering Institute. Mead is also a faculty member in the Master of Software Engineering and Master of Information Systems Management programs at Carnegie Mellon University. She has more than one hundred publications and invited presentations. She is a fellow of the Institute of Electrical and Electronic Engineers, Inc. (IEEE) and the IEEE Computer Society and is also a member of the Association for Computing Machinery (ACM).
Textul de pe ultima copertă
""This book's broad overview can help an organization choose a set of processes, policies, and techniques that are appropriate for its security maturity, risk tolerance, and development style. This book will help you understand how to incorporate practical security techniques into all phases of the development lifecycle."" -Steve Riley, senior security strategist, Microsoft Corporation ""There are books written on some of the topics addressed in this book, and there are other books on secure systems engineering. Few address the entire life cycle with a comprehensive overview and discussion of emerging trends and topics as well as this one."" -Ronda Henning, senior scientist-software/security queen, Harris Corporation Software that is developed from the beginning with security in mind will resist, tolerate, and recover from attacks more effectively than would otherwise be possible. While there may be no silver bullet for security, there are practices that project managers will find beneficial. With this management guide, you can select from a number of sound practices likely to increase the security and dependability of your software, both during its development and subsequently in its operation. "Software Security Engineering "draws extensively on the systematic approach developed for the Build Security In (BSI) Web site. Sponsored by the Department of Homeland Security Software Assurance Program, the BSI site offers a host of tools, guidelines, rules, principles, and other resources to help project managers address security issues in every phase of the software development life cycle (SDLC). The book's expert authors, themselves frequent contributors to the BSI site, represent two well-known resources in the security world: the CERT Program at the Software Engineering Institute (SEI) and Cigital, Inc., a consulting firm specializing in software security. This book will help you understand why Software security is about more than just eliminating vulnerabilities and conducting penetration tests Network security mechanisms and IT infrastructure security services do not sufficiently protect application software from security risks Software security initiatives should follow a risk-management approach to identify priorities and to define what is "good enough"-understanding that software security risks will change throughout the SDLC Project managers and software engineers need to learn to think like an attacker in order to address the range of functions that software should not do, and how software can better resist, tolerate, and recover when under attack
Chapter 1: Why Is Security a Software Issue? 1 1.1 Introduction 1 1.2 The Problem 2 1.3 Software Assurance and Software Security 6 1.4 Threats to Software Security 9 1.5 Sources of Software Insecurity 11 1.6 The Benefits of Detecting Software Security Defects Early 13 1.7 Managing Secure Software Development 18 1.8 Summary 23 Chapter 2: What Makes Software Secure? 25 2.1 Introduction 25 2.2 Defining Properties of Secure Software 26 2.3 How to Influence the Security Properties of Software 36 2.4 How to Assert and Specify Desired Security Properties 61 2.5 Summary 71 Chapter 3: Requirements Engineering for Secure Software 73 3.1 Introduction 73 3.2 Misuse and Abuse Cases 78 3.3 The SQUARE Process Model 84 3.4 SQUARE Sample Outputs 91 3.5 Requirements Elicitation 99 3.6 Requirements Prioritization 106 3.7 Summary 112 Chapter 4: Secure Software Architecture and Design 115 4.1 Introduction 115 4.2 Software Security Practices for Architecture and Design: Architectural Risk Analysis 119 4.3 Software Security Knowledge for Architecture and Design: Security Principles, Security Guidelines, and Attack Patterns 137 4.4 Summary 148 Chapter 5: Considerations for Secure Coding and Testing 151 5.1 Introduction 151 5.2 Code Analysis 152 5.3 Coding Practices 160 5.4 Software Security Testing 163 5.5 Security Testing Considerations Throughout the SDLC 173 5.6 Summary 180 Chapter 6: Security and Complexity: System Assembly Challenges 183 6.1 Introduction 183 6.2 Security Failures 186 6.3 Functional and Attacker Perspectives for Security Analysis: Two Examples 189 6.4 System Complexity Drivers and Security 203 6.5 Deep Technical Problem Complexity 215 6.6 Summary 217 Chapter 7: Governance, and Managing for More Secure Software 221 7.1 Introduction 221 7.2 Governance and Security 223 7.3 Adopting an Enterprise Software Security Framework 226 7.4 How Much Security Is Enough? 236 7.5 Security and Project Management 244 7.6 Maturity of Practice 259 7.7 Summary 266 Chapter 8: Getting Started 267 8.1 Where to Begin 269 8.2 In Closing 281
Chapter 1: Why Is Security a Software Issue? 1 1.1 Introduction 1 1.2 The Problem 2 1.3 Software Assurance and Software Security 6 1.4 Threats to Software Security 9 1.5 Sources of Software Insecurity 11 1.6 The Benefits of Detecting Software Security Defects Early 13 1.7 Managing Secure Software Development 18 1.8 Summary 23 Chapter 2: What Makes Software Secure? 25 2.1 Introduction 25 2.2 Defining Properties of Secure Software 26 2.3 How to Influence the Security Properties of Software 36 2.4 How to Assert and Specify Desired Security Properties 61 2.5 Summary 71 Chapter 3: Requirements Engineering for Secure Software 73 3.1 Introduction 73 3.2 Misuse and Abuse Cases 78 3.3 The SQUARE Process Model 84 3.4 SQUARE Sample Outputs 91 3.5 Requirements Elicitation 99 3.6 Requirements Prioritization 106 3.7 Summary 112 Chapter 4: Secure Software Architecture and Design 115 4.1 Introduction 115 4.2 Software Security Practices for Architecture and Design: Architectural Risk Analysis 119 4.3 Software Security Knowledge for Architecture and Design: Security Principles, Security Guidelines, and Attack Patterns 137 4.4 Summary 148 Chapter 5: Considerations for Secure Coding and Testing 151 5.1 Introduction 151 5.2 Code Analysis 152 5.3 Coding Practices 160 5.4 Software Security Testing 163 5.5 Security Testing Considerations Throughout the SDLC 173 5.6 Summary 180 Chapter 6: Security and Complexity: System Assembly Challenges 183 6.1 Introduction 183 6.2 Security Failures 186 6.3 Functional and Attacker Perspectives for Security Analysis: Two Examples 189 6.4 System Complexity Drivers and Security 203 6.5 Deep Technical Problem Complexity 215 6.6 Summary 217 Chapter 7: Governance, and Managing for More Secure Software 221 7.1 Introduction 221 7.2 Governance and Security 223 7.3 Adopting an Enterprise Software Security Framework 226 7.4 How Much Security Is Enough? 236 7.5 Security and Project Management 244 7.6 Maturity of Practice 259 7.7 Summary 266 Chapter 8: Getting Started 267 8.1 Where to Begin 269 8.2 In Closing 281