Domain 8 - Software Development Security Flashcards
Code repositories
- where source code and related artifacts (such as libraries) are stored. Do not commit sensitive information, protect access to code repo, sign your work, keep dev tools (IDE) up to date, most repos use git (most widely used modern version control system)
Code libraries
- improve security and reduce risk, ie certain languages are prone to certain attacks > in lower level languages like C, use of safe memory allocation and string manipulation libraries can reduce risk of buffer overflow attacks. Utility functions that other people have written ie encryption, bulk data transfer, etc.
Runtime
- describes the period of time during which a software program is running, where dynamic application testing (DAST) evaluates the security of an application, assessing software sec at runtime is generally the only option because you don’t have option to the source code, for containers scan at build time and runtime, both source code and runtime scan for apps is best practice when source code is available
CI/CD
- continuous integration continous delivery, how we deliver frequent releases, implement identity and access management (including MFA) to restrict access to pipeline, store secrets securely and scan code to ensure no hard-coded secrets, implement role-based access control (and least privilege access) to the environment, automate vulnerability scanning in ci/cd pipeline, release versioning for tracking and recoverability
Static Application Sec Testing
- analysis of software performed without actually executing the program, tester has access to the underlying framework/design/implementation, requires source code, tests “inside out”
Dynamic application sec testing (DAST)
executes the application, tester has no knowledge of underlying tech or source code, “outside in”
SCM (software configuration management)
baselining aka snapshot of a system/ app, should also create artifacts that may be used to help understand system config
Tables (RDBMS)
- aka relations, contain a number of attributes/ fields. Each one corresponds to a column in the table
Rows (RDBMS)
- aka records or tuples, data record within a table, each row reps a complete record of specific item data
Columns (RDBMS)
- set of data values of a particular type, one value for each row of the database ie “first name” “job title” etc, aka fields or attributes, DEGREES of the table are # of columns
Candidate Keys (RDBMS)
subset of attributes that can be used to uniquely identify any record in a table, no 2 records in the same table will ever contain the same values for all attributes composing a candidate key, ie “student ID” or “Patient number”, can be one or more per table
Primary key (RDBMS)
- selected from set of candidate keys for a table to be used to uniquely identify the records in a table, only one per table, chosen at design time, ie “patient number” or “employee ID”
Foreign Keys (RDBMS)
- enforce relationships between 2 tables, aka referential integrity. Ensures that if one table contains a foreign key, it corresponds to a still existing primary key in the other table in the relationship
Aggregation attack (RDBMS)
- create sensitive information by combining non-sensitive data from separate sources, need to know and least privilege can prevent, based on math usually
Inference attack (RDBMS)
- deduce sensitive information from observing non-sensitive pieces of information, blurring data and database partitioning may prevent this attack, based on human deduction
Primary memory (real memory)
- directly available to CPU aka RAM aka volatile RAM!! Most high performance storage available, ops happening in memory are fast than writing to storage,
Secondary storage
- inexpensive non-volatile storage available for long term use, includes magnetic and optical media ie tapes, disks, hard drives, flash drives, CD/DVD storage
Virtual memory
- allows a system to simulate primary memory resources through the use of secondary storage ie system low on RAM makes a hard disk available for direct CPU addressing
Virtual storage
- simulate secondary storage through the use of primary storage, most common example is RAM disk that presents itself to the OS as secondary storage, provides a very fast file system for apps but no recovery capability
Random access storage
- allows OS to request contents from any point within the media, RAM and Hard Drives
Sequential access storage
- requires scanning through entire media from beginning to reach a specific address, ie magnetic tape, old school magnetic storage backup tapes
Volatile storage
- loses contents when power is removed, ie RAM
Non-volatile storage
- does not depend on presence of power to maintain contents, magnetic/ optical media and nonvolatile RAM (NVRAM)
Expert systems
- consist of 2 systems > knowledge base that contains series of “if/ then” rules > inference engine that uses that information to draw conclusions about other data