Secure Software Development Flashcards
is an organized process of developing a secure application throughout the life of the project
SDLC Software Development Life Cycle
Helps prioritize vulnerabilty identification and patching
Threat modeling
Users and processes should be run using the least amount of access necessary to perform a given information
Least Privilege
Layering of a security controls is more effective and secure than relying on a single control.
Defense in Depth
Occurs when tester is not provided with any information about the system or program prior to conducting the test
Black box testing
Occurs when a tester is provided full details of a system including the source code, diagram and user credentials in order to conduct the test
White box testing
Provides control over what the application should do when faced with a run time or syntax error. Programs should use input validation when taking data from users
Structured exception handling
Applications verify that information received from a user matches a specific format or range values.
Input Validation
Analysis and testing of a program occurs with it being executed and run
Dynamic analysis
Injection of randomize data into a software program in an attempt to find a system failures, memory leaks, error handling issues and improper input validation.
Fuzzing
Code placed in computer programs to by pass normal authentication and other security mechanism.
Backdoors
Method of accessing unauthorized directories by moving through the directory structure on a remote server
Directory traversal
Occurs when an attacker is able to execute or run commands on a victim’s computer. When the user is away from computer.
Arbitrary Code Execution
Occurs when an attacker is able to execute or run commands on a remote computer
Remote code execution
Attack against a vulnerability that is unknown to the original developer or manufacturer
Zero day
Occurs when a process stores data outside the memory range allocated by the developer.
Buffer overflow
A temporary storage area that a program uses to store data
Buffer
Reserved area of memory when the program saves the return address when a function call instruction is received.
Stack
Occurs when an attackers fill up the buffer with NOP so that the return address may hit an NOP and continue on until it finds the attacker’s code to run
Smash the stack
Series of NOPs is hit by a non malicious program
NOP Slide
Method used by programmers to randomly arrange the different address spaces used by a program or process to prevent buffer overflow exploit
Address space layout randomization ASLR
Occurs when an attacker embeds malicious scripting commands on a trusted website
Cross-site scripting (xss)
Attempts to get data provides by the attacker to be saved on the web server by the victim.
Stored/persistent attack
Attempts to have a non persistent effect activated by a victim clicking a link on the site
Reflected
Attempts to exploit the victim’s web browser
Document Object Model (DOM) based
Occurs when an attacker forces a user to execute actions on a webserver for which they are already authenticated
Cross-Site Request Forgery
Attacking consisting of the insertion or injection of an SQL query via input data from the client to a web application
SQL injection
Insertion of additional information or code through data input data from the client to a web application
Injection attack
Data submitted without encryption or input validation is vulnerable to spoofing, request forgery and injection of arbitrary code
XML vulnerability
Extensible Mark up Language
Xml encodes entities that expand to exponential size, consuming memory on the host and potential crashing it.
XML Bomb ( Billion Laugh Attack)
An attack that embeds a request for a local resource
XML external entity
A software vulnerabilty when the resulting outcome from execution process is directly dependent on the order and timing of certain events and those events fail to execute on the order and timing intended by the developer
Race Conditions
A software vulnerability that occurs when the code attempts to remove the relationship between a pointer and the thing itnpoints to.
Dereferencing
The potential vlnerability that occurs when theres a change between when an app checked a resource and when the app used the resource
Time of check to Time of use - TOCTOU
Vulnerabilities often arise from the general design of the Software Code
Design Vulnerabilities
Any code that is used or invoke outside the main program development process
Insecure Component
E.g
Code reuse
Third Party Library
SDK
Any program that does not properly record or log detailed enough information for an analyst to perform their job
Insufficient Logging and Monitoring
Any program that uses ineffective credentials or configurations, or one in which defaults have not been changed for security
Weak or Default Configuration
Software development is performed in time-boxed or small increments to allow more adaptivity to change
Agile
Software development and information technology operations
DevOps