Secure Software Development Flashcards
SDLC
Software Development Life Cycle:
An organized process of developing a secure application throughout the life of the project
Waterfall Model
Project Planning > Requirements > Analysis > Design > Coding > Testing > Deployment
SDLC Phases
Planning & Analysis
Software/Systems Design
Implementation
Testing
Integration
Deployment
Maintenance
Agile
Software development is performed in time-boxed or small increments to allow more adaptivity to change
DevOps
Software development and information technology operations
SDLC Principles: Defense in Depth
Layering of security controls is more effective and secure than relying on a single control
SDLC Principles: Never Trust User Input
Any input that is received from a user should undergo input validation prior to allowing it to be utilized by an application
SDLC Principles: Minimize Attack Surface
Reduce the amount of code used by a program, eliminate unneeded functionality, and require authentication prior to running additional plugins
SDLC Principles: Create Secure Defaults
Default installations should include secure configurations instead of requiring an administrator or user to add in additional security
SDLC Principles: Authenticity & Integrity
Applications should be deployed using code signing to ensure the program is not changed inadvertently or maliciously prior to delivery to an end user
SDLC Principles: Fail Securely
Applications should be coded to properly conduct error handling for exceptions in order to fail securely instead of crashing
SDLC Principles: Rely on Trusted SDKs
SDKs must come from trusted source to ensure no malicious code is being added
Black-box Testing
Occurs when a tester is not provided with any information about the system or program prior to conducting the test
White-box Testing
Occurs when a tester is provided full details of a system including the source code, diagrams, and user credentials in order to conduct the test
Gray-box Testing
(Combination of Black & White-box)
The tester partially understands the application’s internal working structure
Structured Exception Handling (SEH)
Structured Exception Handling:
Provides control over what the application should do when faced with a runtime or syntax error
Input Validation
Applications verify that information received from a user matches a specific format or range of values
Static Analysis
Source code of an application is reviewed manually or with automatic tools without running the code
Dynamic Analysis
Analysis and testing of a program occurs while it is being executed or run