Software vulnerabilities remain one of the primary attack vectors in cybersecurity. The Secure Software Development Framework (SSDF) provides a structured set of practices for integrating security into the entire software development lifecycle, from organizational preparation through vulnerability response (National Institute of Standards and Technology [NIST], 2022).

Document Background

SP 800‑218 was published in February 2022 by the NIST Computer Security Division. Version 1.1 of the SSDF consolidates and maps existing secure development practices from sources including BSA's Framework for Secure Software, OWASP's Software Assurance Maturity Model (SAMM), the Building Security In Maturity Model (BSIMM), and the ISO/IEC 27034 series on application security (NIST, 2022).

The SSDF is technology‑agnostic. It does not prescribe specific tools, programming languages, or development methodologies. Whether an organization uses waterfall, agile, DevOps, or some hybrid approach, the SSDF practices apply. The framework is also scale‑agnostic: it is intended for use by organizations of any size, from a solo developer publishing an open‑source library to a large enterprise with thousands of developers (NIST, 2022).

Why It Matters

The SSDF moved from a voluntary best‑practice guide to a de facto requirement when Executive Order 14028 (May 2021) directed federal agencies to require software suppliers to attest to following secure development practices consistent with NIST guidance. If your software is sold to the federal government, SSDF compliance is now a procurement expectation, not a suggestion.

Why Secure Development Matters

Historically, many organizations treated software development and security as separate disciplines. Developers built software, then a security team reviewed it at the end (if at all). This approach consistently fails because vulnerabilities introduced early in development are expensive and difficult to fix later. A design flaw discovered in production can cost orders of magnitude more to remediate than one caught during design review (NIST, 2022).

The SSDF addresses this by embedding security practices throughout the lifecycle rather than bolting them on at the end. This is sometimes described as “shifting left,” meaning security considerations move earlier (leftward) in the development timeline. But the SSDF goes further than just shifting left: it also addresses organizational readiness, ongoing maintenance, and post‑deployment vulnerability response (NIST, 2022).

The consequences of insecure software are not abstract. Supply chain attacks like the SolarWinds compromise (2020) and the Log4Shell vulnerability (2021) demonstrated that a single flaw in a widely used software component can cascade across thousands of organizations. These incidents were a direct catalyst for the executive actions that elevated the SSDF from guidance to expectation.

The Cost Curve

Research consistently shows that the cost of fixing a vulnerability increases dramatically as it moves through the development lifecycle. A security flaw caught during requirements or design may cost a few hours of developer time to address. The same flaw discovered in production can require emergency patches, incident response, customer notification, and reputational damage management. Secure development is an investment that reduces total cost of ownership.

The Four Practice Groups

The SSDF organizes its guidance into four practice groups. Each group addresses a different phase or aspect of secure software development. Within each group, there are specific practices, and each practice contains tasks that describe what an organization should do (NIST, 2022).

The four SSDF practice groups with descriptions and example practices (NIST, 2022)
Practice Group Abbreviation Purpose Example Practices
Prepare the Organization PO Ensure the organization's people, processes, and technology are prepared to perform secure software development. Define security requirements, implement supporting toolchains, define and use criteria for software security checks, create secure development roles
Protect the Software PS Protect all components of the software from tampering and unauthorized access. Protect all forms of code from unauthorized access and tampering, provide a mechanism for verifying software release integrity, archive and protect each software release
Produce Well‑Secured Software PW Produce well‑secured software with minimal vulnerabilities in its releases. Design software to meet security requirements, review and analyze code for vulnerabilities, test executable code for vulnerabilities, configure software to have secure settings by default
Respond to Vulnerabilities RV Identify residual vulnerabilities in software releases and respond appropriately. Identify and confirm vulnerabilities on an ongoing basis, assess and prioritize each vulnerability, remediate vulnerabilities, analyze root causes

The four groups form a logical progression: first prepare the organization, then protect the software artifacts, then produce secure code, and finally respond to vulnerabilities that are discovered after release. However, these groups are not strictly sequential. In practice, activities from all four groups occur continuously throughout the development lifecycle (NIST, 2022).

Key Practices Within Each Group

Prepare the Organization (PO)

The Prepare group establishes the foundation. Without organizational commitment, trained personnel, and appropriate tooling, the remaining groups cannot succeed. Key practices in this group include (NIST, 2022):

  1. PO.1: Define Security Requirements

    Identify and document security requirements for the organization's software development infrastructure and processes. These requirements should cover secure coding practices, use of approved tools, configuration standards, and compliance obligations. Requirements should be revisited as threats evolve.

  2. PO.2: Implement Roles and Responsibilities

    Ensure that everyone involved in software development understands their security responsibilities. This includes developers, testers, architects, product managers, and executives. Security is not solely the security team's job; it is a shared responsibility across all roles.

  3. PO.3: Implement Supporting Toolchains

    Use automation to reduce human error and enforce consistent security practices. This includes static analysis tools, dependency scanners, software composition analysis, secrets detection, and automated testing in CI/CD pipelines.

Protect the Software (PS)

