skip to content

NIST SSDF Practices

SP 800-218 sorts practices into Prepare the Organization, Protect the Software, Produce Well-Secured Software and Respond to Vulnerabilities. Interviewers want a gap assessment, not a checklist.

on this pageshow

questions

4

What are the four practice groups in the NIST SSDF (SP 800-218), and what does each cover?

level: juniorimportance: must knowfreq 62%

answer

  1. Four groups, four two-letter prefixes
  2. One group is about the organisation, not code
  3. One group is about the artifact itself
  4. One group starts after release
  5. Prepare, Protect, Produce, Respond

basics

~20 s

SSDF has four groups: Prepare the Organization (PO), Protect the Software (PS), Produce Well-Secured Software (PW), and Respond to Vulnerabilities (RV). They cover org readiness, protecting code and releases, building software securely, and handling flaws found after release.

solid answer

~50 s

NIST SP 800-218 organises secure development into four practice groups. **Prepare the Organization (PO)** is the org layer: define security requirements for development, assign roles and responsibilities, provide the supporting toolchain, define the criteria a security check has to pass, and maintain secure development and build environments (PO.5). **Protect the Software (PS)** guards the artifact itself: protect code from unauthorised access and tampering (PS.1), give consumers a way to verify release integrity (PS.2), and archive and protect each release (PS.3). **Produce Well-Secured Software (PW)** is the engineering work: design and design review, reusing well-secured third-party components (PW.4), secure coding, hardened build configuration (PW.6), code review and analysis (PW.7), testing, and secure defaults. **Respond to Vulnerabilities (RV)** is post-release: identify and confirm vulnerabilities on an ongoing basis, assess and remediate them, and analyse root causes. Every practice carries an ID, and under it numbered tasks such as PO.5.1.

go deeper

for a junior

Be able to name all four groups and give one concrete example of work in each. Knowing that PO is organisational and RV is post-release is usually enough to pass this screener.

for a middle

Expect to place a specific activity in the right group on demand: build environment integrity, release verification, dependency reuse, root-cause analysis. Explain the practice-and-task numbering as well as the group names.

for a senior

Be ready to walk an estate group by group and say honestly where the blanks are, and to explain why PO and RV are the groups engineering teams most often have no owner for.

for a principal

Own the framing that SSDF is a shared vocabulary between engineering, procurement and customers. Be able to argue which groups your organisation should invest in first given where its real exposure lies.

