NIST SSDF Self-Assessment (SP 800-218)
The NIST Secure Software Development Framework (SSDF, SP 800-218) is a set of 19 secure software development practices in four groups: Prepare the Organization (PO), Protect the Software (PS), Produce Well-Secured Software (PW) and Respond to Vulnerabilities (RV). Rate each practice, and this tool gives you a score per group, a gap list and the practices behind each item on the CISA attestation form. Everything runs in your browser.
Rate each of the 19 practices: Not started, Partial (some tasks, some teams, or not written down), Implemented (done consistently and you could show the evidence) or N/A. Unrated practices count as not started. Open “Tasks and notes” to see the SSDF task IDs.
Prepare the Organization (PO)
People, processes and tools are ready for secure development, at organisation level and per project.
- PO.1Define Security Requirements for Software Development
Write down the security rules your development process, your build infrastructure and your software must meet, keep them current, and pass the relevant ones on to suppliers of components you reuse.
Example evidence: A secure development policy or standard; a security requirements baseline for products; supplier contract clauses or questionnaires covering secure development.
Tasks and notes
- PO.1.1 Document security requirements for your development infrastructure and processes, and keep them up to date.
- PO.1.2 Document security requirements the software you build must meet, and keep them up to date.
- PO.1.3 Tell third parties who supply commercial components what security requirements they must meet.
- PO.2Implement Roles and Responsibilities
Everyone who touches the software lifecycle knows their security duties, is trained for them, and leadership has visibly committed to secure development.
Example evidence: A RACI or role descriptions covering security in the SDLC; role-based secure development training records; a signed policy or leadership statement.
Tasks and notes
- PO.2.1 Define roles and responsibilities that cover the whole SDLC, and review them periodically.
- PO.2.2 Give role-based secure development training, and review proficiency and training periodically.
- PO.2.3 Get senior management commitment to secure development and communicate it.
- PO.3Implement Supporting Toolchains
Decide which security tools each pipeline must include, run those tools securely, and have them produce records that show the practices actually happened.
Example evidence: A toolchain standard (which scanners and checks run where); hardening and access settings for CI/CD and security tools; retained scan logs and pipeline artefacts.
Tasks and notes
- PO.3.1 Specify which tools or tool types each toolchain must include and how they fit together.
- PO.3.2 Deploy, operate and maintain the tools and toolchains securely.
- PO.3.3 Configure tools to produce artefacts that show secure development practices were followed.
- PO.4Define and Use Criteria for Software Security Checks
Set clear pass or fail criteria for security checks during development (for example, no unresolved critical findings at release) and collect the data to show whether each release met them.
Example evidence: Documented release gates or security acceptance criteria; pipeline policy checks; dashboards or reports showing gate results per release.
Tasks and notes
- PO.4.1 Define criteria for software security checks and track them throughout the SDLC.
- PO.4.2 Gather and safeguard the information needed to show the criteria are met.
- PO.5Implement and Maintain Secure Environments for Software Development
Separate and protect development, build, test and distribution environments, and harden the laptops and workstations developers use.
Example evidence: Network or account separation between environments; MFA and conditional access on source control and CI; endpoint hardening baselines for developer machines; access reviews and audit logs.
Tasks and notes
- PO.5.1 Separate and protect each environment involved in software development.
- PO.5.2 Secure and harden development endpoints using a risk-based approach.
Protect the Software (PS)
Code and releases are protected from tampering and unauthorised access.
- PS.1Protect All Forms of Code from Unauthorized Access and Tampering
Store source code, built code and configuration-as-code with least-privilege access, so only authorised people, tools and services can read or change it.
Example evidence: Repository permission model and access reviews; branch protection with required reviews; signed commits where used; audit logs of repository changes.
Tasks and notes
- PS.1.1 Store all forms of code on a least-privilege basis so only authorised people, tools and services have access.
- PS.2Provide a Mechanism for Verifying Software Release Integrity
Give the people who obtain your software a way to check that what they received is what you released, such as published hashes or code signatures.
Example evidence: Signed release artefacts; published checksums; signing key management procedures; customer-facing instructions on how to verify a release.
Tasks and notes
- PS.2.1 Make integrity verification information available to software acquirers.
- PS.3Archive and Protect Each Software Release
Keep a protected copy of each release with its supporting data, and record where every component came from (for example in a software bill of materials, SBOM), so you can investigate problems later.
Example evidence: Immutable release archive with retention rules; an SBOM per release; build provenance records; documented retention period.
Tasks and notes
- PS.3.1 Securely archive the files and supporting data (such as integrity and provenance data) kept for each release.
- PS.3.2 Collect, safeguard, maintain and share provenance data for every component of each release, for example in an SBOM.
Produce Well-Secured Software (PW)
Software is designed, built, reviewed and tested to have few vulnerabilities in its releases.
- PW.1Design Software to Meet Security Requirements and Mitigate Security Risks
Assess security risk at design time, for example with threat modelling, record the security decisions you make, and use standard security services (identity, logging, access control) instead of building your own.
Example evidence: Threat models or design risk assessments; architecture decision records with security rationale; use of shared identity and logging platforms.
Tasks and notes
- PW.1.1 Use risk modelling, such as threat modelling or attack surface mapping, to assess security risk.
- PW.1.2 Track and maintain the software’s security requirements, risks and design decisions.
- PW.1.3 Where appropriate, use standardised security features and services rather than creating your own.
- PW.2Review the Software Design to Verify Compliance with Security Requirements and Risk Information
Have someone not involved in the design, or an automated check, confirm the design meets the security requirements and addresses the identified risks.
Example evidence: Design review records or sign-offs; security architecture review tickets; findings tracked to closure.
Tasks and notes
- PW.2.1 Have an independent qualified person, or automated processes, review the design against the security requirements and risk information.
- PW.4Reuse Existing, Well-Secured Software When Feasible Instead of Duplicating Functionality
Prefer well-secured libraries and components over writing your own, and check that third-party components meet your requirements for their whole life, not just when first added.
Example evidence: An approved component list or intake process; software composition analysis results; dependency update policy; records of component risk reviews.
Tasks and notes
- PW.4.1 Acquire and maintain well-secured components from commercial, open-source and other third-party developers.
- PW.4.2 Build and maintain well-secured in-house components for common needs third parties cannot meet better.
- PW.4.4 Verify that acquired third-party components comply with your requirements throughout their life cycles.
- PW.5Create Source Code by Adhering to Secure Coding Practices
Follow secure coding practices suited to your languages and environment, such as validating input, encoding output and avoiding unsafe functions.
Example evidence: A secure coding standard per language; linters or IDE security plugins in use; developer training records.
Tasks and notes
- PW.5.1 Follow secure coding practices appropriate to the languages and environment to meet your requirements.
- PW.6Configure the Compilation, Interpreter, and Build Processes to Improve Executable Security
Use compilers, interpreters and build tools with security features, decide which settings to use, and apply those approved settings consistently.
Example evidence: Documented approved compiler and build flags; build configuration in version control; pipeline checks that the approved configuration is used.
Tasks and notes
- PW.6.1 Use compiler, interpreter and build tools that offer features to improve executable security.
- PW.6.2 Decide which tool features to use and how to configure them, then implement and use the approved configurations.
- PW.7Review and/or Analyze Human-Readable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements
Decide where code review and automated code analysis (such as static analysis) are needed, run them against your secure coding standard, and log findings in the team’s issue tracker.
Example evidence: Code review policy; required pull-request reviews; static analysis results; findings triaged in the issue tracker.
Tasks and notes
- PW.7.1 Decide whether code review, code analysis or both should be used.
- PW.7.2 Perform the review or analysis against your secure coding standards, and record and triage all findings.
- PW.8Test Executable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements
Decide which kinds of testing of running code you need (for example dynamic scanning, fuzzing or penetration testing), carry them out, and log findings in the team’s issue tracker.
Example evidence: A security test plan; dynamic scan or fuzzing results; penetration test reports; findings triaged in the issue tracker.
Tasks and notes
- PW.8.1 Decide whether executable code testing is needed and which types of testing to use.
- PW.8.2 Scope, design and perform the testing, document results, and record and triage all findings.
- PW.9Configure Software to Have Secure Settings by Default
Ship with secure default settings, and document each security-relevant setting so administrators know what it does.
Example evidence: A secure configuration baseline; default configuration files in version control; administrator hardening guide.
Tasks and notes
- PW.9.1 Define a secure baseline so that default settings are secure and do not weaken platform security.
- PW.9.2 Implement the default settings and document each one for software administrators.
Respond to Vulnerabilities (RV)
Vulnerabilities left in releases are found, fixed and learned from.
- RV.1Identify and Confirm Vulnerabilities on an Ongoing Basis
Keep looking for vulnerabilities in your software and its components after release, take reports from customers, researchers and public sources, and have a disclosure and remediation policy.
Example evidence: A published vulnerability disclosure policy or security.txt; monitoring of advisories for components you use; intake and investigation records.
Tasks and notes
- RV.1.1 Gather vulnerability information from acquirers, users and public sources, and investigate credible reports.
- RV.1.2 Review, analyse or test the code to find previously undetected vulnerabilities.
- RV.1.3 Have a vulnerability disclosure and remediation policy, with the roles and processes to support it.
- RV.2Assess, Prioritize, and Remediate Vulnerabilities
Work out the risk of each vulnerability, decide how to respond, and fix or mitigate it in line with that risk.
Example evidence: A triage and prioritisation procedure; remediation timelines by severity; security advisories issued; tickets showing fixes delivered.
Tasks and notes
- RV.2.1 Analyse each vulnerability to understand its risk well enough to plan a response.
- RV.2.2 Plan and implement risk responses for vulnerabilities.
- RV.3Analyze Vulnerabilities to Identify Their Root Causes
Find out why each vulnerability happened, look for patterns, fix the same class of bug elsewhere, and change the process so it does not recur.
Example evidence: Root-cause analysis records; trend reports by weakness type; variant hunts after a finding; SDLC changes made as a result.
Tasks and notes
- RV.3.1 Analyse identified vulnerabilities to find their root causes.
- RV.3.2 Analyse root causes over time to spot patterns.
- RV.3.3 Review the software for similar vulnerabilities and fix that class proactively.
- RV.3.4 Review and update the SDLC to stop the root cause recurring.
Built on NIST SP 800-218, SSDF Version 1.1 (February 2022), the current final version. SP 800-218 Rev. 1 (SSDF Version 1.2) was published as an initial public draft on 17 December 2025 and is still a draft as of October 2026; it adds two practices, PO.6 (continuous process improvement) and PS.4 (robust and reliable software updates).
What this tool is
- The NIST Secure Software Development Framework (SSDF, SP 800-218) has 19 practices and 42 tasks in four groups: Prepare the Organization (PO), Protect the Software (PS), Produce Well-Secured Software (PW) and Respond to Vulnerabilities (RV).
- Rate every practice Not started, Partial, Implemented or N/A. Each one comes with a plain-English explanation, the task IDs and examples of evidence.
- Get a score per practice group and overall, and a gap list with the practices still to do, not-started first.
- See which of your practices sit behind each of the four items on the CISA Secure Software Development Attestation Form, using the mapping in the form’s own appendix.
- Copy the result as a plain-text report, with your notes. Runs in your browser; nothing is uploaded.
All 19 NIST SSDF practices (SP 800-218 v1.1)
Practice IDs and names are as published by NIST in SP 800-218 Version 1.1. Task descriptions are short plain-English summaries; read the NIST publication for the full wording, the notional implementation examples and the references to other standards. Version 1.1 has no PW.3: its tasks moved to PO.1.3 and PW.4.4.
Prepare the Organization (PO)
People, processes and tools are ready for secure development, at organisation level and per project.
PO.1: Define Security Requirements for Software Development
Write down the security rules your development process, your build infrastructure and your software must meet, keep them current, and pass the relevant ones on to suppliers of components you reuse.
- PO.1.1 Document security requirements for your development infrastructure and processes, and keep them up to date.
- PO.1.2 Document security requirements the software you build must meet, and keep them up to date.
- PO.1.3 Tell third parties who supply commercial components what security requirements they must meet.
Example evidence: A secure development policy or standard; a security requirements baseline for products; supplier contract clauses or questionnaires covering secure development.
PO.2: Implement Roles and Responsibilities
Everyone who touches the software lifecycle knows their security duties, is trained for them, and leadership has visibly committed to secure development.
- PO.2.1 Define roles and responsibilities that cover the whole SDLC, and review them periodically.
- PO.2.2 Give role-based secure development training, and review proficiency and training periodically.
- PO.2.3 Get senior management commitment to secure development and communicate it.
Example evidence: A RACI or role descriptions covering security in the SDLC; role-based secure development training records; a signed policy or leadership statement.
PO.3: Implement Supporting Toolchains
Decide which security tools each pipeline must include, run those tools securely, and have them produce records that show the practices actually happened.
- PO.3.1 Specify which tools or tool types each toolchain must include and how they fit together.
- PO.3.2 Deploy, operate and maintain the tools and toolchains securely.
- PO.3.3 Configure tools to produce artefacts that show secure development practices were followed.
Example evidence: A toolchain standard (which scanners and checks run where); hardening and access settings for CI/CD and security tools; retained scan logs and pipeline artefacts.
PO.4: Define and Use Criteria for Software Security Checks
Set clear pass or fail criteria for security checks during development (for example, no unresolved critical findings at release) and collect the data to show whether each release met them.
- PO.4.1 Define criteria for software security checks and track them throughout the SDLC.
- PO.4.2 Gather and safeguard the information needed to show the criteria are met.
Example evidence: Documented release gates or security acceptance criteria; pipeline policy checks; dashboards or reports showing gate results per release.
PO.5: Implement and Maintain Secure Environments for Software Development
Separate and protect development, build, test and distribution environments, and harden the laptops and workstations developers use.
- PO.5.1 Separate and protect each environment involved in software development.
- PO.5.2 Secure and harden development endpoints using a risk-based approach.
Example evidence: Network or account separation between environments; MFA and conditional access on source control and CI; endpoint hardening baselines for developer machines; access reviews and audit logs.
Protect the Software (PS)
Code and releases are protected from tampering and unauthorised access.
PS.1: Protect All Forms of Code from Unauthorized Access and Tampering
Store source code, built code and configuration-as-code with least-privilege access, so only authorised people, tools and services can read or change it.
- PS.1.1 Store all forms of code on a least-privilege basis so only authorised people, tools and services have access.
Example evidence: Repository permission model and access reviews; branch protection with required reviews; signed commits where used; audit logs of repository changes.
PS.2: Provide a Mechanism for Verifying Software Release Integrity
Give the people who obtain your software a way to check that what they received is what you released, such as published hashes or code signatures.
- PS.2.1 Make integrity verification information available to software acquirers.
Example evidence: Signed release artefacts; published checksums; signing key management procedures; customer-facing instructions on how to verify a release.
PS.3: Archive and Protect Each Software Release
Keep a protected copy of each release with its supporting data, and record where every component came from (for example in a software bill of materials, SBOM), so you can investigate problems later.
- PS.3.1 Securely archive the files and supporting data (such as integrity and provenance data) kept for each release.
- PS.3.2 Collect, safeguard, maintain and share provenance data for every component of each release, for example in an SBOM.
Example evidence: Immutable release archive with retention rules; an SBOM per release; build provenance records; documented retention period.
Produce Well-Secured Software (PW)
Software is designed, built, reviewed and tested to have few vulnerabilities in its releases.
PW.1: Design Software to Meet Security Requirements and Mitigate Security Risks
Assess security risk at design time, for example with threat modelling, record the security decisions you make, and use standard security services (identity, logging, access control) instead of building your own.
- PW.1.1 Use risk modelling, such as threat modelling or attack surface mapping, to assess security risk.
- PW.1.2 Track and maintain the software’s security requirements, risks and design decisions.
- PW.1.3 Where appropriate, use standardised security features and services rather than creating your own.
Example evidence: Threat models or design risk assessments; architecture decision records with security rationale; use of shared identity and logging platforms.
PW.2: Review the Software Design to Verify Compliance with Security Requirements and Risk Information
Have someone not involved in the design, or an automated check, confirm the design meets the security requirements and addresses the identified risks.
- PW.2.1 Have an independent qualified person, or automated processes, review the design against the security requirements and risk information.
Example evidence: Design review records or sign-offs; security architecture review tickets; findings tracked to closure.
PW.4: Reuse Existing, Well-Secured Software When Feasible Instead of Duplicating Functionality
Prefer well-secured libraries and components over writing your own, and check that third-party components meet your requirements for their whole life, not just when first added.
- PW.4.1 Acquire and maintain well-secured components from commercial, open-source and other third-party developers.
- PW.4.2 Build and maintain well-secured in-house components for common needs third parties cannot meet better.
- PW.4.4 Verify that acquired third-party components comply with your requirements throughout their life cycles.
Example evidence: An approved component list or intake process; software composition analysis results; dependency update policy; records of component risk reviews.
PW.5: Create Source Code by Adhering to Secure Coding Practices
Follow secure coding practices suited to your languages and environment, such as validating input, encoding output and avoiding unsafe functions.
- PW.5.1 Follow secure coding practices appropriate to the languages and environment to meet your requirements.
Example evidence: A secure coding standard per language; linters or IDE security plugins in use; developer training records.
PW.6: Configure the Compilation, Interpreter, and Build Processes to Improve Executable Security
Use compilers, interpreters and build tools with security features, decide which settings to use, and apply those approved settings consistently.
- PW.6.1 Use compiler, interpreter and build tools that offer features to improve executable security.
- PW.6.2 Decide which tool features to use and how to configure them, then implement and use the approved configurations.
Example evidence: Documented approved compiler and build flags; build configuration in version control; pipeline checks that the approved configuration is used.
PW.7: Review and/or Analyze Human-Readable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements
Decide where code review and automated code analysis (such as static analysis) are needed, run them against your secure coding standard, and log findings in the team’s issue tracker.
- PW.7.1 Decide whether code review, code analysis or both should be used.
- PW.7.2 Perform the review or analysis against your secure coding standards, and record and triage all findings.
Example evidence: Code review policy; required pull-request reviews; static analysis results; findings triaged in the issue tracker.
PW.8: Test Executable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements
Decide which kinds of testing of running code you need (for example dynamic scanning, fuzzing or penetration testing), carry them out, and log findings in the team’s issue tracker.
- PW.8.1 Decide whether executable code testing is needed and which types of testing to use.
- PW.8.2 Scope, design and perform the testing, document results, and record and triage all findings.
Example evidence: A security test plan; dynamic scan or fuzzing results; penetration test reports; findings triaged in the issue tracker.
PW.9: Configure Software to Have Secure Settings by Default
Ship with secure default settings, and document each security-relevant setting so administrators know what it does.
- PW.9.1 Define a secure baseline so that default settings are secure and do not weaken platform security.
- PW.9.2 Implement the default settings and document each one for software administrators.
Example evidence: A secure configuration baseline; default configuration files in version control; administrator hardening guide.
Respond to Vulnerabilities (RV)
Vulnerabilities left in releases are found, fixed and learned from.
RV.1: Identify and Confirm Vulnerabilities on an Ongoing Basis
Keep looking for vulnerabilities in your software and its components after release, take reports from customers, researchers and public sources, and have a disclosure and remediation policy.
- RV.1.1 Gather vulnerability information from acquirers, users and public sources, and investigate credible reports.
- RV.1.2 Review, analyse or test the code to find previously undetected vulnerabilities.
- RV.1.3 Have a vulnerability disclosure and remediation policy, with the roles and processes to support it.
Example evidence: A published vulnerability disclosure policy or security.txt; monitoring of advisories for components you use; intake and investigation records.
RV.2: Assess, Prioritize, and Remediate Vulnerabilities
Work out the risk of each vulnerability, decide how to respond, and fix or mitigate it in line with that risk.
- RV.2.1 Analyse each vulnerability to understand its risk well enough to plan a response.
- RV.2.2 Plan and implement risk responses for vulnerabilities.
Example evidence: A triage and prioritisation procedure; remediation timelines by severity; security advisories issued; tickets showing fixes delivered.
RV.3: Analyze Vulnerabilities to Identify Their Root Causes
Find out why each vulnerability happened, look for patterns, fix the same class of bug elsewhere, and change the process so it does not recur.
- RV.3.1 Analyse identified vulnerabilities to find their root causes.
- RV.3.2 Analyse root causes over time to spot patterns.
- RV.3.3 Review the software for similar vulnerabilities and fix that class proactively.
- RV.3.4 Review and update the SDLC to stop the root cause recurring.
Example evidence: Root-cause analysis records; trend reports by weakness type; variant hunts after a finding; SDLC changes made as a result.
How SSDF maps to the CISA Secure Software Development Attestation Form
CISA and OMB released the Secure Software Development Attestation Form in March 2024. In Section III a software producer’s CEO or a designee attests that the company presently makes consistent use of four groups of practices derived from the SSDF, or attaches an assessment by a third-party assessor organisation. The form’s appendix links each item to SSDF tasks, which it says is provided for reference purposes:
- Item 1. The software is developed and built in secure environments. a) Separate and protect each development and build environment (PO.5.1); b) Regularly log, monitor and audit trust relationships used for access to and within those environments (PO.5.1); c) Enforce multi-factor authentication and conditional access across them (PO.5.1, PO.5.2); d) Document and minimise software products that create undue risk in those environments (PO.5.1); e) Encrypt sensitive data, such as credentials, where practicable and based on risk (PO.5.2); f) Monitor operations and alerts and respond to suspected and confirmed incidents (PO.3.2, PO.3.3, PO.5.1, PO.5.2).Related SSDF tasks: PO.3.2, PO.3.3, PO.5.1, PO.5.2 (practices PO.3, PO.5).
- Item 2. A good-faith effort to maintain trusted source code supply chains. Use automated tools or comparable processes to address the security of internal code and third-party components, and manage related vulnerabilities..Related SSDF tasks: PO.1.1, PO.3.1, PO.3.2, PO.5.1, PO.5.2, PS.1.1, PS.2.1, PS.3.1, PW.4.1, PW.4.4, PW.7.1, PW.8.1, RV.1.1 (practices PO.1, PO.3, PO.5, PS.1, PS.2, PS.3, PW.4, PW.7, PW.8, RV.1).
- Item 3. Provenance is maintained for internal code and third-party components. Maintain provenance for internal code and incorporated third-party components to the greatest extent feasible..Related SSDF tasks: PO.1.3, PO.3.2, PO.5.1, PO.5.2, PS.3.1, PS.3.2, PW.4.1, PW.4.4, RV.1.1, RV.1.2 (practices PO.1, PO.3, PO.5, PS.3, PW.4, RV.1).
- Item 4. Automated tools or comparable processes check for security vulnerabilities. a) Run them on an ongoing basis and before product, version or update releases; b) Have a policy or process to address discovered vulnerabilities before release; c) Operate a vulnerability disclosure program and address reported vulnerabilities in a timely way.Related SSDF tasks: PO.4.1, PO.4.2, PS.1.1, PW.2.1, PW.4.4, PW.5.1, PW.6.1, PW.6.2, PW.7.1, PW.7.2, PW.8.2, PW.9.1, PW.9.2, RV.1.1, RV.1.2, RV.1.3, RV.2.1, RV.2.2, RV.3.3 (practices PO.4, PS.1, PW.2, PW.4, PW.5, PW.6, PW.7, PW.8, PW.9, RV.1, RV.2, RV.3).
Two practices are not linked to any item: PO.2 (Implement Roles and Responsibilities) and PW.1 (Design Software to Meet Security Requirements and Mitigate Security Risks). A full SSDF programme still needs them. The form covers code the producer develops; it does not cover software developed by federal agencies, open-source software an agency obtains directly, third-party components built into the product, or freely available public software.
Current status. OMB memorandum M-26-05 (23 January 2026) rescinded M-22-18 and M-23-16, the memos that required agencies to collect the form. Agencies may still choose to use it, may require an SBOM by contract, and are told to set software assurance requirements based on their own risk assessments. CISA’s form page is now marked as archived content. If a federal customer asks for an attestation, follow their contract.
Frequently asked questions
What is SSDF?
SSDF is the Secure Software Development Framework, published by the US National Institute of Standards and Technology (NIST) as Special Publication 800-218. It is a set of high-level, outcome-based practices for building software securely that you can add to any development lifecycle, whether waterfall, agile or DevOps. It says what to achieve, not which tools or methods to use.
What is the NIST Secure Software Development Framework?
It is NIST SP 800-218. The current final version is SSDF Version 1.1, published in February 2022. It has 19 practices and 42 tasks in four groups: Prepare the Organization (PO), Protect the Software (PS), Produce Well-Secured Software (PW) and Respond to Vulnerabilities (RV). Each task lists example implementations and references to other standards such as NIST SP 800-53, OWASP SAMM and BSIMM.
What are the NIST SSDF practices?
PO.1 to PO.5 cover security requirements, roles and training, toolchains, security check criteria and secure development environments. PS.1 to PS.3 cover protecting code, verifying release integrity and archiving releases with provenance data. PW.1, PW.2 and PW.4 to PW.9 cover secure design, design review, reusing well-secured components, secure coding, build configuration, code review, testing and secure defaults (there is no PW.3 in version 1.1; its tasks moved to PO.1.3 and PW.4.4). RV.1 to RV.3 cover finding, fixing and root-causing vulnerabilities. The full list with names is below.
Is there a newer version of NIST SSDF?
A draft. NIST published SP 800-218 Rev. 1 (SSDF Version 1.2) as an initial public draft on 17 December 2025, with comments due by 30 January 2026. As of October 2026 the NIST project page still lists it as a draft, so Version 1.1 remains the final version and is what this tool uses. The draft adds two practices: PO.6 on continuous process improvement and PS.4 on robust and reliable software updates.
Is the CISA secure software development attestation form still required?
Not government-wide. The form (March 2024) was required by OMB memoranda M-22-18 and M-23-16 for software sold to US federal agencies. OMB memorandum M-26-05, dated 23 January 2026, rescinded both memos. It says agencies may still choose to use the attestation form, may ask for a software bill of materials (SBOM) in contracts, and should set requirements based on their own risk assessment. So an individual agency or contract may still ask for it; check what your customer requires.
Does a high score here mean I can sign the attestation form?
No. This is a self-assessment for planning. The form asks a CEO or designee to attest that the company presently makes consistent use of specific practices, or to attach a third-party assessment. The tool shows which SSDF practices the form’s appendix links to each item, so you can see where you are weak, but signing is a legal statement your organisation has to make on its own evidence.
More free security tools
The tools people use most on PlayCISO.
Catch injected instructions hiding in content your AI agent should only read.
Score your readiness against the first international standard for AI security threats.
Critical CVEs across 21 major vendors, month by month — and what the 2026 surge means.
Build an ordered ruleset, replay labelled packets and catch shadowed and any-to-any rules.
Self-assess all six Functions, from Govern to Recover, and see your weakest one.
Search 172 threat actors across Microsoft, CrowdStrike, Mandiant and community names.