The Protect group focuses on safeguarding the software itself, including source code, build systems, and release artifacts, from tampering and unauthorized access (NIST, 2022).

  1. PS.1: Protect All Forms of Code

    Source code, build scripts, configuration files, and infrastructure‑as‑code templates all require access controls and integrity protection. Unauthorized modification of any of these components can introduce vulnerabilities or backdoors.

  2. PS.2: Verify Software Integrity

    Provide mechanisms (such as cryptographic signing and hash verification) for consumers to verify that software has not been tampered with between the producer and the consumer. This directly addresses supply chain risks.

  3. PS.3: Archive and Protect Releases

    Maintain archives of each software release, including all associated artifacts (source code, build configurations, dependencies, test results). This enables forensic analysis, reproducible builds, and vulnerability investigation after deployment.

Produce Well‑Secured Software (PW)

The Produce group addresses the activities that result in software with fewer vulnerabilities. This is where secure coding, code review, and security testing live (NIST, 2022).

  1. PW.1: Design Software to Meet Security Requirements

    Use threat modeling, attack surface analysis, and secure design principles to architect software that resists attack. Security should be a design constraint, not an afterthought.

  2. PW.5: Review Code for Security Vulnerabilities

    Conduct both manual code review and automated static analysis. Manual review catches logic errors and design flaws that tools miss. Automated analysis catches common vulnerability patterns at scale.

  3. PW.6: Test for Vulnerabilities

    Perform dynamic analysis, penetration testing, and fuzz testing against the running software. Static analysis examines code without executing it; dynamic analysis examines the software's behavior at runtime. Both are necessary.

Respond to Vulnerabilities (RV)

The Respond group acknowledges that no software is released without flaws. Even the most rigorous development process will produce software with undiscovered vulnerabilities. The goal is to identify and remediate them quickly (NIST, 2022).

  1. RV.1: Identify and Confirm Vulnerabilities

    Establish processes for receiving and triaging vulnerability reports, whether from internal testing, automated monitoring, bug bounty programs, or external researchers. Have a clear intake process and response timeline.

  2. RV.2: Assess, Prioritize, and Remediate

    Not all vulnerabilities are equally urgent. Use a risk‑based approach to prioritize remediation based on severity, exploitability, and impact. Develop and distribute patches or mitigations in a timely manner.

  3. RV.3: Analyze Root Causes

    When vulnerabilities are found, investigate why they occurred. Was it a training gap? A missing tool? A flawed design pattern? Root cause analysis feeds back into the Prepare group, creating a continuous improvement loop.

EO 14028 and Procurement

Executive Order 14028, signed in May 2021, fundamentally changed the SSDF's status. The order directed NIST to issue guidance identifying secure software development practices and required federal agencies to obtain attestations from software suppliers that they follow those practices (NIST, 2022).

In practice, this means that any software vendor selling to the U.S. federal government must now be prepared to attest that their development practices align with the SSDF. The Office of Management and Budget (OMB) issued Memorandum M‑22‑18 and its revision M‑23‑16, which formalized the self‑attestation requirement and established timelines for compliance.

What Attestation Means

Self‑attestation is not a checkbox exercise. Vendors must affirm, through a senior executive signature, that they follow the SSDF practices. For critical software (software that runs with elevated privileges or controls access to data and systems), agencies may require additional evidence, including third‑party assessments or Software Bills of Materials (SBOMs). Misrepresentation on an attestation form can carry legal consequences.

The ripple effects extend beyond federal procurement. Many private‑sector organizations are adopting the SSDF voluntarily, either because they sell to federal customers downstream or because the framework represents genuine best practice. Insurance providers, industry regulators, and standards bodies are beginning to reference the SSDF as a benchmark for software security maturity.

How EO 14028 elevated the SSDF from guidance to requirement
Before EO 14028 After EO 14028
SSDF status Voluntary best‑practice guidance
SSDF status Referenced in federal procurement requirements; self‑attestation required
Vendor obligation None; adoption was optional
Vendor obligation Must attest to following secure development practices consistent with SSDF
SBOM requirement Not required
SBOM requirement May be required for critical software

Citing This Document (APA 7)

SP 800‑218 follows the standard APA 7 format for NIST technical publications. Note the version number (1.1) in the title, which distinguishes this revision from the original 1.0 release.

Format Demonstration
Reference list entry
National Institute of Standards and Technology. (2022). Secure software development framework (SSDF) version 1.1: Recommendations for mitigating the risk of software vulnerabilities (NIST Special Publication 800‑218). U.S. Department of Commerce. https://doi.org/10.6028/NIST.SP.800-218
First in‑text citation
(National Institute of Standards and Technology [NIST], 2022)
Subsequent in‑text citations
(NIST, 2022)
Narrative citation
The National Institute of Standards and Technology (NIST, 2022) organized the SSDF into four practice groups: Prepare the Organization, Protect the Software, Produce Well‑Secured Software, and Respond to Vulnerabilities.

References

  1. National Institute of Standards and Technology. (2022). Secure software development framework (SSDF) version 1.1: Recommendations for mitigating the risk of software vulnerabilities (NIST Special Publication 800‑218). U.S. Department of Commerce. https://doi.org/10.6028/NIST.SP.800‑218
  2. The White House. (2021). Executive Order 14028: Improving the nation's cybersecurity. Federal Register. https://www.federalregister.gov/documents/2021/05/17/2021‑10460
  3. Office of Management and Budget. (2022). Enhancing the security of the software supply chain through secure software development practices (Memorandum M‑22‑18). Executive Office of the President. https://www.whitehouse.gov/wp‑content/uploads/2022/09/M‑22‑18.pdf