## What the SSDF is NIST Special Publication 800-218, the Secure Software Development Framework (SSDF), is a compact catalogue of secure-software-development *outcomes*. It is deliberately not a methodology, not a tool list and not a maturity model: it is a common vocabulary that a producer, a customer and an assessor can all point at when they argue about whether software was built responsibly. It matters far beyond NIST readers because government software-acquisition attestation requirements are written against SSDF practices, and because customers now quote practice IDs directly in questionnaires. The catalogue is arranged in four groups, and the split itself is the thing to understand: two of the groups are about the organisation and the artifact, one is about the code, and one is about life after release. ## PO - Prepare the Organization PO answers the question 'is this company set up to build software securely at all?' Its practices cover: - **PO.1** define security requirements for software development, and keep them current. - **PO.2** implement roles and responsibilities - somebody is named, trained and accountable. - **PO.3** implement supporting toolchains, and secure the toolchains themselves. - **PO.4** define and use criteria for software security checks - what has to pass, what evidence is gathered. - **PO.5** implement and maintain secure environments for software development, which is where build and development environment integrity lives. PO is the group teams most often leave blank, because none of it is visible in a repository. A team can be doing excellent engineering with no PO at all, and that is a real gap: nothing about it is defined, owned or repeatable across teams. ## PS - Protect the Software PS is about the artifact and the code as objects that can be tampered with: - **PS.1** protect all forms of code from unauthorised access and tampering. - **PS.2** provide a mechanism for verifying software release integrity - the outcome that artifact signing exists to serve. - **PS.3** archive and protect each software release, so that what you shipped can be produced again and inspected later. Note the direction of PS.2: it is about giving the *consumer* a way to check that what they received is what you released. SSDF states the outcome; how you achieve it is your choice. ## PW - Produce Well-Secured Software PW is the engineering group and the largest one. It covers designing software to meet its security requirements, reviewing that design, reusing existing well-secured software rather than writing risky code yourself (PW.4, which is where third-party component acquisition sits), writing source code to secure coding practices, configuring the compilation and build process to improve executable security (PW.6), reviewing or analysing human-readable code (PW.7), testing executable code, and shipping with secure settings by default. This is the group an engineer intuitively recognises, and the reason many people wrongly believe SSDF is 'a secure coding standard'. PW is one quarter of it. ## RV - Respond to Vulnerabilities RV covers what happens after the software is in someone else's hands: - **RV.1** identify and confirm vulnerabilities on an ongoing basis - including reports arriving from outside. - **RV.2** assess, prioritise and remediate them. - **RV.3** analyse vulnerabilities to identify root causes, and feed those back into PO and PW. RV is an organisational capability, not a code property. A team can score green on everything it can see in its own repository and blank on RV simply because there is no channel through which an outside finder can reach an engineer. ## How the document is structured Each practice has a name, an ID and a short explanation of why it matters. Under it are numbered **tasks** (PO.5.1, RV.2.1, and so on), each stating an action or outcome. Alongside the tasks the document gives **notional implementation examples** - illustrations, not requirements - and **references** into other published documents that describe the same expectation in more detail. When somebody cites 'PW.7.2' at you, they mean a specific task, and the task ID is the unit that a gap assessment and an attestation are both written against. ## Common confusions The groups are not sequential phases; PO and RV are continuous, and PS spans the whole life of a release. There are no levels, tiers or scores - SSDF says nothing about how mature you are, only whether an outcome is achieved and evidenced. And the framework is intentionally silent on tooling: two organisations can satisfy the same task in completely different ways, which is exactly why assessment turns on evidence rather than on a tool inventory.

  • Which group would a written, org-wide secure-development policy and a named security owner fall under?
    Prepare the Organization. PO.1 covers defining security requirements for development, PO.2 covers roles and responsibilities, and PO.4 covers the criteria a security check has to meet. All three are organisational artifacts that exist independently of any one codebase, which is why a team doing good work informally still shows a PO gap.
  • What does a task identifier like PO.5.1 actually denote?
    Three levels: the practice group (PO), the practice within it (PO.5, secure development and build environments), and a numbered task under that practice. Tasks are the smallest unit SSDF defines, so gap assessments, evidence records and attestations are all written per task ID rather than per group.
  • Where does dependency and third-party component risk sit in SSDF?
    Mostly in PW.4, reuse existing well-secured software when feasible, which covers how you acquire, evaluate and track components rather than how you write your own code. Ongoing discovery of new flaws in those components then lands in RV.1, because a dependency vulnerability disclosed after you ship is a vulnerability response problem.

Think of a restaurant inspection: the kitchen rules and staff training (PO), the sealed packaging and tamper tape (PS), how the dish is actually cooked (PW), and what happens when a diner reports getting sick (RV).

saying these in an interview costs you the question

  • Thinks SSDF only covers secure coding practices
  • Describes SSDF as a maturity model with levels
  • Treats the four groups as sequential lifecycle phases
  • Leaves vulnerability response outside the framework
  • Cannot say which group build-environment integrity sits in

context

open as a page

Why does the NIST SSDF state outcomes instead of prescribing tools or maturity levels?

level: middleimportance: should knowfreq 47%

basics

~20 s

SSDF has to fit every language, lifecycle and organisation size, so each task states an outcome and leaves the method open. Its implementation examples are illustrations, not requirements, and it defines no levels and no certification.

open as a page

In an SSDF gap assessment, PW work happens in code review but no PO process is written down - how do you score it?

level: seniorimportance: should knowfreq 41%

basics

~20 s

Score it partially met: the outcome happens but no defined, owned process produces it. Record the missing definition and missing evidence as the gap, because an undocumented habit is not repeatable and cannot be attested to.

open as a page

Your SSDF assessment finds every PO.5 secure-environment task sitting with a CI vendor nobody owns - what do you do?

level: principalimportance: nice to knowfreq 29%

basics

~20 s

Treat it as an ownership gap, not an absence of controls. Name an internal owner for the vendor relationship and map the vendor's evidence onto the PO.5 tasks. You may outsource the operation, never the attested outcome.

open as a page