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
Fuzzing
Injection of randomized data into a software program in an attempt to find system failures, memory leaks, error handling issues, and improper input validation
Backdoors
Code placed in computer programs to bypass normal authentication and other security mechanisms
Backdoors are a poor coding practice and should not be utilized
Directory Traversal
Method of accessing unauthorized directories by moving through the directory structure on a remote server
Arbitrary Code Execution
Occurs when an attacker is able to execute or run commands on a victim computer (not remotely)
RCE
Remote Code Execution:
Occurs when an attacker is able to execute or run commands on a remote computer
Buffer Overflow
Occurs when a process stores data outside the memory range allocated by the developer