1/36
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
⸻
Flashcard 1
Q: What is software security
A: Software security involves designing, developing, and maintaining software so that it defends against attacks and minimizes vulnerabilities.
⸻
Flashcard 2
Q: What is defensive programming
A: Defensive programming is a coding approach that anticipates potential errors or attacks by validating inputs, handling exceptions, and enforcing strict coding standards.
⸻
Flashcard 3
Q: What are common software vulnerabilities
A: Vulnerabilities include buffer overflows, injection flaws, race conditions, improper input validation, and insecure use of environment variables, among others.
⸻
Flashcard 4
Q: How does software security differ from software quality
A: While software quality focuses on functionality and performance, software security emphasizes protecting against threats and ensuring safe, predictable behavior.
⸻
Flashcard 5
Q: What defines secure software design
A: Secure software design integrates security principles from the start—using methods like threat modeling, proper input validation, and designing for least privilege—to create resilient systems.
⸻
Flashcard 6
Q: What are some principles of defensive programming
A: Key principles include validating all inputs, checking for error conditions, using secure defaults, and coding in a way that anticipates and mitigates potential attacks.
⸻
Flashcard 7
Q: What are the challenges in secure software development
A: Challenges include balancing security with functionality, handling complex input types, dealing with legacy code, and constantly evolving threat landscapes.
⸻
Flashcard 8
Q: Why is proper handling of program input critical
A: Because incorrect input handling can lead to vulnerabilities like injection attacks, buffer overflows, and misinterpretation of data that compromise security.
⸻
Flashcard 9
Q: What does “Buffer Overflow Revised” refer to
A: It’s an updated examination of buffer overflow vulnerabilities—highlighting how they occur, potential impacts, and revised strategies for prevention.
⸻
Flashcard 10
Q: What is input interpretation, and why is it important
A: Input interpretation is the process of analyzing and understanding incoming data. Incorrect interpretation can lead to vulnerabilities, such as misallocated memory or unexpected behavior.
⸻
Flashcard 11
Q: How does binary input interpretation differ from textual input interpretation
A: Binary input interpretation deals with raw data (often in non-readable formats) while textual interpretation handles human-readable data; both require careful validation to avoid security flaws.
‡
⸻
Flashcard 12
Q: What was the Heartbleed Bug
A: The Heartbleed Bug was a severe vulnerability in the OpenSSL cryptographic library that allowed attackers to read sensitive memory contents, exposing private data.
‡
⸻
Flashcard 13
Q: What are the risks of incorrect input interpretation
A: Misinterpretation can lead to security breaches by allowing malicious input to bypass validations, cause overflows, or enable code injections.
‡
⸻
Flashcard 14
Q: What does validating input syntax involve
A: It involves checking that input data conforms to expected formats, using methods like pattern matching and strict type checks to avoid injection attacks and other exploits.
‡
⸻
Flashcard 15
Q: How do regular expressions help in input validation
A: Regular expressions provide a powerful tool to define and enforce patterns for acceptable input, ensuring that only properly formatted data is processed.
‡
⸻
Flashcard 16
Q: What risks arise from multiple encodings in input data
A: Multiple encodings can obscure malicious content, making it harder to detect and leading to security bypasses if inputs aren’t normalized properly.
‡
⸻
Flashcard 17
Q: What is canonicalization, and why is it important
A: Canonicalization is the process of converting data to a standard, normalized form. It helps eliminate ambiguity that attackers might exploit by using alternate representations.
‡
⸻
Flashcard 18
Q: How can validating numeric inputs prevent overflows
A: By ensuring numeric values fall within expected ranges, you avoid arithmetic overflows that can lead to memory allocation errors or vulnerabilities in logic.
‡
⸻
Flashcard 19
Q: What is input fuzzing
A: Input fuzzing involves feeding unexpected or random data into a program to uncover vulnerabilities and unhandled exceptions before attackers can exploit them.
‡
⸻
Flashcard 20
Q: What are some common fuzzing approaches
A: Approaches include mutation-based fuzzing (modifying existing inputs) and generation-based fuzzing (creating inputs from scratch based on specifications).
‡
⸻
Flashcard 21
Q: What are the benefits and limitations of fuzzing
A: Fuzzing can uncover obscure bugs and vulnerabilities, but it may miss logical flaws and can be resource-intensive or produce false positives.
‡
⸻
Flashcard 22
Q: Why is correct algorithm implementation important in security
A: Even secure code can be compromised by flawed logic; ensuring algorithms are implemented correctly helps avoid unintended security holes.
‡
⸻
Flashcard 23
Q: What are algorithmic security flaws
A: These flaws stem from poor algorithm design or implementation, leading to vulnerabilities such as predictable behavior, inefficient handling of edge cases, or exploitable logic errors.
‡
⸻
Flashcard 24
Q: How can debugging features pose security risks
A: Debugging features might expose internal system details, sensitive data, or additional attack vectors if left enabled in production environments.
‡
⸻
Flashcard 25
Q: What does ensuring correct machine code execution involve
A: It means verifying that the compiled code executes as intended, without being altered by vulnerabilities that could lead to arbitrary code execution or security breaches.
‡
⸻
Flashcard 26
Q: Why is memory management crucial for software security
A: Proper memory management prevents issues like leaks, overflows, and corruption, which can be exploited to compromise a system.
‡
⸻
Flashcard 27
Q: How can concurrency and race conditions introduce vulnerabilities
A: Concurrency issues arise when multiple processes access shared resources unsafely, leading to race conditions where the outcome depends on unpredictable timing, potentially causing security breaches.
‡
⸻
Flashcard 28
Q: How does interacting with the operating system affect software security
A: OS interactions can expose system calls and environment details; insecure handling can allow attackers to escalate privileges or manipulate processes.
‡
⸻
Flashcard 29
Q: What risks are associated with execution environments and OS dependencies
A: Relying on specific OS features can introduce vulnerabilities if those features are outdated or misconfigured, affecting the overall security posture.
‡
⸻
Flashcard 30
Q: How can environment variables be exploited
A: Attackers may manipulate environment variables to alter program behavior, inject malicious configurations, or gain unauthorized access to sensitive information.
‡
⸻
Flashcard 31
Q: What vulnerabilities exist in shell scripts
A: Shell scripts may contain flaws like improper input handling, unquoted variables, and insecure temporary file use, all of which can be exploited to execute arbitrary commands.
‡
⸻
Flashcard 32
Q: How can race conditions in shared resources be prevented
A: Implementing proper synchronization mechanisms (like locks or semaphores) and careful resource management helps prevent conflicts and race conditions.
‡
⸻
Flashcard 33
Q: What constitutes secure use of temporary files
A: Secure temporary file use involves creating files with unique names, proper permissions, and ensuring they’re securely deleted to prevent unauthorized access.
‡
⸻
Flashcard 34
Q: What does safe interaction with other programs mean
A: It means ensuring that data exchanged between programs is validated, sanitized, and transmitted securely to prevent cross-program exploits.
‡
⸻
Flashcard 35
Q: What is output security, and why is it important
A: Output security ensures that data leaving a system is handled and formatted securely, preventing leakage of sensitive information or unintended disclosures.
‡
⸻
Flashcard 36
Q: What are output-based security attacks
A: These attacks exploit weaknesses in how systems handle output—such as improper encoding or formatting—to manipulate the data and potentially compromise security.
‡
⸻
Flashcard 37
Q: What are some best practices for secure output handling
A: Best practices include proper encoding, sanitizing outputs, following standardized protocols, and ensuring that sensitive data isn’t inadvertently exposed.