Domain 8 - Software Development Security Flashcards
System Development Life Cycle (SDLC)
Project initiation
Functional analysis and planning
System design specifications
Acceptance testing and implementation
System Life Cycle (SLC) (extends beyond SDLC)
Operations and maintenance
Revisions/ Disposal
Project initiation
Feasibility, cost, risk analysis, Management approval, basic security objectives
Functional analysis and planning
Define need, requirements, review proposed security controls
System design specifications
Develop detailed design specs, Review support documentation, Examine security controls
Software development
Programmers develop code. Unit testing Check modules. Prototyping, Verification, Validation
Acceptance testing and implementation
Separation of duties, security testing, data validation, bounds checking, certification, accreditation , part of release control
Operations and maintenance
release into production. Certification/accreditation
Revisions/ Disposal
remove. Sanitation and destruction of unneeded data
Change Management Process
Together, change and configuration management techniques form an important part of the software engineer’s arsenal and protect the organization from development-related security issues. The change management process has three basic components:
Three basic components of the Change Management Process
Request Control
Change Control
Release Control
Request Control
provides an organized framework within which users can request modifications, managers can conduct cost/ benefit analysis, and developers can prioritize tasks.
Change Control
provides an organized framework within which multiple developers can create and test a solution prior to rolling it out into a production environment. Change control includes conforming to quality control restrictions, developing tools for update or change deployment, properly documenting any coded changes, and rest
Release Control
Once the changes are finalized, they must be approved for release through the release control procedure.
Configuration Management Process
This process is used to control the version( s) of software used throughout an organization and formally track and control changes
Configuration Identification
administrators document the configuration of covered software products throughout the organization.
Configuration Control
ensures that changes to software versions are made in accordance with the change control and configuration management policies. Updates can be made only from authorized distributions in accordance with those policies.
Configuration Status Accounting
Formalized procedures are used to keep track of all authorized changes that take place.
Configuration Audit
periodic configuration audit should be conducted to ensure that the actual production environment is consistent with the accounting records and that no unauthorized configuration changes have taken place.
SDLC
Conceptual definition Functional requirements definition Control specifications development Design review Code review System test review Maintenance and change management
Software Capability Maturity model (CMM)
Quality of software is a direct function of quality of development and maintenance
Defined by Carnegie Mellon University SEI (Software Engineering Institute)
Describes procedures, principles, and practices that underlie software development process maturity 1-2 REACTIVE, 3-5 PROACTIVE
List the 5 steps of the Software Capability Maturity model (CMM).
- initiating – competent people, informal processes, adhoc, absence of formal process
- repeatable – project management processes, basic lifecycle management processes
- defined – engineering processes, presence of basic lifecycle management processes and reuse of code, use of requirements management, software project planning, quality assurance, configuration management practices
- managed – product and process improvement, quantitatively controlled
- Optimizing – continuous process improvement
Works with an IDEAL model.
Initiate begin effort, Diagnose perform assessment, Establish an action plan, Action implement improvements, Leverage reassesses and continuously improve
Project Management Tools
Gantt Chart
PERT
Gantt Chart
a type of bar chart that shows the interrelationships over time between projects and schedules. It provides a graphical illustration of a schedule that helps to plan, coordinate, and track specific tasks in a project. WBS a subpart
PERT
Program Evaluation Review Technique is a projectscheduling tool used to judge the size of a software product in development and calculate the standard deviation (SD) for risk assessment. PERT relates the estimated lowest possible size, the most likely size, and the highest possible size of each component. PERT is used to direct improvements to project management and software coding in order to produce more efficient software.
DevOps
The DevOps approach seeks to resolve issues by bringing the three functions together in a single operational model.
The word DevOps is a combination of Development and Operations, symbolizing that these functions must merge and cooperate to meet business requirements. Integrates:
- Software Development,
- Quality Assurance
- IT Operations
NOT SECURITY
Software
Software Development Models
Simplistic model Waterfall model Waterfall including Validation and Verification (V&V) Spiral model Cleanroom Cleanroom design
Simplistic model
This model was simplistic in that it assumed that each step could be completed and finalized without any effect from the later stages that may require rework
Waterfall model
Can be managed if developers are limited going back only one step. If rework may be done at any stage it’s not manageable. Problem: it assumes that a phase or stage ends at a specific time. System Requirements-> Software Requirements -> Analysis -> Program Design -> Coding -> Testing -> Operations & Maintenance
Waterfall including Validation and Verification (V&V)
Reinterpretation of the waterfall model where verification evaluates the product during development against specification and validation refers to the work product satisfying the real-world requirements and concepts. Verification=doing the job right Validation:= doing the right job
Spiral model
Angular = progress made Radial = cost
Lower left = development plans
Upper left = objectives of the plans, alternatives checked
Upper right = assessing alternatives, risk analysis Lower right = final development
Left horizontal axis = includes the major review required to complete each full cycle
Agile Software Development
Developers increasingly embraced approaches that placed an emphasis on the needs of the customer and on quickly developing new functionality that meets those needs in an iterative fashion.
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
WORKING SOFTWARE PRIMARY MEASURE OF SUCCESS
Database
general mechanism for defining, storing and manipulating data without writing specific programs
DBMS
refers to a suite of software programs that maintains and provides controlled access to data components store in rows and columns of a table
Types of Database Systems
- Hierarchical= tree (sons with only one parent), one to many relationship
- Network = tree (all interconnected)
- Mesh
- Object-orientated
- Relational – one-to-one relationships, has DDL and DML, has TUPLES and ATTRIBUTES (rows and columns)
- Key-Value Store - key-value database, is a data storage paradigm designed for storing, retrieving, and managing associative arrays, a data structure more commonly known today as a dictionary or hash.
DDL
Data definition language defines structure and schema
DML
Data manipulation language view, manipulate and use the database via VIEW, ADD, MODIFY, SORT and DELETE commands.
Degree of Db
–number of attributes (columns) in table
Tuple
row or record
DDE
Dynamic data exchange enables applications to work in a client/server model by providing the inter-process communications mechanism (IPC)
DCL
Data control language subset of SQL used to control access to data in a database, using GRANT and REVOKE statements
Semantic integrity
make sure that the structural and semantic rules are enforced on all data types, logical values that could adversely affect the structure of the database
Referential integrity
all foreign keys reference existing primary keys
Candidate Key
an attribute that is a unique identifier within a given table, one of the candidate keys is chosen to be the primary key and the others are alternate keys, A candidate key is a subset of attributes that can be used to uniquely identify any record in a table. No two records in the same table will ever contain the same values for all attributes composing a candidate key. Each table may have one or more candidate keys, which are chosen from column headings.
Primary Key
provide the sole tuple-level addressing mechanism within the relational model. Cannot contain a null value and cannot change or become null during the life of each entity. When the primary key of one relation is used as an attribute in another relation, it is the foreign key in that relation. Uniquely identify a record in a database
Foreign Key
represents a reference to an entry in some other table that is a primary key there. Link between the foreign and primary keys represents the relationship between the tuples. Enforces referential integrity
Main Components of a Db using Db
- Schemas; blueprints
- tables
- views
Incorrect Summaries
when one transaction is using an aggregate function to summarize data stored in a Db while a second transaction is making modifications to a Db, causing summary to include incorrect information
Dirty Reads
when one transaction reads a value from a Db that was written by another transaction that did not commit, Db concurrency issue
Lost Updates
when one transaction writes a value to the Db that overwrites a value needed by transactions that have earlier precedence
Dynamic Lifetime Objects
Objects created on the fly by software in an Object Oriented Programming environment. An object is preassembled code that is a self-contained module
ODBC
Open Database Connectivity is a database feature that allows applications to communicate with different types of databases without having to be directly programmed for interaction with each type. ODBC acts as a proxy
Multilevel security
it’s essential that admins and developers strive to keep data with different security requirements separate.
Database contamination
Mixing data with different classification levels and/ or need-to-know requirements and is a significant security challenge. Often, administrators will deploy a trusted front end to add multilevel security to a legacy or insecure DBMS.
Database partitioning
is the process of splitting a single database into multiple parts, each with a unique and distinct security level or type of content.
Polyinstantiation
occurs when two or more rows in the same relational database table appear to have identical primary key elements but contain different data for use at differing classification levels. It is often used as a defense against inference attacks
Database transactions
Four required characteristics: atomicity, consistency, isolation, and durability. Together, these attributes are known as the ACID model, which is a critical concept in the development of database management systems.
Atomicity
Database transactions must be atomic— that is, they must be an “all-or-nothing” affair. If any part of the transaction fails, the entire transaction must be rolled back as if it never occurred.
Consistency
All transactions must begin operating in an environment that is consistent with all of the database’s rules (for example, all records have a unique primary key). When the transaction is complete, the database must again be consistent with the rules, regardless of whether those rules were violated during the processing of the transaction itself. No other transaction should ever be able to use any inconsistent data that might be generated during the execution of another transaction.
Isolation
principle requires that transactions operate separately from each other. If a database receives two SQL transactions that modify the same data, one transaction must be completed in its entirety before the other transaction is allowed to modify the same data. This prevents one transaction from working with invalid data generated as an intermediate step by another transaction
Durability
Database transactions must be durable. That is, once they are committed to the database, they must be preserved. Databases ensure durability through the use of backup mechanisms, such as transaction logs.
Expert Systems
Expert systems seek to embody the accumulated knowledge of experts on a particular subject and apply it in a consistent fashion to future decisions. Every expert system has two main components: the knowledge base and the inference engine.
- Based on human reasoning
- Knowledge base of the domain in the form of rules
- If-then statements=called forward chaining
- Priority in rules are called salience
- Interference system = decision program
- Expert system = inference engine + knowledge base - Degree of uncertainty handled by approaches as Bayesian networks(probability of events), certainty factors(probability an event is true) or fuzzy logic(to develop conclusions)
- Two modes:
o Forward chaining: acquires info and comes to a conclusion
o Backward chaining: backtracks to determine IF a hypothesis is correct
Neural Networks
- Use complex computations to replace partial functions of the human mind
- Based on function of biologic neurons
- Works with weighted inputs
- If a threshold is exceeded there will be output
- Single-layer : only one level of summoning codes
- Multi-level: more levels of summoning codes
- Training period needed to determine input vectors
- adaptability (learning process)
Programming Language Generations
First-generation Second-generation Third-generation Fourth-generation Fifth-generation
First-generation languages (1GL)
include all machine languages
Second-generation languages (2GL)
include all assembly languages.
Third-generation languages (3GL)
include all compiled languages.
Fourth-generation languages (4GL)
attempt to approximate natural languages and include SQL, which is used by databases.
Fifth-generation languages (5GL)
allow programmers to create code using visual interfaces.