Domain 8: Software Development Security Flashcards

1
Q

Extreme Programming (XP)

A

Introduces the use of integrated teams including developers,
customers, and managers to drive the delivery of high-value software features.
- Utilizes a concept known as pair programming, which pairs developers. The developers take turns writing
code and offering advice/input, with the goal of achieving higher quality code by providing extra oversight and
knowledge to draw upon.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Test-Driven Development (TDD)

A

First a test is written, then it is run. If it fails, code is written or refactored as needed to make the test succeed; the ultimate goal is to ensure that all tests pass.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

DevOps Phases (8)

A
  • Plan
  • Code
  • Build
  • Test
  • Release
  • Deploy
  • Operate
  • Monitor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

DevSecOps Manifesto (9 canons)

A

• Leaning in - over Always Saying “No”
• Data & Security Science - over Fear, Uncertainty and Doubt
• Open Contribution & Collaboration - over Security-Only Requirements
• Consumable Security Services with APIs - over Mandated Security Controls & Paperwork
• Business Driven Security Scores - over Rubber Stamp Security
• Red & Blue Team Exploit Testing - over Relying on Scans & Theoretical Vulnerabilities
• 24x7 Proactive Security Monitoring - over Reacting after being Informed of an Incident
• Shared Threat Intelligence - over Keeping Info to Ourselves
• Compliance Operations - over Clipboards & Checklists

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Capability Maturity Model Integration (5 Maturity Levels)

A
  1. Initial - Processes are unpredictable and largely reactive.
  2. Managed - Processes are characterized or documented for projects and are often reactive.
  3. Defined - Processes are characterized for the organization and are proactive.
  4. Quantitatively managed - Processes are measured and controlled by the measurements.
  5. Optimizing - The organization focuses on process improvement.
  • run by ISACA
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

The Software Assurance Maturity Model (SAMM) - 5 Phases

A

SAMM is a prescriptive framework for implementing a software security program and focuses on integrating security activities into an existing SDLC.
1. Governance
2. Design
3. Implementation
4. Verification
5. Operations

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Building Security-In Maturity Model (BSIMM) - 4 Domains

A

Focused on determining the current state of secure software creation capabilities, identifying improvement opportunities, and prioritizing efforts to improve secure software development.
 Governance
 Intelligence
 Software Security Development Lifecycle (SSDL)
 Deployment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cybersecurity Maturity Model Certification (CMMC) - 5 Maturity Levels

A

CMMC is designed for contractors who are handling sensitive information, known as controlled unclassified information (CUI), on behalf of government clients.
1. Initial - Processes are unpredictable and largely reactive.
2. Managed - Processes are characterized or documented for projects and are often reactive.
3. Defined - Processes are characterized for the organization and are proactive.
4. Quantitatively managed - Processes are measured and controlled by the measurements.
5. Optimizing - The organization focuses on process improvement.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Compiled Programming Languages

A

Are translated into machine-readable form before being run in a process known as compiling.
- Doesn’t expose source code
- C# and Swift are examples of compiled languages.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Interpreted Programming Languages

A

Are translated into machine readable format when they are run, also known as on the fly. This makes interpreted code more portable across system types.
- Exposes source code and requires additional operational overhead.
- JavaScript and Python are examples of interpreted languages.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Static Type Checking

A

Performed by a compiler to verify if the program’s functionality matches type constraints for data inputs.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Dynamic Type Checking

A

Checks the values stored in a program’s variables as it is running to ensure data matches the expected type.
- Languages that implement these features are known as type-safe, and they support important security goals related to integrity of data.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Declarative Programming

A

Expresses the logic of a task without describing how it should be executed; in these languages, a system must interpret the logic and execute appropriate tasks.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Imperative paradigm of programming

A

Uses statements or commands that change a program’s state, similar to issuing imperative commands in human languages like “stand up” or “study for the CISSP.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Procedural programming

A

Related to the imperative paradigm and is based on the concept of a program calling procedures, which are similar to routines or subroutines.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Block structured programming

A

Languages utilize bocks as an organizational unit; the scope of program elements like variables and functions is restricted to the block to prevent conflicts with other elements elsewhere in the code.

17
Q

Object-oriented programming (OOP)

A

Instead of writing specific commands to gather input data and perform procedures on it, OOP treats both data and functions as objects, known as classes, which can be linked together through defined interactions.

18
Q

Encapsulation

A

This is also known as data hiding and is effectively a way of isolating data from being accidentally mishandled. Direct access to a class can be denied to external objects, thereby restricting access to only approved functions known as methods.

19
Q

Inheritance

A

Classes of data objects can have subclasses that inherit some or all of the main class’s characteristics, such as access restrictions.

20
Q

Polymorphism in Programming

A

This term refers to the multiple (poly) forms (morphs) an object may take when being created or instantiated. Instantiating a new object from an existing object typically duplicates the attributes and methods of the existing object, but data of a different type may cause security concerns because the new data type requires different methods.

21
Q

Polyinstantiation

A

This term means making multiple (poly) copies (instances) of an object, typically with the goal of supporting different levels of confidentiality and integrity for that object.

22
Q

Hypertext Markup Language (HTML)

A

Specifies layout or display elements of text delivered to a web browser.

23
Q

Cascading Style Sheets (CSS)

A

Allows definition for how a web document should be styled for display, including fonts, color, and layout/spacing of elements on the page.

24
Q

JavaScript

A

Provides interactive applications inside a web browser on a client system, often for displaying and manipulating data on the user’s screen.

25
Q

Python

A

A high-level interpreted language that can be used for a variety of uses ranging from small personal programs to large web applications.

26
Q

Static application security testing (SAST)

A

SAST evaluates source code and other nonrunning application elements like compiled binaries. Testing is performed in development or testing environments, which means there is no impact to live production environments.

27
Q

Dynamic application security testing (DAST)

A

They can typically run against any application with an interface or API regardless of underlying language and are not as tightly integrated with an IDE, which means access is easier for non developers.

28
Q

Interactive application security testing (IAST)

A
  • Combines elements of SAST, DAST, and penetration testing, often using complex algorithms and machine learning to analyze source code and correlate vulnerabilities discovered during dynamic testing
29
Q

Runtime application self-protection (RASP)

A

Executes alongside the application as it is run; RASP is also less of a testing tool but is often incorporated into overall application security to complement SAST and DAST. A RASP security tool integrates with an application and analyzes the program’s execution to spot unusual or unexpected behavior, and then it takes corrective action.