Software Development Security

Integrating security into the software lifecycle to prevent vulnerabilities through design, coding, testing, and deployment practices.

Introduction

This domain focuses on embedding security throughout the Software Development Life Cycle (SDLC), including requirements, design, implementation, testing, deployment, and maintenance phases.

For ICT professionals, most vulnerabilities originate during development. Applying secure design and coding practices early reduces risk, cost, and complexity later.

Outcome 1

Understand secure SDLC models and practices.

Outcome 2

Identify and prevent common software vulnerabilities.

Outcome 3

Apply testing and review techniques to ensure security.

Figures

Secure SDLC

Design
Build
Test
Deploy
Operate
Improve

Security Testing Types

SAST
DAST
IAST
RASP
Fuzzing
Code Review

Case Examples

SQL Injection

Improper input validation allows attackers to manipulate database queries and access or modify sensitive data.

  • Use parameterized queries
  • Validate input properly

Vulnerable Dependency

Using outdated libraries introduces known vulnerabilities into applications, allowing attackers to exploit publicly documented weaknesses.

  • Use dependency scanning
  • Maintain updates

Glossary (50 Terms)

#TermDefinition
1SDLCThe structured process of planning, designing, building, testing, deploying, and maintaining software systems with integrated security practices.
2Secure CodingPractices that ensure software is written to prevent vulnerabilities such as injection, buffer overflows, and improper input handling.
3Threat ModelingA process used during design to identify potential threats, vulnerabilities, and mitigations before implementation begins.
4SASTStatic Application Security Testing analyzes source code without execution to identify vulnerabilities early in the development process.
5DASTDynamic Application Security Testing evaluates running applications to identify vulnerabilities during execution.
6IASTInteractive Application Security Testing combines static and dynamic techniques by analyzing applications during runtime with instrumentation.
7RASPRuntime Application Self-Protection monitors application behavior and blocks attacks during execution in real time.
8Fuzz TestingTesting technique that sends random or malformed input to identify unexpected behavior and vulnerabilities.
9Code ReviewManual or automated examination of source code to identify security flaws and ensure adherence to secure coding standards.
10Input ValidationEnsuring that user input is properly checked and sanitized to prevent injection and other attacks.
11Output EncodingEncoding data before output to prevent injection attacks such as cross-site scripting.
12Authentication LogicCode that verifies user identity and must be implemented securely to prevent bypass or exploitation.
13Session ManagementHandling user sessions securely, including session tokens, expiration, and protection against hijacking.
14Dependency ManagementManaging third-party libraries to ensure they are secure and up to date.
15OWASP Top 10A widely recognized list of common web application security risks used as a guideline for secure development.
16Buffer OverflowA vulnerability where data exceeds allocated memory, potentially allowing execution of malicious code.
17SQL InjectionAn attack that manipulates database queries through unsanitized input to access or modify data.
18XSSCross-site scripting allows attackers to inject malicious scripts into web applications viewed by other users.
19CSRFCross-site request forgery tricks users into performing unintended actions on authenticated applications.
20Secure DesignIncorporating security principles into system architecture from the beginning of development.
21DevSecOpsIntegrating security practices into DevOps workflows to ensure continuous security throughout development.
22CI/CDContinuous integration and deployment pipelines that automate building, testing, and deploying software.
23Code SigningUsing digital signatures to verify the authenticity and integrity of software code.
24Secure BuildEnsuring that build processes are protected against tampering and produce trusted outputs.
25Secrets ManagementSecure handling of credentials such as API keys and passwords within applications.
26Static AnalysisAnalyzing code without execution to identify vulnerabilities and coding issues.
27Dynamic AnalysisAnalyzing applications during execution to detect runtime vulnerabilities.
28Software AssuranceConfidence that software is free from vulnerabilities and functions as intended securely.
29Security RequirementsDefined security expectations that must be met during software development.
30Secure APIDesigning APIs with proper authentication, validation, and access controls to prevent misuse.
31Microservices SecurityProtecting distributed services through secure communication and isolation.
32Container SecurityEnsuring containers are securely configured and isolated from other environments.
33Supply Chain SecurityProtecting software from vulnerabilities introduced through third-party components or processes.
34Vulnerability ManagementIdentifying, prioritizing, and fixing software vulnerabilities throughout its lifecycle.
35Patch ManagementApplying updates to fix software vulnerabilities and improve security.
36Security TestingEvaluating applications to identify vulnerabilities and weaknesses.
37Secure DeploymentEnsuring applications are deployed in hardened and secure environments.
38LoggingRecording application events to support monitoring and incident investigation.
39MonitoringObserving application behavior to detect anomalies and threats.
40Secure ConfigurationApplying secure settings to systems and applications to reduce attack surface.
41HardeningReducing vulnerabilities by disabling unnecessary features and applying secure configurations.
42Secure DefaultsDesigning systems with secure configurations enabled by default.
43Error HandlingManaging errors securely to avoid revealing sensitive information.
44Code QualityMaintaining high standards in code to reduce bugs and vulnerabilities.
45Security ReviewEvaluating software for compliance with security requirements and best practices.
46Penetration TestingSimulating attacks against applications to identify exploitable vulnerabilities.
47ComplianceEnsuring software meets regulatory and organizational security standards.
48Security ArchitectureDesigning application structures that enforce security principles and controls.
49Continuous ImprovementIteratively improving software security based on testing results and emerging threats.
50Secure LifecycleIntegrating security practices throughout all phases of software development and maintenance.