Podcast
Questions and Answers
Which of the following is a key characteristic of a buffer overflow?
Which of the following is a key characteristic of a buffer overflow?
- Writing more data to a buffer than it can hold. (correct)
- Reading data from a buffer without proper authorization.
- Cryptographic key mismanagement.
- Executing code in a privileged CPU mode.
Using strcpy
is a recommended approach to prevent buffer overflows.
Using strcpy
is a recommended approach to prevent buffer overflows.
False (B)
What is the primary goal of a stack overflow attack?
What is the primary goal of a stack overflow attack?
To overwrite the return address on the stack.
A heap overflow corrupts heap ______.
A heap overflow corrupts heap ______.
Match the following security mechanisms with their purpose:
Match the following security mechanisms with their purpose:
What is the primary difference between an information security policy and a procedure?
What is the primary difference between an information security policy and a procedure?
Digital signatures ensure both message confidentiality and integrity.
Digital signatures ensure both message confidentiality and integrity.
What cryptographic key is used to create a digital signature?
What cryptographic key is used to create a digital signature?
A primary weakness of digital signatures is private key ______.
A primary weakness of digital signatures is private key ______.
Match the term with its definition:
Match the term with its definition:
Which of the following is an example of an unsafe feature in C/C++ that can lead to security vulnerabilities?
Which of the following is an example of an unsafe feature in C/C++ that can lead to security vulnerabilities?
Java's garbage collection helps prevent memory leaks and dangling pointers.
Java's garbage collection helps prevent memory leaks and dangling pointers.
What is a common C++ technique to violate type safety and access private fields of an object?
What is a common C++ technique to violate type safety and access private fields of an object?
_______ abstraction provides separation between hardware, OS, language runtime, and apps.
_______ abstraction provides separation between hardware, OS, language runtime, and apps.
Match the following terms with their definitions related to access control:
Match the following terms with their definitions related to access control:
Which of the following is the best definition of a threat in the context of software security?
Which of the following is the best definition of a threat in the context of software security?
Threat modeling is a process of randomly guessing potential security threats.
Threat modeling is a process of randomly guessing potential security threats.
What does the acronym STRIDE stand for in threat modeling?
What does the acronym STRIDE stand for in threat modeling?
In the DREAD model, 'D' stands for _______.
In the DREAD model, 'D' stands for _______.
Match the following security countermeasures with the threats they mitigate:
Match the following security countermeasures with the threats they mitigate:
Flashcards
Buffer Overflow
Buffer Overflow
Occurs when more data is written to a buffer than it can hold, overwriting adjacent memory.
Stack Overflow
Stack Overflow
Writing past the buffer on the stack and overwrites the return address.
Heap Overflow
Heap Overflow
Corrupting the heap memory management structures.
Information Security Policy
Information Security Policy
Signup and view all the flashcards
Digital Signatures
Digital Signatures
Signup and view all the flashcards
Memory Safety
Memory Safety
Signup and view all the flashcards
Type Safety
Type Safety
Signup and view all the flashcards
Type Soundness
Type Soundness
Signup and view all the flashcards
Layered Abstraction
Layered Abstraction
Signup and view all the flashcards
Least Privilege
Least Privilege
Signup and view all the flashcards
Threat
Threat
Signup and view all the flashcards
Threat Modelling
Threat Modelling
Signup and view all the flashcards
STRIDE
STRIDE
Signup and view all the flashcards
DREAD Model
DREAD Model
Signup and view all the flashcards
Study Notes
- These are study notes based on a sample exam.
Buffer Overflows
- A buffer overflow happens when a buffer receives more data than it can store, overwriting adjacent memory locations.
- Key elements include the absence of bounds checking on memory buffers and the use of low-level memory access, such as in C/C++.
- Types include stack overflows, heap overflows, and format string attacks.
- Exploitation involves input exceeding buffer size, overwriting the return address with a pointer to malicious code, leading to the execution of attacker's code upon return.
- Prevention strategies are input validation and bounds checking, utilizing bounds-checked functions like strncpy, compiler protections like stack canaries, DEP, ASLR, and employing memory-safe languages like Java or Python.
Information Security Policies & Digital Signatures
- An information security policy constitutes a formal document outlining rules for information protection, covering access control, acceptable use, password rules, and incident response.
- An example includes a password policy mandating strong passwords and regular rotation.
- Distinctions between policy and procedure lie in the "what" (policy) versus the "how" (procedure).
- Digital signatures ensure message integrity and authentication through the use of private/public keys.
- The process involves hashing a message, encrypting the hash with the sender's private key to form a signature and the receiver then hashes the message, decrypts the signature using the sender's public key, and confirms integrity if the hashes match.
- Weaknesses include private key theft and reliance on a trusted Public Key Infrastructure (PKI).
Programming Language Safety & Type Soundness
- Memory safety prevents access to memory outside valid bounds.
- Type safety ensures variables are used consistently with their declared type.
- Type soundness guarantees type rules are maintained during execution.
- Unsafe features include pointer arithmetic (in C/C++) addressed by bounds-checked structures, and manual memory management that can be improved with garbage collection.
- An example of a C++ type violation is casting an object to access private fields, like reinterpreting an object's memory as a long to directly set a value.
- Java offers protections: no pointer arithmetic, array bounds checks, and automatic garbage collection.
Abstractions & Least Privilege
- Layered abstraction involves separation between hardware, OS, language runtime, and applications.
- Each layer enforces boundaries and policies.
- Example failures include a stack overflow crossing into the OS level or a VM escape compromising the host OS.
- Least privilege dictates that users and software should have only the minimum permissions required.
- Examples provided include non-root web server user accounts, Role-Based Access Control (RBAC) within applications, and code sandboxing techniques.
- Each abstraction layer enforces limited access to lower layers.
Threats & Threat Modeling
- A threat represents a potential event or actor that can exploit vulnerabilities.
- Threat modeling identifies and prioritizes security threats in a system.
- STRIDE is a model for classifying threats: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege.
- The threat modeling process involves identifying assets, diagramming architecture, decomposing the application, identifying threats using models like STRIDE, documenting threats and mitigations, and rating threats using DREAD.
- Example countermeasures: HTTPS for eavesdropping, input validation for injection attacks, and strong authentication for spoofing.
- DREAD model components: Damage, Reproducibility, Exploitability, Affected users, Discoverability.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.