Created by A F M Bakabillah
CISSP Domain 8, "Software Development Security," accounts for 11% of the CISSP exam. This domain focuses on integrating security into the entire software development lifecycle (SDLC). It covers secure coding practices, software security testing, and the secure acquisition and deployment of software, aiming to minimize vulnerabilities from the design phase through deployment and maintenance.
This section emphasizes the importance of integrating security activities into every phase of the Software Development Life Cycle (SDLC).
Example: A development team adopting DevSecOps integrates static code analysis (SAST) tools into their continuous integration (CI) pipeline, automatically scanning code for vulnerabilities every time a developer commits changes. Before deployment, a penetration test is performed on the application to identify runtime vulnerabilities.
This section covers securing the tools, processes, and infrastructure used for software development.
Example: A software company uses a dedicated, segmented network for its development environment. All source code is stored in a secure code repository with strict access controls. Before deployment, the application undergoes both SAST (to find flaws in the code itself) and DAST (to find vulnerabilities in the running application), and SCA is used to check for vulnerabilities in third-party libraries.
This section focuses on various methods to evaluate the security posture of developed software.
Example: Before releasing a new version of their banking application, the security team conducts a penetration test to simulate real attacks. They also perform fuzzing on input fields to uncover unexpected crashes or vulnerabilities. Early in the design phase, they used threat modeling with the STRIDE methodology to identify potential threats like "Spoofing" of user identities and "Information Disclosure" of financial data.
This section covers best practices for developers to write secure code and avoid common vulnerabilities.
Example: To prevent SQL Injection, developers are mandated to use parameterized queries for all database interactions. For web forms, all user input is subjected to strict input validation, and any data displayed back to the user is properly output encoded to mitigate XSS attacks.
This section covers the security considerations when obtaining software, whether developing in-house or acquiring from third parties.
Example: When acquiring a new enterprise resource planning (ERP) system, the organization conducts thorough vendor risk management, including reviewing the vendor's security certifications. They also request a Software Bill of Materials (SBOM) to understand all components, including any open-source software libraries, and check for known vulnerabilities in those components using SCA tools.
Choose the best answer for each question.
Question 1:
B) As early as possible, during the requirements gathering phase.
Explanation: Integrating security requirements early in the SDLC (shift-left) is crucial, as it is much more cost-effective to address security flaws in the design phase than after deployment.
Question 2:
B) Static Application Security Testing (SAST)
Explanation: SAST tools analyze source code or compiled code without executing the application, identifying potential vulnerabilities like coding errors or insecure practices. DAST (A) and Penetration Testing (D) analyze running applications.
Question 3:
B) To identify, quantify, and address security risks in a system or application proactively.
Explanation: Threat modeling is a systematic approach to identifying potential threats and vulnerabilities in a system's design, allowing for proactive mitigation before implementation.
Question 4:
C) Injection
Explanation: Injection flaws (like SQL Injection) are prevented by treating all user input as data, not code, and using parameterized queries or prepared statements, along with strict input validation.
Question 5:
B) To provide a formal, machine-readable inventory of software components and their dependencies.
Explanation: An SBOM (Software Bill of Materials) lists all components, including open-source and third-party libraries, used in a software product, which is crucial for supply chain security and vulnerability management.
Question 6:
C) DevSecOps
Explanation: DevSecOps integrates security practices and automation into every stage of the DevOps pipeline, promoting a "shift-left" approach where security is considered from the very beginning.
Question 7:
B) To prevent Cross-Site Scripting (XSS) attacks by converting malicious characters into harmless entities.
Explanation: Output encoding ensures that data displayed to the user is rendered as literal text, preventing the browser from interpreting malicious scripts as executable code, thus mitigating XSS.
Question 8:
C) Fuzzing
Explanation: Fuzzing involves feeding large amounts of malformed, unexpected, or random data to a program's inputs to discover vulnerabilities like buffer overflows or crashes.
Question 9:
C) Inconsistent patching and potential for known vulnerabilities.
Explanation: While OSS offers transparency, it can suffer from inconsistent security patching and a lack of formal support, meaning known vulnerabilities in popular libraries might not be addressed promptly.
Question 10:
B) Dynamic Application Security Testing (DAST)
Explanation: DAST tools interact with a running application over its external interfaces (like a web browser), simulating attacks to find runtime vulnerabilities that might not be visible in the source code.
Question 11:
B) To ensure that all user-supplied data conforms to expected formats and ranges.
Explanation: Input validation is a fundamental secure coding practice that verifies all data received from external sources (e.g., user input, API calls) against a defined set of rules to prevent malicious input from being processed.
Question 12:
C) Broken Access Control
Explanation: Broken Access Control refers to flaws in an application's authorization mechanisms, allowing authenticated users to access resources or perform actions they are not authorized for.
Question 13:
C) To hold the software's source code by a neutral third party in case the vendor goes out of business or fails to support the software.
Explanation: An escrow agreement provides a safety net for organizations using critical third-party software, ensuring they can access the source code if the vendor can no longer support the product, preventing vendor lock-in and ensuring business continuity.
Question 14:
B) STRIDE
Explanation: STRIDE is a well-known threat modeling methodology developed by Microsoft, categorizing threats into Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege.
Question 15:
B) Exploiting insecurely configured servers, applications, or network devices.
Explanation: Security Misconfiguration covers a wide range of issues arising from insecure default configurations, incomplete configurations, open cloud storage, or unpatched systems, leading to exploitable vulnerabilities.
Question 16:
B) Interactive Application Security Testing (IAST)
Explanation: IAST tools combine the strengths of SAST and DAST by analyzing the application from within while it is running, providing more accurate and contextual vulnerability detection.
Question 17:
B) It allows tracking of changes to code and enables rollback to previous versions.
Explanation: Version control systems (like Git) are essential for managing source code, allowing developers to track every change, collaborate effectively, and revert to previous stable versions if issues arise.
Question 18:
B) Display generic error messages to end-users and log detailed errors securely.
Explanation: Revealing too much information in error messages (e.g., database errors, stack traces) can provide attackers with valuable insights into the application's internal workings. Generic messages for users and detailed logging for administrators is the secure approach.
Question 19:
B) Sensitive data being stored or transmitted without adequate protection.
Explanation: Sensitive Data Exposure refers to vulnerabilities where applications fail to properly protect sensitive information (e.g., credit card numbers, PII) at rest or in transit, making it vulnerable to unauthorized access.
Question 20:
C) Penetration Testing
Explanation: Penetration testing (or "pen testing") involves authorized, simulated cyberattacks against a system to evaluate its security by finding exploitable vulnerabilities.
Question 21:
B) Integrating security activities and testing earlier in the SDLC.
Explanation: The "shift-left" principle in DevSecOps advocates for moving security considerations and testing as early as possible in the software development lifecycle, making it more efficient and cost-effective to address vulnerabilities.
Question 22:
C) Implementing strong network segmentation and hardening developer workstations.
Explanation: Securing the development environment involves isolating development systems from production, hardening developer machines to prevent malware, and securing access to source code and build tools.
Question 23:
B) Remote code execution or denial-of-service attacks.
Explanation: Insecure deserialization can lead to remote code execution (RCE) by allowing an attacker to inject malicious objects into the application's deserialization process, or cause denial of service.
Question 24:
C) SCA (Software Composition Analysis)
Explanation: SCA tools are specifically designed to identify and inventory open-source and third-party components within a codebase and check them against databases of known vulnerabilities.
Question 25:
B) To integrate privacy considerations into the design and operation of IT systems from the outset.
Explanation: Privacy by Design is a concept that advocates for embedding privacy protections directly into the design and architecture of IT systems and business practices, rather than adding them as an afterthought.
Question 26:
C) Use strong, random, and expiring session IDs.
Explanation: Secure session management involves generating unpredictable, random session IDs, ensuring they are transmitted securely (e.g., over HTTPS), and setting appropriate expiration times to prevent session hijacking.
Question 27:
B) To reduce its attack surface by disabling unnecessary services and features.
Explanation: Hardening involves configuring a system to be more secure by removing or disabling unnecessary software, services, ports, and default configurations, thereby reducing the number of potential entry points for attackers.
Question 28:
B) XML External Entities (XXE)
Explanation: XXE vulnerabilities occur when an XML parser processes external entity references within XML documents, which can lead to information disclosure, server-side request forgery, or remote code execution.
Question 29:
B) To identify security vulnerabilities and logic flaws that automated tools might miss.
Explanation: Peer code reviews involve human inspection of source code, which can uncover complex security vulnerabilities, logical flaws, or design weaknesses that automated SAST tools might miss.
Question 30:
B) Ensuring the integrity and authenticity of the software package before deployment.
Explanation: Secure release management ensures that the software being deployed is the legitimate, untampered version, often by verifying digital signatures and checksums, and that it is deployed securely.