Domain 8 - Software Development Security Flashcards
What does the Stride threat model stand for?
Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Escalation of Privilege
What is the mitigation for Spoofing?
Authentication
What is the mitigation for Tampering?
Integrity Verification (Message Digest etc)
What is the mitigation for Repudiation?
Non-Repudiation (Digital Signatures, Keys etc)
What is the mitigation for Information Disclosure?
Confidentiality through encryption
What is the mitigation for Denial of Service?
High Availability/Redundancy/Fault Tolerance
What is the mitigation for Escalation of Privilege?
Authorization
What does the DREAD bug tracking classification stand for?
D - Damage Potential R - Reproducibility E - Exploitability A - Affected User Base D - Discoverability
What is the difference between Verification and Validation checks?
Verification is the assessment of whether a system was built to specification. Validation is the acceptance of the system.
What is the nature of Object-Oriented Programming?
Object Orientated is modular and reusable through using objects, classes, methods and functions.
What are Classes and Objects?
Class is a concept (ie people) and an Object brings that concept to life (ie user accounts).
What is an example of a Primary Key in a database?
ID=1
What is Entity Integrity in Databases?
Primary key (ID=1) cannot be NULL
What is Normalization in Databases?
Each attribute in a database must describe ONLY the primary key. This helps to prevent duplicate information.
What are Attributes in Databases?
They are the entries in a table which reference the Primary key (for example name, address etc of ID=1)
What is the Tulpes in a Database?
Tuples is the data in rows, usually called records (this is important for the exam)
What is a Foreign Key in a Database?
Is when the Primary Key from one table appears in a secondary database (Customer ID and Order ID etc).
What is the Cardinality in a Database?
How many times a Primary key is referenced in another databases row relation.
What is Degree in a Database?
How many times a Primary key is referenced in another databases column relation.
What is the threat of Aggregation and Inference in Databases?
When you can draw a connection between two datasets (somebody was sick, didn’t drink and went to the doctor = pregnant)
What is Polyinstantiation for Databases?
Lying (instead of marking the destination of a ship as top secret, it should be marked as delivering food in Africa so that it doesn’t draw attention)
What does the Atomicity test for Databases?
Transactions are either fully committed or rolled back (halfway through paying and the power cuts out)
What does the Durability test for Databases mean?
Once a change has been committed, the transaction can’t be rolled back
What does the Isolation test for Databases mean?
Transactions are invisible until committed
What does the Consistency test for Databases mean?
Database rules are enforced
What does ACID stand for in relation to Database testing?
A - Atomicity
C - Consistency
I - Isolation
D - Durability
A process that provides clear and logical steps that should be followed to ensure that the system which emerges at the end of the development process provides the intended functionality, with an acceptable level of security.
System Development Life Cycle
A collection of computer instructions written using some readable (human readable) computer language.
source code
These deliver instructions directly to the processor using binary instructions without an interpreter or compiler. Characteristics include: time consuming, prone to errors, short in length, and rudimentary progress.
machine languages
This category emerged in the 1990’s. The goal is to create software that can solve problems on its own rather than requiring a programmer to create code to deal with a problem. AI and knowledge-based processing fall within this category.
natural languages
This category is one step above machine languages and uses symbols or mnemonics to represent sections complicated binary code. This uses a simplified code and an assembler to convert code to machine language; requires extensive architecture knowledge; code is hardware specific; and it is difficult to create/write.
assembly languages
Developed in the 1960’s it uses “if-then-else” statements. Characteristics include: independent processor; human-like syntax (easier to use); does not require a compiler or interpreter to convert instructions into machine code.
high-level languages
A fourth generation of languages that focuses on abstract algorithms that hide some of the complexity from the programmer. This frees the programmer to focus on the real-world problems to be fixed in the software (to solve) rather than focusing on behind the scenes.
very high-level languages
A code that has already been translated to binary language; it is difficult to detect malicious code in this type of code.
compiler (compiled)
This type of code uses a piece of software that allows the end user to write human-like, readable code; a program can then be executed directly by this component, which make it somewhat easier to read (see) malicious code.
Interpreters (interpreted)
A type of programming in which objects are organized in a hierarchy in classes with characteristics called attributes attached to each. This programming type emphasizes the employment of objects and methods rather than types of transformations as in other software approaches.
Object-Orientated Programming (OOP)
The software program allows for objects to be created on demand, through request from objects that need a new function to be performed. Requests are instantiated (built in) with the necessary code. The objects can be written in any language as long as the objects can communicate with each other.
created classes/objection (OOP)
Objects are able to communicate with each other regardless of the language type, to make requests. This is what makes the communication possible.
application program interface (API) (OOP)
Functionalities or procedures of objects organized into classes; defines how an object behaves or reacts to a message.
methods (OOP)
This allows for methods to be passed from a class to a subclass.
inheritance (OOP)
The object contains attribute values (messages to be sent to another object’s API).
encapsulate (OOP)
When different objects may communicate or react differently to the same message (the code that defines how an object will react with respect to the message is called the method).
behaviors (OOP object behaviors)
Encapsulation is another name of this technique. It is the process of hiding or keeping private some parts of an object’s internal data operations.
data binding (OOP)
Is the ability to suppress unnecessary details.
abstraction (OOP)
Uses data types with define ranges; programmers must identify all data objects and their relationships using this technique. The object is then generalized into an object class, defined as part of a log sequence (method) used to manipulate an object.
data modeling (OOP)
Examples of this category include C++, Simula 67, and smalltalk.
languages (OOP)
Modularity in design through autonomous objects; definition of internal components without impacting other parts of the system; reusable components; and more readily maps to business needs.
Advantages of OOP
The ability of different objects with a common name to react to the same message or input with different output.
polymorphism
A process used to prevent data inference violations. It does this by enabling a relation to contain multiple tuples with the same primary keys with each instance distinguished by a security level. It prevents low-level database users from inferring the existence of higher level data.
polyinstantiation
In software development, this technique protects objects by preventing direct access to data that is in the object; makes it hard to apply the appropriate security policies to an object because it is hard to determine.
encapsulation
A term used to describe how many different tasks a module can carry out; if a module is limited (small number) or has a single function it is said to have high this quality.
cohesion
Changes can be made to the model without affecting the other modules; it makes reuse of the object easier.
high cohesion
Limiting the scope of a module’s operations.
How the highest cohesion achieved.
Refers to how much interaction one module requires from another module to do its job. If this is low or loose, it indicates a module does not need much help from other modules to do its job and a high value means it needs more help.
coupling
High cohesion and low coupling.
Best programming situation.
The logical relationship between elements of data. It describes the extent to which elements, methods of access, and processing alternatives are associated and the organization of data elements.
data structure
Systems whose components must be able to both locate each other and communicate on a network. When an application operates in a client/server framework the solution is performing this type of computing.
distributed object-orientated systems
Common Object Request Broker Architecture
CORBA
An open object-orientated standard developed by the Object Management Group (OMG).
Common Object Request Broker Architecture (CORBA)
CORBA is responsible for enforcing the security in four types of policies:
- Access control; 2. Data protection; 3. Non-repudiation; and 4. Auditing
It accepts requests for service from the client application, directs the request to the server, then relays the response back to the client application. It can be used for objects written in different languages.
CORBA
A model for communication between processes on the same computer.
Component Object Model (COM)
A model used for communication between processes in different parts of the network.
Distributed Component Object Model (DCOM)
This works as middleware between remote processes; also referred to as interprocess communication (IPC).
The function of DCOM.
Services provided by DCOM.
- Data connectivity; 2. Message services; 3. Distributed transaction services. These functions are integrated into one technology that uses the same interface as COM.
A method for sharing object on a local computer that uses COM as its foundation. It is described as the predecessor of COM. It allows objects to be embedded into spreadsheets and graphics.
Object Linking and Embedding (OLE)
Placement of data into a foreign program or document.
embedding
Relationship between one program and another.
linking
A distributed component mode; its framework is used to develop software that provides APIs for networking services and uses interprocess communication process that is based on CORBA.
Java Platform Enterprise Edition (J2EE)
To provide a standard method of providing a back-end code that carries out business logic for enterprise applications.
J2EE goals
An approach that provides web-based communication functionality without requiring redundant code to be written per application. It uses standard interfaces and components called service brokers to facility communication among web-based applications.
Service Orientated Architecture (SOA)
Instructions passed across a network and executed on a remote system. As a security concern, it can be remotely executed without the user’s knowledge.
mobile code
A small component created using Java that runs in a web browser. It is platform independent and creates intermediate code called “byte code.” As a security issue, these have the potential to download loose code.
Java applet
It resides on the destination machine and converts byte code to machine code. It executes Java applets in a sandbox called the Java Security Mode (JSM). This helps to mitigate malicious code but cannot completely stop it.
JVM
A Microsoft technology that uses object-orientated programming (OOP) and is based on COM and DCOM. It uses “authenticode” technology to digitally sign controls, which can become malicious if the user has Admin rights.
Active X
Most suspicious: Java applets or Active X?
Active X
The Five Phases of software development.
- Initiate. 2. Acquire and develop. 3. Implement. 4. Operate and maintain. 5. Dispose