110 likes | 127 Views
Chapter 24: Software Security. Key Takeaway Points. Software security is a proactive , rather than reactive, approach to constructing secure software. Consideration of software security should begin in the requirements phase and continue throughout the life cycle. Security Requirements.
E N D
Key Takeaway Points • Software security is a proactive, rather than reactive, approach to constructing secure software. • Consideration of software security should begin in the requirements phase and continue throughout the life cycle.
Security Requirements • Security requirements define the capabilities of the software system to thwart attempted attacks and recover from successful attacks. • There are many different types of security requirements (page 608). • Not all systems require all types of security requirements. • Security requirements are associated with costs to design and implement. • Which security requirements are needed for a system is a project dependent decision.
Secure Software Design Principles Principle 1. Secure the weakest link. Principle 2. Practice defense in depth. Principle 3. Fail securely. Principle 4. Least privilege. Principle 5. Compartmentalize. Principle 6. Keep it simple and stupid. Principle 7. Promote privacy. Principle 8. Remember that hiding secrets is hard. Principle 9. Be reluctant to trust. Principle 10. Use community resources.
Secure Software Design Patterns (p. 611) Architectural security patterns: • Privilege Reduction • Privilege Separation • Defer to Kernel • Single Access Point • Check Point • Secure Access Layer Design security patterns: • Roles/RBAC Implementation security patterns • Secure Pipe • Session • Input Validation • Secure Logger
Seven Best Practices of Software Security • Code review • Architectural risk analysis • Penetration testing • Risk based security testing • Misuse cases • Security requirements • Security operation
Attack Tree • An attack tree is an And-Or tree, each non-terminal is an AND node, or OR node. • Each non-terminal represents a problem to be solved or a goal to be accomplished. • An AND node means the problem is solved if the problems represented by its children are solved. An OR node means the problem is solved if the problem of one of its children is solved. • An attack tree describes the options to accomplish an attack.
domain modeling security requirements misuse cases security architectural design security test planning modify planning and architectural design w.r.t. changes design for security apply security patterns and secure design principles review design to detect security flaws modify domain model to help understand security related concepts test w/security requirements apply static analysis tools perform penetration testing and misuse case testing Software Security in the Life Cycle Planning & Architectural design Accommodate Change Domain Modeling Software Design Implementation, Test & Deployment
Tool Support for Software Security • SeaMonster is a security modeling tool for threat models, namely attack trees and misuse cases, and can connect to a repository for model sharing and reuse. • PMD is a Java static code analyzer. • FindBugs is a Java static analyzer, and looks for bugs in Java programs. • WASSP is a “hardening” tool which identifies problems on a running system