Domain 8: Software Development Security Flashcards
DAST
Dynamic Application Security Testing
Scans, enumerates, and runs synthetic transactions agains apps runtime services to assess security
Buffer overflow
A buffer overflow occurs when an application buffer is populated with data that exceeds the capacity allocated to it, causing the excess data to “overflow” into adjacent memory (thereby overwriting it with the excess data). Buffer overflow attacks exploit this to overwrite memory locations that contain application code with malicious code (that is incorporated into the excess data).
Agile
The Agile model allows for developers to jump from one process to another, editing as they desire based upon customer needs.
Developed in mid 1990s
Waterfall
The waterfall method does not allow developers to go backward and fix changes, making any development typically permanent.
6 total stages:
- System requirements / Feasibility
- Software requirements / Analysis
- Design
- Code and debug / Implement
- Testing
- Operations and maintenance
Developed in 1970
Spiral software development
The spiral method will allow a developer to eventually come back and fix something, but they won’t have more than a few chances and they must wait to implement the changes.
The spiral model has an emphasis on risk analysis and prototyping.
Developed in 1988
Integrated development environment
These refer to development environments that are designed to help maximize developer productivity and provide re-usable components with the same or similar interfaces. They typically present a single architecture in which the development can be done. An IDE typically has these components:
Sometimes linux distros can be considered an IDE as well.
Source code editor
Build automation tools
Debuggers
Class browser
Object browser
Class hierarchy diagram
Version control to help develop graphical user interfaces
Fail-Secure
The fail-secure failure state puts the system into a high level of security (and, in some cases, disables it entirely) until an administrator has the chance to diagnose the issue and restore the device to regular operation. T
Capability Maturity Model (CMM)
The software capability maturity model is based on the principle that a mature software development process will produce quality software.
5 categories of maturity level.
T/F Viruses can reproduce without a legit host application.
False
SCMM
Software Capability Maturity Model
Same as CMM -capability maturity model
The software capability maturity model is based on the principle that a mature software development process will produce quality software.
Object-Oriented Programming
Object-Oriented Programming (OOP) relies on the relationship between classes and objects. Objects inherit information from their assigned class. This allows programmers to be more efficient with their code. OOP code scales better and is easier to modify.
Examples, Java, .NET, C++, Python
Referential Integrity
Database concept
Requires that the foreign key be equal to the valid primary key of a different table.
Foreign Key = value that references the primary key of a tuple in a different table
Primary Key = unique value for each tuple in a table. Usually the first column of a table but not always.
Types of Databases
Relational,
Object-oriented
Hierarchal
Relational DB
Consists of flat, two-dimensional tables of rows and columns. Similar to a spreadsheet file. Provides for one to one data structure/mapping.
Relation = the entire table
Attribute = column
Tuple = row
Domain of an attribute = number of allowable values that attribute can take
Hierarchal DB
Combines records and fields that are related into a logical tree structure. Results in a ‘one to many’ data model where each node may have zero, one, or many children but only one parent.
Object Oriented DB
Designed to resolve some of the limitations of large relational databases. Object-oriented databases don’t employ advanced language such as SQL but support modeling and the creation of data as objects.
Works with traditional database information and also complex data types such as diagrams, schematic drawings, videos, and sound and text documents.
SAMM
Software Assurance Maturity Model
A software assurance maturity model (SAMM) ensures proper development practices in software by combining five major aspects of the process into a framework to promote security. Essentially, SAMM ensures software development includes governance, design, implementation, verification, and operations.
IDEAL Software Dev model - what does it stand for? How many phases?
The IDEAL software development model has 5 phases. The phases are as follows:
Initiating
Diagnosing
Establishing
Acting
Learning
Interpreted vs Compiled languages
Compiled language: programmer uses a tool called complier to convert source code int an executable file for use on specified OS. Example, C, Java, Fortran
Interpreted: Code is distributed in the original code as intended by programmer. User could conceivably open source file and see exact code. Ex. Python, R, JavaScript, VBScript
Security Onion
SIEM/IDS/IPS tool
Try…Catch function
Is an example of error handling used in software development. It’s a form of input handling in the event a user enters an unexpected input value.
Exception handling is closely related to error handling, except the exception handling technique doesn’t seek to execute the code in error. Error handling does in fact execute the code in error in an attempt to still manage it properly.
Error Handling
Inclusion of code that attempts to handle errors when they arise before they cause harm or interrupt execution.
Exception Handling
Programmer codes in mechanisms to anticipate and defend against errors in order to avoid termination of execution.
Inheritance
The process whereby an object receives some of its characteristics from a class.
What is a Row called in a relational database?
Tuple OR records
Output Encoding
Output encoding is an application security technique used to ensure that certain characters within form inputs are processed as data and not potentially misinterpreted as programming syntax (which could be used to inject malicious code, if processed).
For example: The conversion of certain characters within website form inputs (e.g., ‘) into their HTML character entity reference equivalents (e.g., &apos) prior to processing.
SDx
Software Defined Everything: Software-defined everything (SDx) refers to replacing hardware with software through virtualization.
i.e. VMs, SD Networking, Virtual SAN.