SDL Secure Software Development Practices 2 — Questions and Answers
Question 1: Which SDL activity is specifically designed to identify security vulnerabilities by having experts manually examine code without executing it?
- Dynamic analysis
- Fuzz testing
- Static code analysis (Correct answer)
- Penetration testing
Correct answer: Static code analysis
Static code analysis examines source code without executing it to find vulnerabilities like buffer overflows, injection flaws, and insecure API usage.
Question 2: In SDL, what is the primary purpose of an 'abuse case' during requirements gathering?
- To document expected user workflows
- To describe how an attacker might misuse the system (Correct answer)
- To list software defects found in testing
- To specify performance benchmarks
Correct answer: To describe how an attacker might misuse the system
Abuse cases describe malicious or unintended uses of a system, helping teams design defenses against specific attack patterns during early requirements phases.
Question 3: Which cryptographic practice is mandated by SDL to ensure sensitive data remains protected if a single algorithm is broken?
- Using only symmetric encryption
- Implementing cryptographic agility (Correct answer)
- Hardcoding encryption keys in source
- Relying solely on transport-layer security
Correct answer: Implementing cryptographic agility
Cryptographic agility allows systems to swap out algorithms without major redesign, ensuring resilience when cryptographic weaknesses are discovered.
Question 4: During SDL's Verification phase, what does 'attack surface review' primarily assess?
- The number of code lines reviewed
- All user-accessible entry points that attackers could exploit (Correct answer)
- The performance of encryption routines
- Compliance with coding style guidelines
Correct answer: All user-accessible entry points that attackers could exploit
Attack surface review inventories all exposed interfaces, APIs, data inputs, and protocols to ensure unnecessary entry points are eliminated before release.
Question 5: What SDL principle requires that components operate with only the permissions necessary to perform their intended function?
- Defense in depth
- Least privilege (Correct answer)
- Separation of duties
- Security by obscurity
Correct answer: Least privilege
Least privilege limits the access rights of processes and users to the minimum needed, reducing the blast radius if a component is compromised.
Question 6: In SDL threat modeling, what does STRIDE stand for?
- Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege (Correct answer)
- System, Threat, Risk, Integrity, Defense, Encryption
- Scanning, Testing, Review, Intrusion, Detection, Evaluation
- Security, Trust, Resilience, Isolation, Detection, Encryption
Correct answer: Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege
STRIDE is Microsoft's threat classification model used in SDL to systematically identify six categories of security threats during design.
Question 7: Which SDL practice involves deliberately injecting malformed or random data into application inputs to discover crashes and vulnerabilities?
- Code review
- Threat modeling
- Fuzz testing (Correct answer)
- Security training
Correct answer: Fuzz testing
Fuzz testing (fuzzing) automatically generates unexpected inputs to trigger unhandled errors, crashes, or security vulnerabilities in software.
Which SDL activity is specifically designed to identify security vulnerabilities by having experts manually examine code without executing it?