This is the multi-page printable view of this section.
Click here to print.
Return to the regular view of this page.
CI/CD Security Guide
Securing your Continuous Integration and Continuous Deployment (CI/CD) pipeline is no longer optional—it’s essential. This guide is your go-to resource for building, implementing, and optimizing secure CI/CD workflows. Whether you’re a developer, DevOps engineer, or security professional, we provide information on the open-source tools and guidance you need to model security at every stage of your pipeline. From securing code and builds to monitoring post-deployment environments, our hub empowers teams to integrate security seamlessly into their workflows without sacrificing speed or agility. Explore, learn, and transform your CI/CD processes into a fortress of innovation and resilience.
Why this Guide
This guide helps DevOps engineers build security-compliant CI/CD pipelines by mapping new open-source automation tools to evolving security frameworks. As security standards evolve, pipeline updates are essential to ensure safer software development. This guide explores the intersection of security tooling and the CI/CD pipeline, identifying key security practices, tools, and strategies that align with accepted frameworks such as the Secure Software Development Framework and the NIST Cybersecurity Framework. This guide aligns framework-defined tasks with open-source tools to accomplish them.
This CI/CD Cybersecurity Guide has been segmented into three 3 major chapters:
- CI/CD Code and Prebuild - this section includes security tooling for the earliest points in the CI/CD workflow.
- CI/CD Build and Deploy - this section covers security tooling for both the build step and deployment step, regardless of where the deployment is occurring (test or production).
- CI/CD Post Deploy - security does not stop after the binaries have been deployed. This section covers continuous vulnerability management and Dynamic Application Security Testing (DAST).
For more information on Security Frameworks or Public Security Policy, visit the OpenSSF Public Policy or EU Cybersecurity Resilience Act pages.
You can also learn about the OpenSSF Open Source Manifesto to help along the journey.
Compliance Goals
Compliance Policies and Practices are being defined across both public and private sectors. Specifically, the US Executive Order (EO) on Improving the Nation’s Cybersecurity and the EU Cyber Resilience Act (CRA) aim to define how to manage threats and vulnerabilities by establishing standardized frameworks for cybersecurity requirements. These frameworks cover the complete software development process, from design through ongoing monitoring of production software assets.
The inclusion of security tooling in the Continuous Integration and Continuous Deployment (CI/CD) pipeline is one crucial area where policy and practices can be implemented and automated. With the rapid pace of development and deployment in modern DevOps environments, security must be seamlessly embedded into each phase of the pipeline to protect applications and data from vulnerabilities and attacks.This is the new job of the DevOps team. This guide is intended to help the DevOps teams easily navigate the new frameworks and understand the tooling needed to achieve the stated compliance goals.
1 - Phase 1: Code and Prebuild
Security Compliance for Code and Prebuild
Introduction
Integrating security into every stage of the Software Development Life Cycle (SDLC) is more critical than ever. The code and prebuild stage is foundational to creating secure, reliable, and high-performing applications. Failing to address vulnerabilities early can lead to costly fixes, data breaches, and reputational damage down the line.
This section provides a comprehensive guide to the essential security tools that developers and DevOps teams should use during the code and prebuild phase to ensure vulnerabilities are identified and mitigated before they can cause harm. From Static Application Security Testing (SAST) to dependency scanning and secure CI/CD pipelines, the right tools can help you adopt a proactive approach to software security while maintaining development velocity. Following are guidelines from industry frameworks with suggested open source tooling needed to achieve the compliance goals.
1.1 - Secure Software Development Framework
Secure Software Development Framework and Code/Prebuild CI/CD Steps
Achieving Code and Prebuild Tasks of the Secure Software Development Framework
The Secure Software Development Framework, developed by the National Institute of Standards and Technology (NIST), provides a comprehensive approach to ensuring security across the software development process, from initial design through deployment and maintenance. The framework outlines key practices and guidelines that organizations can implement to secure their software development lifecycle (SDLC), with a particular emphasis on integrating security into automated processes. This chapter focuses specifically on DevSecOps tooling and practices related to Code and Prebuild actions of the CI/CD pipeline to achieve:
|
|
Prepare the Organization (PO) |
Organizations should ensure that their people, processes, and technology are prepared to perform secure software development at the organization level. Many organizations will find some PO practices to also be applicable to subsets of their software development, like individual development groups or projects. |
Protect the Software (PS) |
Organizations should protect all components of their software from tampering and unauthorized access. |
Produce Well-Secured Software (PW) |
Organizations should produce well-secured software with minimal security vulnerabilities in its releases. |
Respond to Vulnerabilities (RV) |
Organizations should identify residual vulnerabilities in their software releases and respond appropriately to address those vulnerabilities and prevent similar ones from occurring in the future. |
1.1.1 - Protect the Organization (PO)
Protect the Organization (PO) CI/CD Steps
Protect the Organization (PO)
Organizations should ensure that their people,
processes, and technology are prepared to perform secure software development at the
organization level. Many organizations will find some PO practices to also be applicable
to subsets of their software development, like individual development groups or projects.
PO.2 Implement Roles and Responsibilities
Ensure that everyone inside and outside of the organization involved in the SDLC is prepared to perform their SDLC-related roles and responsibilities throughout the SDLC.
Tasks |
Tools |
PO.2.1:
Create new roles and alter responsibilities for existing roles as needed to encompass all parts of the SDLC.Periodically review and maintain the defined roles and responsibilities, updating them as needed.
Designate a group of individuals as the code owners for each project, and review the list annually.
|
Github CODEOWNERS
|
Gitlab CODEOWNERS
|
Use automation to reduce human effort and improve the accuracy, reproducibility, usability, and comprehensiveness of security practices throughout the SDLC, as well as provide a way to document and demonstrate the use of these practices. Toolchains and tools may be used at different levels of the organization, such as organization-wide or project-specific, and may address a particular part of the SDLC, like a build pipeline.
Tasks |
Tools |
PO.3.1:
Specify which tools or tool types must or should be included in each toolchain to mitigate identified risks, as well as how the toolchain components are to be integrated with each other.
Use software factories and/or software templates to standardize the toolchain.
|
Backstage Software Templates
Can scaffold projects with pipelines-as-code and toolchains-as-code
|
Konflux-ci software factory for Tekton
Implements the In-toto framework using pipelines-as-code
|
CDF CDEvents
CDEvents is a common specification for Continuous Delivery events, enabling interoperability in the complete software production ecosystem.
|
PO.3.2:
Follow recommended security practices to deploy, operate, and maintain tools and toolchains.
Use code-based configuration for toolchains (e.g., pipelines-as-code, toolchains-as-code).
|
Jenkins Jenkinsfile
|
Github Actions .github/workflows directory
|
Gitlab CI/CD .gitlab-ci.yml file
|
Spinnaker Dinghy
|
Argo CD
|
Tekton pipelines-as-code
|
OpenTofu
|
PO.3.2:
Follow recommended security practices to deploy, operate, and maintain tools and toolchains.
Implement the technologies and processes needed for reproducible builds.
|
Hermetic builds with Konflux-ci
|
Python
|
Javascript
|
Java/Kotlin/Groovy
|
C#/.NET
|
C++
|
Rust
|
Golang
|
PHP Composer
|
SLSA Framework
|
PO.3.3:
Configure tools to generate artifacts of their support of secure software development practices as defined by the organization.
Use existing tooling (e.g., workflow tracking, issue tracking, value stream mapping) to create an audit trail of the secure development-related actions that are performed for continuous improvement purposes. Record security check approvals, rejections, and exception requests as part of the workflow and tracking system.
|
Github Issues
|
Gitlab work tracking
|
Bugzilla
|
Redmine
|
Mantis Bug Tracker
|
Trac
|
In-toto framework
|
PO.4 Define and Use Criteria for Software Security Checks
Help ensure that the software resulting from the SDLC meets the organization’s expectations by defining and using criteria for checking the software’s security during development.
Tasks |
Tools |
PO.4.1:
Define criteria for software security checks and track throughout the SDLC.
Add software security criteria to existing checks (e.g., the Definition of Done in agile SDLC methodologies).
|
Github Issue Templates
|
Gitlab Description Templates
|
PO.4.2:
Implement processes, mechanisms, etc. to gather and safeguard the necessary information in support of the criteria.
Collect audit logs for code repositories.
|
GitHub
|
GitLab
Audit Logs
|
PO.4.2:
Implement processes, mechanisms, etc. to gather and safeguard the necessary information in support of the criteria.
Only allow authorized personnel to access the gathered information, and prevent any alteration or deletion of the information. Carefully manage the list of repository owners and organization owners who have the ability to view audit logs, delete organizations, and delete code repositories, and review the list annually.
|
GitHub
|
GitHub
|
PO.5 Implement and Maintain Secure Environments for Software Development
Ensure that all components of the environments for software development are strongly protected from internal and external threats to prevent compromises of the environments or the software being developed or maintained within them. Examples of environments for software development include development, build, test, and distribution environments.
Tasks |
Tools |
PO.5.1:
Separate and protect each environment involved in software development.
Require multifactor authentication, SSH keys, signed commits, and code change approvals for code repositories at the organization level.
|
GitHub Organization Settings
|
GitLab
|
Note: Securely configure code repository and CI/CD servers -
This is a complex topic, beyond the scope of this document. Securely configure development endpoints (i.e. developer laptops) -
This is a complex topic, beyond the scope of this document.
1.1.2 - Protect the Software (PS)
Protect the Software (PS) CI/CD Steps
Protect the Software (PS)
Organizations should protect all components of their software from tampering and unauthorized access.
Help prevent unauthorized changes to code, both inadvertent and intentional, which could circumvent or negate the intended security characteristics of the software.
For code that is not intended to be publicly accessible, this helps prevent theft of the software and may make it more difficult or time-consuming for attackers to find vulnerabilities in the software.
Tasks |
Tools |
PS.1.1:
Store all forms of code – including source code, executable code, and configuration-as-code – based on the principle of least privilege so that only authorized personnel, tools, services, etc. have access.
Store all source code and configuration-as-code in a code repository, and restrict access to it based on the nature of the code. For example, open source code intended for public access may need its integrity and availability protected; other code may also need its confidentiality protected.
|
GitHub
|
GitLab
|
Bitbucket
|
SourceForge
|
Subversion
|
PS.1.1:
Store all forms of code – including source code, executable code, and configuration-as-code – based on the principle of least privilege so that only authorized personnel, tools, services, etc. have access.
Use version control features of the repository to track all changes made to the code with accountability to the individual account.
|
Git
|
GitHub
|
GitLab
|
Bitbucket
|
SourceForge
|
Subversion
|
GitBucket
|
Gitea
|
gittuf
|
PS.1.1:
Store all forms of code – including source code, executable code, and configuration-as-code – based on the principle of least privilege so that only authorized personnel, tools, services, etc. have access.
Use commit signing for code repositories to sign code.
|
GitHub Signing Commits
|
About commit signature verification
|
GitLab Signed Commits
|
Bitbucket Sign Commits and Tags with SSH keys
|
Bitbucket Sign Commits and Tags with X.509 certificates
|
Bitbucket Using GPG Keys
|
Sigstore
|
PS.1.1:
Store all forms of code – including source code, executable code, and configuration-as-code – based on the principle of least privilege so that only authorized personnel, tools, services, etc. have access.
Have the code owner review and approve all changes made to the code by others.
|
Github CODEOWNERS
|
GitHub Code Review
|
Gitlab CODEOWNERS
|
Gitlab Code Review Guidelines
|
Bitbucket Set Up and Use Code Owners
|
Bitbucket Code Review
|
PS.1.1:
Store all forms of code – including source code, executable code, and configuration-as-code – based on the principle of least privilege so that only authorized personnel, tools, services, etc. have access.
Use cryptography (e.g., cryptographic hashes) to help protect file integrity
|
GitHub About Commits
|
PS.2 Provide a Mechanism for Verifying Software Release Integrity
Help software acquirers ensure that the software they acquire is legitimate and has not been tampered with.
Tasks |
Tools |
PS.2.1:
Make software integrity verification information available to software acquirers.
Post cryptographic hashes for release files on a well-secured website.
|
Apache Infrastructure Signing Releases
|
OpenPGP
|
The GNU Privacy Guard
|
PS.2.1:
Make software integrity verification information available to software acquirers.
Use an established certificate authority for code signing so that consumers’ operating systems or other tools and services can confirm the validity of signatures before use. Periodically review the code signing processes, including certificate renewal, rotation, revocation, and protection.
|
Let's Encrypt
|
EJBCA Community
|
Dogtag Certificate System
|
OpenXPKI
|
Step-CA
|
PS.3 Archive and Protect Each Software Release
Preserve software releases in order to help identify, analyze, and eliminate vulnerabilities discovered in the software after release.
Tasks |
Tools |
PS.3.1:
Securely archive the necessary files and supporting data (e.g., integrity verification information, provenance data) to be retained for each software release.
Store the release files, associated images, etc. in repositories following the organization’s established policy. Allow read-only access to them by necessary personnel and no access by anyone else.
|
Access Permissions on GitHub
|
GitLab Roles and Permissions
|
Bitbucket Grant Repository Access to Users and Groups
|
PS.3.1:
Securely archive the necessary files and supporting data (e.g., integrity verification information, provenance data) to be retained for each software release.
Store and protect release integrity verification information and provenance data, such as by keeping it in a separate location from the release files or by signing the data.
|
GitHub Repository Roles for an Organization
|
GitLab Roles and Permissions
|
Bitbucket Grant Access to a Workspace
|
Ortelius
|
PS.3.2:
Collect, safeguard, maintain, and share provenance data for all components of each software release (e.g., in a Software Bill of Materials (SBOM)).
Make the provenance data available to software acquirers in accordance with the organization’s policies, preferably using standards-based formats.
|
AI SBOM Generator
|
CycloneDX
|
Software Identification (SWID) Tagging Tools and Utilities
|
SPDX
|
PS.3.2:
Collect, safeguard, maintain, and share provenance data for all components of each software release (e.g., in a Software Bill of Materials (SBOM)).
Make the provenance data available to the organization’s operations and response teams to aid them in mitigating software vulnerabilities.
|
bomctl
|
OWASP Dependency-Check
|
Dependency-Track
|
Clair
|
Grype
|
Ortelius
|
Protobom
|
Syft
|
Tern
|
Trivy
|
PS.3.2:
Collect, safeguard, maintain, and share provenance data for all components of each software release (e.g., in a Software Bill of Materials (SBOM)).
Protect the integrity of provenance data, and provide a way for recipients to verify provenance data integrity.
|
aoss-verifier
|
Sigstore
|
TLSNotary Protocol
|
PS.3.2:
Collect, safeguard, maintain, and share provenance data for all components of each software release (e.g., in a Software Bill of Materials (SBOM)).
Update the provenance data every time any of the software’s components are updated.
|
GitHub Actions
|
GitLab CI/CD
|
Bitbucket Pipelines
|
CircleCI
|
Travis CI
|
Updatecli
|
Renovate
|
1.1.3 - Produce Well-Secured Software (PW)
Produce Well-Secured Software (PW) during the code and pre-build CI/CD Steps
Produce Well-Secured Software (PW)
Organizations should produce well-secured
software with minimal security vulnerabilities in its releases.
PW.1
Design Software to Meet Security Requirements and Mitigate Security Risks: Identify and evaluate the security requirements for the software; determine what security risks the software is likely to face during operation and how the software’s design and architecture should mitigate those risks; and justify any cases where risk-based analysis indicates that security requirements should be relaxed or waived. Addressing security requirements and risks during software design (secure by design) is key for improving software security and also helps improve development efficiency.
Tasks |
Tools |
PW.1.1: Use forms of risk modeling – such as threat modeling, attack modeling, or attack surface mapping – to help assess the security risk for the software.
PW.1.2: Track and maintain the software’s security requirements, risks, and design decisions.
PW.1.3: Where appropriate, build in support for using standardized security features and services (e.g., enabling software to integrate with existing log management, identity management, access control, and vulnerability management systems) instead of creating proprietary implementations of security features and services.
|
OWASP Threat Dragon
Used before coding to document system components, data flows, and trust boundaries, then enumerate threats and requirements.
|
OWASP Amass
Helps define security requirements by identifying known external dependencies, APIs, or services that code will interact with, which informs threat modeling and secure design.
|
CAIRIS
Helps security teams and developers capture, manage, and trace security requirements from initial design through development, ensuring prebuild security alignment.
|
Threagile
Enables “threat modeling as code” in prebuild, so security requirements can be automated and version-controlled alongside application code.
|
Open-Needs
Centralizes and structures security requirements so they are available for threat modeling, design reviews, and early validation.
|
rmtoo
Useful at the design and planning phase to maintain a structured list of security requirements and link them to test cases, threat models, or code modules, ensuring security is addressed before coding.
|
OpenRMF® OSS
In prebuild, it can define the exact RMF-derived security requirements the codebase must meet, including control baselines, and link them to design elements or development tasks.
|
PW.2
Review the Software Design to Verify Compliance with Security Requirements and Risk Information: Help ensure that the software will meet the security requirements and satisfactorily address the identified risk information.
Tasks |
Tools |
PW.2.1: Have 1) a qualified person (or people) who were not involved with the design and/or 2) automated processes instantiated in the toolchain review the software design to confirm and enforce that it meets all of the security requirements and satisfactorily addresses the identified risk information.
|
OWASP Dependency-Check
Scans project dependencies (direct and transitive) against the National Vulnerability Database (NVD) and other sources to detect known vulnerabilities (CVEs). Helps confirm if a component meets security requirements before inclusion.
|
Dependabot
Automated dependency monitoring and update tool integrated with GitHub. Detects vulnerable dependencies and creates pull requests to update them, ensuring only secure versions are used.
|
OpenRMF
Manages Risk Management Framework (RMF) compliance artifacts, including NIST 800-53 controls. Can be used to confirm that selected software components meet mandated security control baselines before approval.
|
ESLint
JavaScript/TypeScript linter that enforces secure coding standards and flags insecure coding patterns before they reach production. Helps validate that custom code components align with secure coding requirements.
|
LGTM
Automated code analysis platform for identifying vulnerabilities and code quality issues in multiple languages. Confirms code components meet security policies before integration.
|
Grype
Open-source vulnerability scanner for container images and file systems. Ensures that containerized components meet vulnerability and compliance requirements before deployment.
|
Clair
Static vulnerability analysis for container images. Integrates into CI/CD to detect vulnerabilities in base images and layered components before they’re promoted.
|
Trivy
Comprehensive vulnerability scanner for container images, file systems, and Git repositories. Validates that selected components have no known vulnerabilities or misconfigurations.
|
Checkov
Static analysis for Infrastructure as Code (IaC) to detect security misconfigurations (Terraform, Kubernetes, CloudFormation). Ensures that IaC components meet defined security baselines before use.
|
Terrascan
Policy-as-code scanner for Terraform, Kubernetes, Docker, and other IaC frameworks. Confirms that infrastructure components comply with security and compliance requirements.
|
Gerrit
Web-based code review tool. While not a vulnerability scanner, it enforces human review and approval workflows that can include security requirement validation checklists before component approval.
|
PW.4
Reuse Existing, Well-Secured Software When Feasible Instead of Duplicating FunctionalityLower the costs of software development, expedite software development, and decrease the likelihood of introducing additional security vulnerabilities into the software by reusing software modules and services that have already had their security posture checked. This is particularly important for software that implements security functionality, such as cryptographic modules and protocols.
Tasks |
Tools |
PW.4.1: Acquire and maintain well-secured software components (e.g., software libraries, modules, middleware, frameworks) from commercial, opensource, and other third-party developers for use by the organization’s software.
PW.4.2: Create and maintain well-secured software components in-house following SDLC processes to meet common internal software development needs that cannot be better met by third-party software components.
PW.4.3: Moved to PW.4.4
PW.4.4: Verify that acquired commercial, open-source, and all other third-party software components comply with the requirements, as defined by the organization, throughout their life cycles.
|
CycloneDX
Generated during build/prebuild to validate component data against defined acceptance criteria.
|
SPDX
Used to verify that all components meet licensing and security requirements before integration.
|
ArtifactHub
Ensures only vetted, signed, and policy-compliant packages are sourced for builds.
|
JFrog Artifactory OSS
Acts as a controlled source for components meeting defined security standards.
|
Sonatype Nexus OSS
Prevents use of components that fail security requirements or policy checks.
|
Harbor
Enforces rules that only scanned, signed, and policy-compliant images are stored and used in builds.
|
GitLab Signing
nforces signed commit policy in merge requests before code is accepted.
|
GitHub CodeQL
Runs in CI to check code against predefined security queries before integration.
|
AquaSec Trivy
Enforces security acceptance criteria (e.g., no critical CVEs) before promoting components.
|
Dependabot
Creates PRs to meet policy-defined security versions.
|
Allstar
Ensures repositories meet defined configuration criteria before allowing merges.
|
OWASP SAMM
Provides a framework to define security assurance practices and maturity targets. Helps establish criteria for secure development processes, including prebuild checks.
|
OWASP ASVS
Defines detailed security verification requirements for applications. Can be used as a benchmark for automated and manual prebuild security tests.
|
OWASP Defectdojo
Vulnerability management and security test orchestration platform. Centralizes results from scanners and ensures issues are tracked against acceptance criteria.
|
OWASP Dependency-Check
Scans project dependencies for known vulnerabilities (CVEs) and fails builds if they don’t meet criteria.
|
Git
VCS that supports commit signing and hooks to enforce prebuild checks (linting, security scans).
|
Gitea
Lightweight, self-hosted Git service with repository policy enforcement (e.g., signed commits, review requirements).
|
GitLab (Community Edition)
Git platform with CI/CD integration for running security checks before merging.
|
Visual Studio Code
Supports extensions for linting, vulnerability scanning, and code signing enforcement pre-commit.
|
Eclipse
Java IDE with plugins for static analysis, dependency scanning, and secure coding rule enforcement.
|
IntelliJ IDEA (Community Edition)
Java IDE with plugins for static analysis, secure coding, and SBOM generation.
|
JUnit
Java unit testing framework; can integrate with security test suites.
|
NUnit
NET testing framework; supports integration with security validation tests.
|
Pytest
Python testing framework; can run security rule-based tests as part of CI.
|
Selenium
Automated browser testing tool; can validate secure behavior (e.g., auth flows).
|
Playwright
End-to-end browser testing with support for security-focused scenarios.
|
OWASP ZAP
Dynamic Application Security Testing (DAST) tool for finding security issues in running apps during testing stages.
|
TestNG
Testing framework for Java; integrates with security automation.
|
Cucumber
BDD testing framework; can define security acceptance tests in plain language.
|
Aqua Trivy
Scans containers, file systems, and repos for vulnerabilities and misconfigurations.
|
Clair
Static vulnerability scanning for container images before deployment.
|
Grype
Vulnerability scanner for containers and filesystems.
|
Bandit for Python
Python-specific static analyzer for common security issues.
|
Semgrep
Multi-language static analysis using custom or predefined security rules.
|
Brakeman
Rails-specific static analyzer for security vulnerabilities.
|
Gitleaks
Detects hardcoded secrets in Git repositories pre-commit or in CI.
|
TruffleHog
Detects secrets and sensitive information in code history and commits.
|
Sigstore
Open-source framework for signing software artifacts (commits, containers) using cryptographic proofs.
|
OWASP Dependency-Check
Scans project dependencies (direct and transitive) for known CVEs using NVD and other sources. Can enforce “no critical/high vulnerabilities” criteria before the build passes.
|
OSS Review Toolkit (ORT)
Ensures that selected components meet license and security criteria before merging into mainline.
|
FOSSA (Community Edition)
Can block merges or builds that violate licensing rules or contain known vulnerabilities.
|
ScanCode Toolkit
Ensures licensing criteria are met before components are accepted into the build.
|
Tern
Provides component inventory to validate against predefined acceptance criteria.
|
Open Policy Agent (OPA)
Enforces security, compliance, and configuration policies during CI/CD gates before release.
|
PW.5
Create Source Code by Adhering to Secure Coding Practices:
Decrease the number of security vulnerabilities in the software, and reduce costs by minimizing vulnerabilities introduced during source code creation that meet or exceed organization-defined vulnerability severity criteria.
Tasks |
Tools |
PW.5.1:
PW.5.1 Follow all secure coding practices that are appropriate to the development languages and environment to meet the organization’s requirements.
|
Semgrep
egrated into CI to scan changed code and block merges if rules fail; can also run locally for pre-commit checks.
|
Bandit for Python
Runs in prebuild to fail pipelines when high-severity issues are found in Python code.
|
FindBugs
Scans Java code before packaging to find vulnerabilities and bad coding practices.
|
SpotBugs
Integrated into CI to detect Java vulnerabilities pre-release.
|
SonarQube
Runs in CI to flag security issues before merges; supports quality gates for enforcement.
|
OWASP ZAP
Can run in test environments before production release to catch runtime security issues.
|
Arachni
Runs against staging/test instances before deployment to catch exploitable issues.
|
OWASP Dependency-Check
Blocks builds that include components with vulnerabilities exceeding severity thresholds.
|
PW.6
Configure the Compilation, Interpreter, and Build Processes to Improve Executable
Security: Decrease the number of security vulnerabilities in the software and reduce costs by eliminating vulnerabilities before testing occurs.
Tasks |
Tools |
PW.6.1: Use compiler, interpreter, and build tools that offer features to improve executable security
PW.6.2: Determine which compiler, interpreter, and build tool features should be used and how each should be configured, then implement and use the approved configurations.
|
Sigstore Cosign
Signs and verifies the integrity/authenticity of source code and pre-built dependencies before compiling.
|
GnuPG (GPG)
Verifies cryptographic signatures of source tarballs and dependencies before build.
|
OSS Review Toolkit (ORT)
Scans and audits dependencies for licensing and security issues before they are included in a build.
|
Meson
Integrated into CI to detect Java vulnerabilities pre-release.
|
Tern
Analyzes container image layers to identify open-source components and licensing before using as a base for builds.
|
ScanCode Toolkit
Detects licenses, copyrights, and packages in source code before build to ensure compliance and security.
|
Grype
Scans source code and container base images for known vulnerabilities before they are included in builds.
|
Syft
Generates SBOMs from source code and dependencies before build to document and verify components.
|
PW.7
Review and/or Analyze Human-Readable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements: Help identify vulnerabilities so that they can be corrected before the software is released to prevent exploitation. Using automated methods lowers the effort and resources needed to detect vulnerabilities. Human-readable code includes source code, scripts, and any other form of code that an organization deems humanreadable.
Tasks |
Tools |
PW.7.1 Determine whether code review (a person looks directly at the code to find issues) and/or code analysis (tools are used to find issues in code, either in a fully automated way or in conjunction with a person) should be used, as defined by the organization.
PW.7.2: Perform the code review and/or code analysis based on the organization’s secure coding standards, and record and triage all discovered issues and recommended remediations in the development team’s workflow or issue tracking system.
|
OWASP Dependency-Check
Scans project dependencies (e.g., Maven, npm, Python) against the NVD for known CVEs before build, enabling early remediation of vulnerable libraries.
|
OWASP ZAP
Primarily a dynamic application security testing (DAST) tool, but in a pre-build sense, it’s not generally used — can be run against local development builds for early runtime flaw detection. Limited PW.7 pre-build applicability.
|
SonarQube
Performs SAST and code quality checks for many languages, detecting vulnerabilities, bugs, and code smells before compilation or integration.
|
Retire.js
Scans JavaScript code and package manifests for known vulnerable libraries before packaging.
|
Fossa Community Edition
Performs dependency scanning for license and vulnerability issues before build. Commercial SaaS version is proprietary.
|
Semgrep
Lightweight, customizable SAST tool. Uses rules to detect security issues and anti-patterns in source code before build.
|
Bandit for Python
Scans Python source for common security issues before build (e.g., insecure function usage, hardcoded passwords).
|
Checkmarx KICS
Static analysis tool for IaC (Terraform, Kubernetes YAML, etc.) to find misconfigurations before deployment.
|
Cppcheck for C++
Static analysis for C/C++ source to catch undefined behavior, memory issues, and common security flaws before compilation.
|
FindSecBugs
A plugin for SpotBugs to detect Java-specific security vulnerabilities before build.
|
GitHub CodeQL
Performs deep semantic code analysis using a query language to detect vulnerabilities before build. Excellent for automated SAST in CI pipelines.
|
PMD
Scans Java, Apex, JavaScript, XML, and other code for bugs, unused code, and potential security issues before compilation.
|
SpotBugs
Static analysis for Java bytecode; detects bug patterns and potential vulnerabilities pre-build (when run on compiled class files in CI before packaging).
|
Danger JC
Automates pull request checks — enforces security/contribution guidelines, prevents insecure patterns from merging into code before build.
|
PW.8
Test Executable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements: Help identify vulnerabilities so that they can be corrected before the software is released in order to prevent exploitation. Using automated methods lowers the effort and resources needed to detect vulnerabilities and improves traceability and repeatability. Executable code includes binaries, directly executed bytecode and source code, and any other form of code that an organization deems executable.
Tasks |
Tools |
PW.8.1: Determine whether executable code testing should be performed to find vulnerabilities not identified by previous reviews, analysis, or testing and, if so, which types of testing should be used.
PW.8.2: Scope the testing, design the tests, perform the testing, and document the results, including recording and triaging all discovered issues and recommended remediations in the development team’s workflow or issue tracking system.
|
Semgrep
SAST engine that scans source code against security rules before build, catching vulnerabilities early.
|
Bandit (Python)
Static analysis for Python code to find common security issues before packaging.
|
FindSecBugs
Security plugin for SpotBugs to detect vulnerabilities in Java/Scala/Groovy code pre-build.
|
Cppcheck
Static analysis for C/C++ to detect security flaws before compilation artifacts are built.
|
PMD
Rule-based static analysis for Java, Apex, JavaScript, and XML for vulnerabilities and coding issues.
|
SpotBugs
General bug and vulnerability detection in Java code before build output.
|
GitHub CodeQL
Semantic code analysis to find vulnerabilities before build.
|
OWASP Dependency-Check
SCA tool that identifies vulnerable dependencies in manifests before packaging.
|
Retire.js
Scans JavaScript and Node.js dependencies for known vulnerabilities before release.
|
Grype
SSCA tool for scanning source code dependencies and base images pre-build for CVEs.
|
Syft
Generates SBOMs from source code before build to verify component inventory.
|
Checkmarx KICS
Scans Infrastructure-as-Code files for misconfigurations before deployment.
|
Gitleaks
Searches code and git history for secrets before build.
|
TruffleHog
Searches code and git history for secrets before build.
|
PW.9
Configure Software to Have Secure Settings by Default: Help improve the security of the software at the time of installation to reduce the likelihood of the software being deployed with weak security settings, putting it at greater risk of compromise.
Tasks |
Tools |
PW.9.1: Define a secure baseline by determining how to configure each setting that has an effect on security or a security-related setting so that the default settings are secure and do not weaken the security functions provided by the platform, network infrastructure, or services.
PW.9.2: Implement the default settings (or groups of default settings, if applicable), and document each setting for software administrators.
|
KICS (Checkmarx)
Finds misconfigurations and insecure defaults in IaC files before build.
|
Open Policy Agent (OPA)
Policy-as-code engine to enforce secure configuration rules in pre-build pipelines.
|
Yamllint
Validates YAML configuration files, ensuring structure correctness before further security rule checks.
|
1.1.4 - Respond to Vulnerabilites
Respond to Vulnerabilities (RV) Code and Prebuild CI/CD Steps
Respond to Vulnerabilities (RV)
Respond to Vulnerabilities (RV): Organizations should identify residual vulnerabilities
in their software releases and respond appropriately to address those vulnerabilities and prevent similar ones from occurring in the future.
RV.1
Identify and Confirm Vulnerabilities on an Ongoing Basis: Help ensure that vulnerabilities are identified more quickly so that they can be remediated more quickly in accordance with risk, reducing the window of opportunity for attackers.
To satisfy SSDF RV.1 in a code and prebuild context using open-source tools, the focus shifts to detecting and remediating vulnerabilities before any artifact is built, so fixes happen in code/manifest PRs, not after packaging.
Tasks |
Tools |
RV.1.1: Gather information from software acquirers, users, and public sources on potential vulnerabilities in the software and third-party components that the software uses, and investigate all credible reports.
RV.1.2: Review, analyze, and/or test the software’s code to identify or confirm the presence of previously undetected vulnerabilities.
RV.1.3: Have a policy that addresses vulnerability disclosure and remediation, and implement the roles, responsibilities, and processes needed to support that policy.
|
OSV-Scanner
Scans source trees and manifest/lock files against OSV for known vulnerabilities for discovery early in development.
|
Ortelius Evidence Store
Continuously synchronizes Software Bill of Material versions of built artifacts to OSV.dev reporting on vulnerabilities discovered post-build.
|
Semgrep
Rule-based SAST in PRs/CI for previously undetected vulnerabilities. Static analysis tool used for searching code, finding bugs, and enforcing code standards at various stages of the development cycle (editor, commit, and continuous integration - CI).
|
OWASP Dependency Check
SCA for many ecosystems; runs in CI, outputs SARIF/HTML. CVE-based dependency matching for code-time feedback.
|
Trivy
Can source/lockfiles and IaC before build. All-in-one SCA + IaC misconfig checks pre-build.
|
Syft
Generate SBOMs (CycloneDX/SPDX) directly from source. Composition/provenance data to power RV.1 discovery.
|
Grype
Scan source directories or Software Bill of Materials (from Syft) for vulnerabilities. Accurate matching via SBOM + flexible CI integration.
|
SonarQube Community
Developers can continuously inspect code quality to detect bugs, code smells, and security vulnerabilities without executing the code.
|
CodeQL
Developed by GitHub, developers and security researchers can analyze codebases for security vulnerabilities, bugs, and other code quality issues.
|
Bandit (Python)
A static analysis tool designed to identify common security vulnerabilities in Python code.
|
Brakeman (Rails)
Vulnerability scanner specifically designed for Ruby on Rails applications.
|
FindSecBugs (Java)
Static code analysis tool designed for Java applications, used to identify potential security vulnerabilities within the code.
|
Gitleaks
Prevent hardcoded secrets in code and configs.
|
Conftest
Conftest is a utility to help you write tests against structured configuration data.
|
RV.2
Assess, Prioritize, and Remediate Vulnerabilities: Help ensure that
vulnerabilities are remediated in accordance with risk to reduce the window of opportunity for attackers.
To satisfy SSDF RV.2 in a code and prebuild context using open-source tools, the focus shifts to:
-
Recording each vulnerability
-
Analyze risk (exploitability & impact)
-
Choose responses, publish advisories, and deliver remediations via trusted mechanisms; include temporary mitigations where needed.
Tasks |
Tools |
RV.2.1: Analyze each vulnerability to gather sufficient information about risk to plan its remediation or other risk response.
RV.2.2: Plan and implement risk responses for vulnerabilities.
|
GUAC
Aggregates SBOMs, attestations, and vulns to understand blast radius and prioritize fixes.
|
Renovate
Automates dependency upgrades/patch PRs with risk-aware policies.
|
OWASP DefectDojo
Ingest scanner results (Semgrep/Grype/Trivy/etc.) for de-dupe, severity, ownership, and workflow. Central vulnerability triage and risk tracking tied to repos.
|
Ortelius Evidence Store
Exposes the blast radius of each vulnerability across live environments.
|
Vulns
Agentless vulnerability scanner that analyzes installed packages and maps to CVE data with CVSS scoring. Provides severity, exploitability, and remediation recommendations; can integrate with patch workflows.
|
Dependency-Track
Continuous SBOM-based component analysis platform. Enriches vulnerabilities with metadata (severity, exploitability, policy impact).
|
VEX
VEX bridges the gap between identifying potential vulnerabilities (SBOM) and determining their actual risk in a specific environment. Allows organizations to prioritize remediation efforts by focusing on vulnerabilities that are truly exploitable and require immediate attention.
|
RV.3
Analyze Vulnerabilities to Identify Their Root Causes: Help reduce the frequency of vulnerabilities in the future.
To satisfy SSDF RV.3 in a code and prebuild context using open-source tools, the focus shifts to:
-
Identify vulnerabilities in source code and dependency manifests before building, using SBOM generation, SCA, and SAST
-
Confirming findings by removing false positives and documenting minimal evidence for remediation
-
Enforcing early guardrails such as version pinning, deny-lists, and secret scanning to block known risks
-
Normalize, de-duplicate, and prioritize findings based on severity, exploitability, and usage context
-
Apply policy-driven gates in PRs to block high-risk vulnerabilities and automate safe dependency updates
-
Assign ownership, require disposition for each finding, and govern exceptions with time-bound waivers or VEX records
Tasks |
Tools |
RV.3.1: Analyze identified vulnerabilities to determine their root causes.
RV.3.2: Analyze the root causes over time to identify patterns, such as a particular secure coding practice not being followed consistently.
RV.3.3: Review the software for similar vulnerabilities to eradicate a class of vulnerabilities, and proactively fix them rather than waiting for external reports.
RV.3.4: Review the SDLC process, and update it if appropriate to prevent (or reduce the likelihood of) the root cause recurring in updates to the software or in new software that is created.
|
SpotBugs + FindSecBugs
Maintains a “guardrail” ruleset for historical issues. Provides pattern-class eradication across modules.
|
Semgrep
Encode RCAs as rules (e.g., ban insecure APIs, enforce sanitizers) and run in PRs. Catches the class of bug that caused the incident.
|
OpenSSF Scorecard
Monitor repo hygiene signals (Branch protection, dependency-pinning, fuzzing, etc.) and bake improvements into SDLC. Preventative controls aligned to root-cause themes.
|
Codeql
Query codebases to trace vulnerability origins (e.g., find all injection points).
|
SonarQube Community
Identifies code quality/security rule violations that may indicate systemic coding issues.
|
DefectDojo
Aggregates scanner results so patterns in vulnerability types are easier to spot.
|
Dependency-Track
Tracks vulnerable components and shows recurring dependency-related issues.
|
Grype
A vulnerability scanner for container images and file systems.
|
Syft
Correlates SBOMs across releases to identify repeated dependency issues.
|
Bandit (Python)
Language-specific security scanner to identify same flaw across multiple files.
|
Brakeman (Rails)
Finds repeated insecure coding practices in Rails apps.
|
pre-commit
Enforces code quality/security hooks before commits.
|
Husky
Git hook automation for JavaScript/TypeScript projects to enforce checks.
|
Checkov
Prevents misconfigurations from being deployed by embedding into existing developer workflows.
|
tfsec
Adds IaC guardrails to prevent insecure configurations at commit time.
|
kics
Finds security vulnerabilities, compliance issues, and infrastructure misconfigurations.
|
2 - Phase 2: Build and Deploy
Security Compliance for Build and Deploy
Introduction
As software moves from development to production, the build and deploy stages play a pivotal role in maintaining the integrity, security, and provenance of your application. These phases involve compiling, packaging, and preparing your application for its live environment, making them prime targets for supply chain attacks, unauthorized modifications, and hidden vulnerabilities.
Integrating security into these phases ensures that your code is not only functional but also safeguarded against threats. From dynamic analysis during builds to automated scans for container security and misconfigurations, the right tools can help identify risks before deployment. Moreover, secure deployment pipelines prevent unauthorized changes, enforce compliance, and enable safe rollouts. Compliance for Build and Deploy steps include:
|
|
Reproducible and Deterministic Builds |
Ensure that software artifacts can be independently verified and reproduced to prevent tampering. |
Automated Threat Detection and Compliance Enforcement |
Integrate continuous security analysis to detect misconfigurations, vulnerabilities, and unauthorized dependencies before deployment. |
Policy-Enforced Deployments |
Enforce verifiable security policies ensuring only compliant, attested software reaches production. |
Trusted Execution Environments (TEEs) |
Secure build environments against tampering using hardware-backed execution environments. |
Cryptographic Attestation |
Use digital signatures and cryptographic proofs to verify the authenticity and integrity of builds and deployments. |
Following are guidelines from industry frameworks with suggested open source tooling needed to achieve the compliance goals.
2.1 - Secure Software Development Framework
Secure Software Development Framework and Build/Deploy CI/CD Steps
Achieving Build and Deploy Tasks of the Secure Software Development Framework
The Secure Software Development Framework, developed by the National Institute of Standards and Technology (NIST), provides a comprehensive approach to ensuring security across the software development process, from initial design through deployment and maintenance. The framework outlines key practices and guidelines that organizations can implement to secure their software development lifecycle (SDLC), with a particular emphasis on integrating security into automated processes. This chapter focuses specifically on DevSecOps tooling and practices related to Build and Deploy actions of the CI/CD pipeline to achieve:
|
|
Prepare the Organization (PO) |
Organizations should ensure that their people, processes, and technology are prepared to perform secure software development at the organization level. Many organizations will find some PO practices to also be applicable to subsets of their software development, like individual development groups or projects. |
Protect the Software (PS) |
Organizations should protect all components of their software from tampering and unauthorized access. |
Produce Well-Secured Software (PW) |
Organizations should produce well-secured software with minimal security vulnerabilities in its releases. |
Respond to Vulnerabilities (RV) |
Organizations should identify residual vulnerabilities in their software releases and respond appropriately to address those vulnerabilities and prevent similar ones from occurring in the future. |
2.1.1 - Protect the Organization (PO)
Protect the Organization (PO) for the Build and Deploy CI/CD Steps
Protect the Organization (PO)
Organizations should ensure that their people, processes, and technology are prepared to perform secure software development at the organization level. Many organizations will find some PO practices to also be applicable to subsets of their software development, like individual development groups or projects.
PO.1
Define Security Requirements for Software Development: Ensure that security requirements for software development are known at all times so that they can be taken into account throughout the SDLC and duplication of effort can be minimized because the requirements information can be collected once and shared. This includes requirements from internal sources (e.g., the organization’s policies, business objectives, and risk management strategy) and external sources (e.g., applicable laws and regulations).
To satisfy SSDF PO.1 in a Build and Deploy context using open-source tools, the focus shifts from just defining to:
-
Enforcing security policies on dependencies, code, and configurations.
-
Verifying compliance with established security baselines before deployment.
-
Ensuring artifacts meet DoD, NIST, or organizational security requirements.
Tasks |
Tools |
P.O.1.1: Identify and document all security requirements for the organization’s software development infrastructures and processes, and maintain the requirements over time.
PO.1.2 Identify and document all security requirements for organization-developed software to meet, and maintain the requirements over time.
|
Open Policy Agent
Enforces security and compliance policies during build and deployment (e.g., blocking deployments if SBOM scan fails).
|
Conftest
Uses OPA’s Rego language to test Kubernetes manifests, Terraform, and Dockerfiles against predefined security requirements.
|
InSpec
Tests infrastructure and deployed applications against compliance frameworks (e.g., CIS Benchmarks, NIST 800-53).
|
Kyverno
Kubernetes-native policy engine to enforce secure configurations at deploy time.
|
Checkov
Scans Infrastructure-as-Code (IaC) during build to ensure compliance with security requirements before deploy
|
Trivy
Scans container images, IaC, and SBOMs for vulnerabilities and misconfigurations before deployment.
|
Clair
Static analysis for container images to ensure they meet security requirements before push to registry.
|
Grype
Vulnerability scanning for container images and filesystems to validate artifacts against policy before deploy.
|
Sigstore Cosign
OPA-based admission controller to enforce compliance on Kubernetes clusters before allowing deployment.
|
PO.2
Implement Roles and Responsibilities: Ensure that everyone inside and outside of the organization involved in the SDLC is prepared to perform their SDLC-related roles and responsibilities throughout the SDLC.
To satisfy SSDF PO.2 in a Build and Deploy context using open-source tools, the focus shifts to:
-
Enforcing role-based access control (RBAC) to limit who can trigger builds, approve changes, and deploy.
-
Providing audit logs and traceability of actions for accountability.
-
Ensuring code changes and deployments are reviewed by authorized personnel.
Tasks |
Tools |
PO.2.1: Create new roles and alter responsibilities for existing roles as needed to encompass all parts of the SDLC. Periodically review and maintain the defined roles and responsibilities, updating them as needed.
PO.2.2: Provide role-based training for all personnel with responsibilities that contribute to secure development. Periodically review personnel proficiency and role-based training, and update the training as needed
PO.2.3: Obtain upper management or authorizing official commitment to secure development, and convey that commitment to all with development related roles and responsibilities.
|
Keycloak
Open-source identity and access management for enforcing RBAC in CI/CD pipelines and deployment tools.
|
Dex
Federated OpenID Connect provider to integrate developer identities into build and deploy systems for role-based access.
|
Vault by HashiCorp
Securely manages and controls access to secrets based on defined roles during builds and deployments.
|
Argo CD
GitOps deployment tool with RBAC to control who can sync, approve, or rollback deployments.
|
Jenkins with Role Strategy Plugin
Adds fine-grained RBAC to Jenkins pipelines, limiting build and deployment actions to authorized roles.
|
Tekton Pipelines
Kubernetes-native CI/CD with Kubernetes RBAC to control pipeline execution permissions.
|
Flux CD
GitOps tool enforcing RBAC for deployment workflows and requiring approvals for changes.
|
Kubernetes RBAC
Built-in access control to restrict who can deploy, modify, or delete workloads.
|
Gitea
Self-hosted Git service with user roles and repository permissions to enforce approval and review workflows.
|
Auditbeat
Provides audit logging for build and deploy actions, helping track compliance with assigned responsibilities.
|
PO.3
Implement Supporting Toolchains: Use automation to reduce human effort and improve the accuracy, reproducibility, usability, and comprehensiveness of security practices throughout the SDLC, as well as provide a way to document and demonstrate the use of these
practices. Toolchains and tools may be used at different levels of the organization, such as organization-wide or project-specific, and may address a particular part of the SDLC, like a build pipeline.
To satisfy SSDF PO.3 in a Build and Deploy context using open-source tools, the focus shifts to:
-
Ensuring build and deployment tools are configured securely and kept patched.
-
Protecting against supply chain attacks targeting the CI/CD pipeline.
-
Verifying the integrity of tools and artifacts before use.
-
Controlling and monitoring access to toolchains.
Tasks |
Tools |
PO.3.1: Specify which tools or tool types must or should be included in each toolchain to mitigate identified risks, as well as how the toolchain components are to be integrated with each other.
PO.3.2: Follow recommended security practices to deploy, operate, and maintain tools and toolchains.
PO.3.3: Configure tools to generate artifacts6 of their support of secure software development practices as defined by the organization.
|
Sigstore Cosign
Signs and verifies build artifacts to prevent deploying tampered software.
|
SLSA Framework + slsa-verifier
Ensures build provenance and verifies the integrity of artifacts before deploy.
|
Gitleaks
Scans repos and build pipelines for secrets before build execution.
|
Argo CD
GitOps deployment tool with RBAC to control who can sync, approve, or rollback deployments.
|
Trivy
Scans CI/CD tool containers and dependencies for vulnerabilities.
|
Syft
Generates SBOMs for build artifacts to track components used in the toolchain.
|
Clair
Analyzes container images used in builds/deploys for vulnerabilities.
|
Vault by HashiCorp
Protects secrets used by build/deploy tools, ensuring they’re not exposed in pipelines.
|
DefectDojo
Centralizes and tracks security testing results for build and deploy toolchains.
|
Open Policy Agent (OPA)
agent.org/ Enforces security rules on CI/CD and deployment workflows to prevent unsafe actions
|
Auditbeat
Monitors and logs CI/CD toolchain activity for integrity and compliance.
|
PO.4
Define and Use Criteria for Software Security Checks: Help ensure that the software resulting from the SDLC meets the organization’s expectations by defining and using criteria for checking the software’s security during development.
To satisfy SSDF PO.4 in a Build and Deploy context using open-source tools, the focus shifts to:
-
Applying consistent security testing and validation practices before release.
-
Automating security checks in CI/CD pipelines.
-
Using standardized processes for verifying, signing, and tracking artifacts.
-
Integrating security gates so no insecure artifact is deployed.
Tasks |
Tools |
PO.4.1: Define criteria for software security checks and track throughout the SDLC.
PO.4.2: Implement processes, mechanisms, etc. to gather and safeguard the necessary information in support of the criteria.
|
OWASP Dependency-Check
Automates open-source dependency scanning in builds to enforce consistent vulnerability detection.
|
Semgrep
Static analysis integrated into builds to ensure consistent code security checks before deploy.
|
Bandit (for Python)
Python security linting in build pipelines to maintain consistent language-specific checks.
|
Trivy
Consistent vulnerability and IaC scanning before deployment.
|
Grype
Maintains consistent vulnerability scanning for all build artifacts.
|
InSpec
Automates compliance checks before deployment to ensure practices match organizational standards.
|
Sigstore Cosign
Standardizes artifact signing and verification so only trusted builds are deployed.
|
Open Policy Agent (OPA)
Enforces organization-wide deployment policies across all environments.
|
DefectDojo
Centralizes and standardizes vulnerability tracking and remediation workflows across builds.
|
PO.5
Implement and Maintain Secure Environments for Software Development: Ensure that all components of the environments for software development are strongly protected from internal and external threats to prevent compromises of the
environments or the software being developed or maintained within them. Examples of environments for software development include development, build, test, and distribution environments.
To satisfy SSDF PO.5 in a Build and Deploy context using open-source tools, the focus shifts to:
-
Protecting CI/CD infrastructure from internal and external threats.
-
Hardening build servers, container registries, and deployment systems.
-
Ensuring build and deploy environments are patched, monitored, and access-controlled.
-
Preventing malicious code or tampering in the software supply chain.
Tasks |
Tools |
PO.5.1: PO.5.1: Separate and protect each environment involved in software development.
PO.5.2: Secure and harden development endpoints (i.e., endpoints for software designers, developers, testers, builders, etc.) to perform development-related tasks using a risk-based approach.
|
Jenkins Configuration as Code + Role Strategy Plugin
Secures Jenkins build servers with codified configs and RBAC to limit access to critical build jobs.
|
Tekton Pipelines
GitOps deployment with RBAC and signed commit enforcement for production deploys.
|
Argo CD
GitOps deployment with RBAC and signed commit enforcement for production deploys.
|
Vault by HashiCorp
Protects secrets in build and deploy environments, preventing leakage in pipelines
|
Sigstore Cosign
Signs build artifacts and verifies them before deployment to ensure no tampering occurred.
|
In-toto
Provides end-to-end software supply chain security, ensuring each step in build/deploy is signed and verified.
|
Inspec
Runs ongoing compliance scans against development and build servers; enforce CIS/NIST benchmarks.
|
SLSA + slsa-verifier
Verifies build provenance, ensuring artifacts come from a trusted, uncompromised build environment.
|
Trivy
Scans build/deploy infrastructure containers and images for vulnerabilities and misconfigurations.
|
Falco
Runtime security for build and deploy environments to detect malicious behavior or unauthorized activity.
|
Auditbeat
Monitors build and deploy servers for file integrity changes, unauthorized access, and security events
|
Kyverno
Enforces Kubernetes security policies in deployment environments (e.g., no privileged pods).
|
2.1.2 - Protect the Software (PS)
Protect the Software (PS) for Build and Deploy CI/CD Steps
Protect the Software (PS)
Protect the Software (PS): Organizations should protect all components of their
software from tampering and unauthorized access.
PS.1
Protect All Forms of Code from Unauthorized Access and Tampering : Help prevent unauthorized changes to code, both inadvertent and intentional, which could circumvent or negate the intended security characteristics of the software. For code that is not intended to be publicly accessible, this helps prevent theft of the software and may make it more difficult or time-consuming for attackers to find vulnerabilities in the software.
To satisfy SSDF PS.1 in a build and deploy context using open-source tools, the focus shifts from just defining to:
-
Secure the CI/CD pipeline itself – ensure only trusted, authenticated processes can produce build outputs.
-
Protect source inputs and dependencies, lock versions, use checksums, and prevent injection of malicious code into the build process.
-
Sign artifacts and record provenance, generate cryptographically verifiable metadata proving what was built, from which source, and by whom.
-
Enforce reproducible builds so that any tampering results in a hash/signature mismatch.
-
Restrict build system access and enforce role-based permissions, MFA, and least privilege for build servers
Tasks |
Tools |
PS.1.1: Store all forms of code including source code, executable code, and configuration-as-code based on the principle of least privilege so that only authorized personnel, tools, services, etc. have access.
|
cosign Sigstore
Sign build outputs (binaries, containers, SBOMs) and create attestations; verify in CI before promotion.
|
Git signed commits/tags
Require signed commits/tags and reject unsigned in CI to prevent unauthorized code from entering builds.
|
Sigstore Fulcio + Rekor
Issue short-lived certs (Fulcio) and record signatures/attestations in a transparency log (Rekor) to detect/trace tampering.
|
SLSA provenance (generators + verifier)
Emit and sign build provenance; verify who/what/where built the artifact before it can ship.
|
In-toto
Define a supply-chain layout and verify each step’s materials/products to ensure nothing was tampered across the pipeline.
|
Tekton Chains
Automatically sign task results (images, files) in Tekton pipelines and store attestations (e.g., in Rekor).
|
Notation (CNCF Notary v2)
Sign OCI artifacts (images, Helm charts) during build for later verification in registries and clusters.
|
Nix
Lock inputs and make builds deterministic so unauthorized changes are detectable by hash/provenance mismatch.
|
Bazel
Lock inputs and make builds deterministic so unauthorized changes are detectable by hash/provenance mismatch.
|
Grafeas
Persist signatures, SBOMs, and policy metadata to audit build integrity across services..
|
Harbor
Enforce content trust, robot accounts, and policy on who can push/pull; require signed artifacts before release..
|
Sigstore Policy Controller
Admission controller that blocks unsigned/incorrectly signed images; enforces key/issuer/subject policies.
|
Kyverno
Kubernetes policies that require image signatures, pin by digest, and forbid mutable tags in deployments.
|
OPA Gatekeeper
Gate deployments with custom policies (e.g., “only signed images from approved registries/namespaces”).
|
Ratify
Verifies OCI signatures/attestations (Cosign/Notation) at admission time and blocks anything that fails verification.
|
Connaisseur
Kubernetes admission controller dedicated to verifying container image signatures before scheduling.
|
Sigstore Cosign
Verify signatures/attestations as a release gate in your CD pipeline prior to applying manifests.
|
PS.2
Provide a Mechanism for Verifying Software Release Integrity: Help software acquirers ensure that the software they acquire is legitimate and has not been tampered with. Make software integrity verification information available to software acquirers.
To satisfy SSDF PS.2 in a build and deploy context using open-source tools, the focus shifts to:
-
Generate integrity artifacts for every release
-
Bind artifacts to versioned source
-
Publish verification materials
-
Require integrity checks as a release gate
-
Expose verification data to consumers
-
Admission control based on integrity
Tasks |
Tools |
PS.2.1: Make software integrity verification information available to software acquirers.
|
cosign Sigstore
Sign binaries, container images, SBOMs, and attestations during build; supports keyless signing.
|
Git signed commits/tags
Sign release tags to cryptographically tie the source to the built artifact.
|
Sigstore Fulcio + Rekor
Fulcio issues ephemeral signing certs; Rekor logs all signatures in a tamper-evident transparency log for downstream verification.
|
SLSA provenance (generators + verifier)
Automatically generate provenance metadata describing build origin, inputs, and process. Validates provenance files to ensure artifact integrity before distribution.
|
In-toto
Defines a verifiable software supply chain layout; creates link metadata proving each build step.
|
Grafeas
Stores metadata (signatures, checksums, SBOMs) so it can be queried for verification.
|
GNU Coreutils / sha256sum
Create and publish checksums for release artifacts so recipients can manually or automatically verify integrity.
|
Harbor
Enforce content trust; ensure only signed images are stored and distributed with policy on who can push/pull; require signed artifacts before release.
|
Sigstore Policy Controller
Kubernetes admission controller enforcing signature/provenance policies before deployment. Admission controller that blocks unsigned/incorrectly signed images; enforces key/issuer/subject policies.
|
Kyverno
Kubernetes policies that require image signatures, pin by digest, and forbid mutable tags in deployments. Validates signatures and digests for container images before they are deployed.
|
OPA Gatekeeper
Custom admission control to enforce artifact integrity and trusted signer policies.
|
Ratify
Pluggable verification framework for OCI registries/images; works with Cosign, Notation, in-toto.
|
Connaisseur
Kubernetes admission controller dedicated to signature verification and image trust policies.
|
Notation
Signs OCI artifacts (containers, Helm charts) and verifies them prior to install or deployment.
|
Sigstore Cosign
Used in CD pipelines or admission hooks to verify signatures and attestations match trusted keys/policies before promotion.
|
PS.3
Archive and Protect Each Software Release: Preserve software releases in order to help identify, analyze, and eliminate vulnerabilities discovered in the software after release.
To satisfy SSDF PS.3 in a build and deploy context using open-source tools, the focus shifts to:
-
Build: The emphasis is on capturing, storing, and securing every official release (source, binaries, SBOM, signatures, provenance) in immutable, versioned storage.
-
Deploy: The emphasis is on ensuring only those archived, protected releases are used in production with immutability, digest pinning, and signature/provenance verification as enforcement mechanisms.
Tasks |
Tools |
PS.3.1: Securely archive the necessary files and supporting data (e.g., integrity verification information, provenance data) to be retained for each software release.
PS.3.2: Collect, safeguard, maintain, and share provenance data for all components of each software release (e.g., in a software bill of materials [SBOM]).
|
Git (Release Tagging)
Create immutable, signed tags for each release; preserves source snapshot for auditing
|
Git LFS
Store large binary release artifacts alongside source with integrity checks.
|
Nexus Repository OSS
OSS Host and version control release artifacts (JARs, binaries, containers) with role-based access and checksum validation.
|
JFrog Artifactory OSS
Archive build outputs in a controlled, versioned repository; supports checksums and retention policies.
|
Harbor
Store container images with vulnerability scanning, RBAC, and signed content trust to preserve release integrity. Enforce immutable tags and prevent overwrites so deployed artifacts can always be traced back to the archived copy.
|
OSS Review Toolkit
(ORT) Archive SBOMs, license files, and vulnerability reports alongside the release for compliance/audit.
|
Sigstore Cosign
Sign release artifacts before archiving so integrity can be checked later.
|
Kyverno
Enforce digest-pinned images to ensure deployments always match archived release versions.
|
OPA Gatekeeper
Policy enforcement to ensure only archived, approved artifacts are deployed.
|
Ratify
Verifies artifact signatures/attestations against archived release metadata before deployment..
|
Connaisseur
Admission controller that enforces deployment of only signed images from the archived se
|
Backblaze B2 / Rclone (OSS integration)
Long-term archival of deployed artifact versions for rollback or investigation.
|
SLSA Provenance + Rekor
Retain build provenance in a transparency log so deployed releases can be cross-verified with archived originals
|
2.1.3 - Produce Well-Secured Software (PW)
Produce Well-Secured Software (PW) in the Build and Deploy CI/CD Steps
Produce Well-Secured Software (PW)
Organizations should produce well-secured software with minimal security vulnerabilities in its releases.
PW.1
Design Software to Meet Security Requirements and Mitigate Security Risks: Identify and evaluate the security requirements for the software; determine what security risks the software is likely to face during operation and how the software’s design and architecture should mitigate those risks; and justify any cases where risk-based analysis indicates that security requirements should be relaxed or waived. Addressing security requirements and risks during software design (secure by design) is key for improving software security and also helps improve development efficiency.
To satisfy SSDF PW.1 in a build and deploy context using open-source tools, the focus shifts to:
-
Embedding security controls directly into the build process
-
Validating that build outputs (binaries, containers, packages) are hardened and free from known design-level weaknesses
-
Preserving traceability from design requirements to deployed artifacts
Tasks |
Tools |
PW.1.1: Use forms of risk modeling, such as threat modeling, attack modeling, or attack surface mapping to help assess the security risk for the software.
PW.1.2: Track and maintain the software’s security requirements, risks, and design decisions.
PW.1.3: Where appropriate, build in support for using standardized security features and services (e.g., enabling software to integrate with existing log management, identity management, access control, and vulnerability management systems) instead of creating proprietary implementations of security features and services.
|
Semgrep
Prevents insecure code from being packaged and deployed.
|
Trivy
Ensures that deployed artifacts align with secure baseline configurations
|
Zap (Zed Attack Proxy)
Enforces approved component lists and security baselines before deployment.
|
Syft
Generates SBOMs for deployed applications for ongoing monitoring.
|
OWASP Dependency-Track
Enforces approved component lists and security baselines before deployment.
|
Grype
Focused vulnerability scanning for deployed artifacts.
|
Nix
Guarantees that build artifacts match the security-approved design exactly, with no drift or environmental differences.
|
GNU Guix
Ensures that all deployed artifacts are built from a traceable, verifiable environment that aligns with design security baselines.
|
Bazel
Enforces secure build rules, prevents unauthorized changes, and produces identical outputs across build agents.
|
Reproducible Builds Framework
Strengthens supply chain security by detecting unauthorized modifications between source and deployment.
|
Apko (Chainguard)
Implements secure design principles like minimal attack surface and verified dependency selection.
|
Sigstore(Cosign,Fulcio, Rekor)
Ensures artifacts come from a trusted, verified build process and haven’t been altered.
|
Notary
Provides cryptographic assurance that deployed artifacts are authentic and untampered.
|
In-Toto
Enforces integrity and accountability across the entire build-to-deploy pipeline.
|
The Update Framework (TUF)
Protects the integrity of deployment and update distribution channels.
|
OpenSSL
Generate and manage keys for signing build artifacts. Implement TLS/SSL for secure communication between build agents and artifact repositories.
|
GnuPG
Sign source code, commits, and build outputs and verify signatures before deploying artifacts.
|
Bouncy Castle
Embed cryptographic signing and verification into Java/.NET build pipelines.
|
Keylime
Validate that deployment environments meet hardware-based integrity requirements before deployment.
|
Ethereum Attestation Service (EAS)
Publish cryptographic attestations of build provenance or deployment approvals and provide a decentralized, tamper-proof audit log of artifact trust data.
|
Kyverno
Enforce secure deployment design policies (e.g., approved base images, disallowed configurations).
|
OPA
Enforce security design requirements at build time (e.g., dependency approval, CVE thresholds). Apply consistent policy enforcement from build pipelines to runtime.
|
SPIFFE/SPIRE
Ensure that deployed workloads meet security requirements for mutual authentication and zero trust and bind workload identity to build-time provenance for deployment integrity.
|
OWASP Threat Dragon
Embeds threat models into CI/CD, ensuring security requirements are tied to architectural components before build. (Meets PW.1.1 and PW.1.2)
|
OWASP Amass
Helps to refine security requirements around network exposure and asset inventory. (Meets PW.1.1)
|
CAIRIS
Integrates security requirements into system models, which can then be validated in build & deploy. (Meets PW.1.1)
|
Threagile
Embeds threat models into CI/CD, ensuring security requirements are tied to architectural components before build. (Meets PW.1.1)
|
Open-Needs
Requirements management tool for defining, tracking, and validating security requirements. Documents security requirements and links them to commits and build outputs.(Meets PW.1.1 and PW.1.2)
|
rmtoo
Requirements management tool using plain text and version control for traceability. Supports traceability from design through build, ensuring requirements are carried into final artifacts.(Meets PW.1.2)
|
OpenRMF® OSS
Open-source compliance and risk management framework tool for tracking RMF (NIST 800-37) controls. Security requirements map to formal compliance controls that can be verified in build & deploy artifacts. (Meets PW1.2)
|
PW.2
Review the Software Design to Verify Compliance with Security Requirements and Risk Information:Help ensure that the software will meet the security requirements and satisfactorily address the identified risk information.
To satisfy SSDF PW.2 in a the build and deploy context using open-source tools, the is:
-
Validating security architecture decisions before deploying
-
Reviewing IaC and CI/CD configs to ensure they meet security baselines
-
Enforcing design rules automatically in build pipelines
-
atching misconfigurations and security gaps before release
Tasks |
Tools |
PW.2.1: Have 1) a qualified person (or people) who were not involved with the design and/or 2) automated processes instantiated in the toolchain review the software design to confirm and enforce that it meets all of the security requirements and satisfactorily addresses the identified risk information.
|
OPA
Automated design compliance gate in CI/CD
|
Kyverno
Validates deployment configurations match approved security architecture.
|
Checkov
Enforce network segmentation rules, encryption requirements, and secure defaults.
|
KICS (Keeping Infrastructure as Code Secure)
Adds IaC review automation to the build process.
|
Semgrep
Automated code review for alignment with security design requirements.
|
Trivy (Config Scanning)
Config compliance verification before deploying.
|
ThreatSpec
Ensures threat model-driven design requirements are implemented.
|
Cartography
Post-build/pre-deploy architecture verification. Detect deviations from intended architecture.
|
kube-score
Review Kubernetes manifests for design compliance before deployment.Ensures pod security settings match approved deployment designs.
|
Dependabot
Automated dependency update PRs with vulnerability alerts. Helps verify dependencies meet security requirements (e.g., no known CVEs, minimum versions).
|
OpenRMF
Open Risk Management Framework tracking tool. Can map design-level security requirements to NIST 800-53 controls and verify those controls are implemented in build configs.
|
ESLint
Runs in CI/CD pipelines or as a pre-commit hook to block merges if code violates the approved security or architectural rules before build.
|
Grype
SBOM-driven vulnerability scanner for images/filesystems. Validates that dependencies in the build match security baselines and are free from disallowed components.
|
Clair
Static vulnerability analysis for container images. Confirms final images meet design security requirements before deployment.
|
Terrascan
IaC scanning and policy enforcement (OPA-based). Enforces approved security design in Terraform, Kubernetes, Docker, and AWS CloudFormation configs before deploy.
|
Gerrit
Code review and approval workflow tool. Enforces human review against design and security requirements before merge to release branches.
|
PW.4
Reuse Existing, Well-Secured Software When Feasible Instead of Duplicating Functionality : Lower the costs of software development, expedite software development, and decrease the likelihood of introducing additional security vulnerabilities into the software by reusing software modules and services that have already had their security posture checked. This is particularly important for software that implements security functionality, such as cryptographic modules and protocols.
Note: PW.3 moved to PW.4
To satisfy SSDF PW.4 in a build and deploy context using open-source tools, the focus shifts to:
-
Baking secure defaults into application code, containers, and deployment manifests
-
Removing insecure, legacy, or unnecessary features from build artifacts
-
Automatically applying baseline security settings during deployment
-
Enforcing hardening standards before release
Tasks |
Tools |
PW.4.1: Acquire and maintain well-secured software components (e.g., software libraries, modules, middleware, frameworks) from commercial, opensource, and other third-party developers for use by the organization’s software.
PW.4.2: Create and maintain well-secured software components in-house following SDLC processes to meet common internal software development needs that cannot be better met by third-party software components.
PW.4.3: Moved to PW.1.3
PW.4.4: Verify that acquired commercial, open-source, and all other third-party software components comply with the requirements, as defined by the organization, throughout their life cycles.
|
Kyverno
Ensures manifests meet secure baseline defaults before deployment.
|
OPA
Validates default configurations meet security requirements.
|
Checkovn
Detects and blocks insecure defaults in Terraform, Helm, or CloudFormation before release.
|
KICS (Keeping Infrastructure as Code Secure)
Validates hardened defaults in cloud infrastructure provisioning.
|
Trivy
Automated config compliance check during CI/CD.
|
CIS-CAT Lite
Automates compliance testing for secure defaults.
|
DevSec Hardening Framework
Bakes hardened defaults into container or VM images before release.
|
kube-score
Pre-deployment validation of secure defaults in manifests.
|
OpenSCAP
Ensures deployed OS images meet hardened defaults.
|
CycloneDX
SBOM format for documenting exact components/configurations in final build; helps verify secure defaults are present.
|
SPDX
SBOM standard to record all components, licenses, and provenance; can confirm inclusion of hardened dependencies.
|
ArtifactHub
Catalog of verified Helm charts, OLM operators, etc.; can enforce use of curated, secure-by-default packages.
|
JFrog Artifactory OSS
Repository manager for storing signed, verified artifacts with access controls.
|
Sonartype Nexus OSS
Host artifacts and enforce policy checks before they’re promoted.
|
Harbor
OCI registry with vulnerability scanning, content signing, and policy enforcement for images.
|
GitLab Signing
Commit/tag signing in GitLab CE for provenance.
|
GitHub CodeQL
Detects code patterns violating security requirements.
|
AquaSec Trivy
Scans container images, IaC, and configs for insecure defaults.
|
Allstar
GitHub App enforcing security policies in repos.
|
OWASP SAMM
Security maturity model to guide secure default practices.
|
OWASP ASVS
Application security requirements to verify secure defaults.
|
OWASP Defectdojo
Central vulnerability tracking; ensures issues found in builds are fixed before release.
|
OWASP Dependency-Check
Detects known-vulnerable dependencies in builds.
|
Gitea
Self-hosted Git service with signing/policy support.
|
GitLab (Community Edition)
Git platform with signing, scanning, CI/CD policy integration.
|
Pytest
Automated testing to confirm defaults work.
|
Selenium
Functional/UI test automation to verify secure settings.
|
Playwright
Functional/UI test automation to verify secure settings.
|
OWASP ZAP
DAST scanner to verify app defaults are not exploitable.
|
TestNG
Java test framework for security/functional checks
|
Cucumber
BDD framework for verifying functional + security requirements.
|
Clair
Image vulnerability scanner for OCI registries.
|
Grype
SBOM-driven vuln scanner for builds and images
|
Bandit for Python
Detects insecure code patterns/defaults in Python.
|
Semgrep
Finds policy-violating patterns in code.
|
Brakeman
Detects Rails-specific security issues/defaults.
|
Gitleaks
Detects secrets in code (prevents default creds exposure).
|
TruffleHog
Finds secrets in repos/history to avoid insecure defaults.
|
OWASP Dependency-Check
Detects known-vulnerable dependencies in builds.>
|
OSS Review Toolkit (ORT)
Automates license/security checks; blocks noncompliant components.
|
FOSSA (Community Edition)
License/dependency scanning; ensures compliance with default policies.
|
ScanCode Toolkit
Detects license, copyright, and security metadata in artifacts.
|
Tern
Container image inspection for dependency/component details.
|
Open Policy Agent (OPA)
Policy-as-code for build & deploy; blocks insecure defaults in configs/manifests.
|
PW.5
Create Source Code by Adhering to Secure Coding Practices: Decrease the number of security vulnerabilities in the software, and reduce costs by minimizing vulnerabilities introduced during source code creation that meet or exceed organization-defined vulnerability severity criteria.
To satisfy SSDF PW.5 in a build and deploy context using open-source tools, the focus shifts to:
-
Software artifacts are stored in secure, controlled repositories.
-
Only approved, verified builds get stored and deployed.
-
Repository access is restricted and auditable.
-
Provenance and integrity checks are enforced before artifacts are accepted or deployed.
Tasks |
Tools |
PW.5.1: Follow all secure coding practices that are appropriate to the development languages and environment to meet the organization’s requirements.
|
Artifactory Community Edition
Acts as the central trusted artifact repository.
|
Nexus Repository OSS
Acts as the central trusted artifact repository.
|
Harbor
Acts as the central trusted artifact repository.
|
Sigstore(Cosign,Fulcio, Rekor)
Ensures repository contents are authentic and tamper-free.
|
Clair
Ensures stored artifacts meet vulnerability requirements before deployment
|
In-Toto
Enforces provenance checks at repository ingestion.
|
The Update Framework (TUF)
Protects against repository and update tampering.
|
Notary (v2)
Controls supply chain intake and internal artifact storage.
|
Tekton Chains
Ties repository artifacts back to secure build pipelines.
|
Semgrep
Runs as part of the CI pipeline to automatically scan code for security flaws, policy violations, and unsafe patterns before artifacts are built. Supports rule-as-code to enforce secure build policies.
|
Bandit for Python
Python-focused static analyzer that checks for insecure functions, weak crypto, and common security issues before packaging or deployment.
|
FindBugs
Legacy Java static analysis; can be used to flag known insecure code patterns before build. Superseded by SpotBugs.
|
SpotBugs
Modern replacement for FindBugs. Java bytecode scanner to enforce safe code practices before compiling final artifacts.
|
SonarQube
Comprehensive SAST platform; can be integrated in CI/CD to enforce quality gates, stopping builds that fail security rules.
|
OWASP ZAP
Runs against built/staged applications in pre-deployment environments to detect exploitable vulnerabilities, ensuring no insecure version is promoted.
|
Arachni
Web application vulnerability scanner that can be part of a build’s QA stage to ensure secure release readiness.
|
OWASP Dependency-Check
Scans for known-vulnerable dependencies in the build, blocking insecure versions from being deployed.
|
PW.6
Configure the Compilation, Interpreter, and Build Processes to Improve Executable Security: Decrease the number of security vulnerabilities in the software and reduce costs by eliminating vulnerabilities before testing occurs.
To satisfy SSDF PW.6 in a build and deploy context using open-source tools, the focus shifts to make security testing continuous and automatic so every build and every deployment candidate is evaluated against a security bar, with evidence captured for audit and release gates.:
Tasks |
Tools |
PW.6.1: Use compiler, interpreter, and build tools that offer features to improve executable security.
PW.6.2: Determine which compiler, interpreter, and build tool features should be used and how each should be configured, then implement and use the approved configurations.
|
Semgrep
Fast rule-based SAST with CI integration.
|
SonarQube Community
General code quality + basic security rules.
|
Bandit
Python SAST linters.
|
Gosec
Go SAST linters.
|
Brakeman
Rails SAST linters.
|
FindSecBugs
Java SAST linters.
|
Trivy
Vulnerability scan images/filesystems against SBOMs.
|
Grype
Vulnerability scan images/filesystems against SBOMs.
|
Syft
Generate SBOMs (SPDX/CycloneDX) during build.
|
OWASP Dependency Track
Continuous SBOM monitoring and alerting post-build./p>
|
Gitleaks
Block commits/builds that contain secrets; run in CI and as pre-commit hooks.
|
Reproducible Builds
Provides methods, guidelines, and supporting tools for deterministic builds, ensuring integrity and verifiability of source-to-binary outputs.
|
Bazel
Build system with hermetic (sandboxed) execution and explicit dependency tracking, preventing hidden or unverified dependencies.
|
Meson
High-speed, deterministic build system that supports reproducibility and strict configuration-as-code.
|
Apache Maven
Enforces controlled dependency resolution and supports reproducible builds for Java and JVM-based projects.
|
Yocto Project
Creates reproducible, controlled build environments for embedded Linux images, preventing environmental drift.
|
AOSP Build System
Uses prebuilt toolchains and sandboxed environments for secure, reproducible Android builds.
|
PW.7
Review and/or Analyze Human-Readable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements: Help identify vulnerabilities so that they can be corrected before the software is released to prevent exploitation. Using automated methods lowers the effort and resources needed to detect vulnerabilities. Human-readable code includes source code, scripts, and any other form of code that an organization deems human readable.
To satisfy SSDF PW.7 in a build and deploy context using open-source tools, the focus shifts to:
-
Running automated code scanning in CI
-
Ensuring manual/peer review requirements are enforced before merging to release branches
-
Verifying code matches security policies defined earlier in PW.1 and validated in PW.2- Capturing audit evidence that review was completed before build artifacts are promoted
Tasks |
Tools |
PW.7.1: Determine whether code review (a person looks directly at the code to find issues) and/or code analysis (tools are used to find issues in code, either in a fully automated way or in conjunction with a person) should be used, as defined by the organization.
PW.7.2: Perform the code review and/or code analysis based on the organization’s secure coding standards, and record and triage all discovered issues and recommended remediations in the development team’s workflow or issue tracking system.
|
Semgrep
Runs automatically in CI before building deployment artifact.
|
SonarQube Community Edition
Integrates with CI/CD to enforce clean code before release
|
CodeQL
Detect SQL injection, XSS, or unsafe deserialization patterns in codebase.
|
GitLeaks
Protects against secret leakage in deployed artifacts
|
GitHub and GitLab
Require two reviewers for any code changes in security-critical modules.
|
DefectDojo
Provides verifiable audit trail for security review completion.
|
Sigstore Cosign
Provides verifiable audit trail for security review completion.
|
OWASP Dependency-Check
Continuously scans dependencies in each build for new CVEs. Can run on every commit or nightly in CI/CD.
|
OWASP ZAP
Can be automated in CI/CD to re-test staging environments for vulnerabilities as new code is deployed.
|
Retire.js
Focused on JavaScript libraries; detects newly disclosed vulnerabilities in frontend/back-end packages during builds.
|
Fossa
Scans dependencies for vulnerabilities and license issues, integrating with builds to catch new findings.
|
Bandit for Python
Runs in CI/CD for Python projects to catch newly introduced security issues.
|
Checkmarx KICS
Detecting Known Vulnerabilities – Compares IaC components and configurations against known security best practices and compliance frameworks (CIS Benchmarks, NIST, PCI-DSS).
|
Cppcheck for C++
Re-scans C/C++ code after every build to ensure no new issues were introduced.
|
FindSecBugs
Extension to SpotBugs that catches security flaws in Java bytecode continuously during the build cycle.
|
GitHub CodeQL
Performs continuous security queries on code with each pull request or scheduled scan.
|
PMD
Runs code quality and security rule checks on every commit/build.
|
SpotBugs
Java static analysis integrated into the build pipeline for continuous vulnerability detection.
|
Danger JS
Automates security-related PR review rules, preventing unsafe code from merging.
|
PW.8
Test Executable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements: Help identify vulnerabilities so that they can be corrected before the software is released in order to prevent exploitation. Using automated methods lowers the effort and resources needed to detect vulnerabilities and improves traceability and repeatability. Executable code includes binaries, directly executed bytecode and source code,
and any other form of code that an organization deems executable.
To satisfy SSDF PW.8 in a post-deployment context using open-source tools, the focus shifts to:
-
Running security tests against the final artifact in staging or pre-deployment environments
-
Validating runtime configuration, dependencies, and permissions of the artifact
-
Ensuring compliance with security baselines at the executable level
-
Capturing evidence of artifact test results for compliance gates
Tasks |
Tools |
PW.8.1: Determine whether executable code testing should be performed to find vulnerabilities not identified by previous reviews, analysis, or testing and, if so, which types of testing should be used.
PW.8.2: Scope the testing, design the tests, perform the testing, and document the results, including recording and triaging all discovered issues and recommended remediations in the development team’s workflow or issue tracking system.
|
Trivy
Run as a CI step after image build, before push to registry
|
Grype
Confirms that final executable meets vulnerability thresholds.
|
Syft
Feeds SBOM into SCA tools like Dependency-Track for ongoing monitoring
|
OpenSCAP
Ensures final artifact matches secure configuration requirements.
|
CIS-CAT Lite
Baseline enforcement step before promotion to production.
|
Zap (Zed Attack Proxy)
Pre-release runtime security testing.
|
In-toto + Sigstore Cosign Attestations
Provides verifiable evidence for compliance and audits.
|
PW.9
Configure Software to Have Secure Settings by Default: Help improve the security of the software at the time of installation to reduce the likelihood of the software being deployed with weak security settings, putting it at greater risk of compromise.
To satisfy SSDF PW.9 in a build and deploy context using open-source tools, the focus shifts to:
-
Embedding secure configs into container images, binaries, and IaC
-
Removing insecure or unused features before packaging
-
Applying security baselines (CIS, STIG, NIST) in the build process
-
Validating those defaults as part of CI/CD
-
Preventing insecure defaults from slipping into release candidates
Tasks |
Tools |
PW.9.1: Define a secure baseline by determining how to configure each setting that has an effect on security or a security-related setting so that the default settings are secure and do not weaken the security functions provided by the platform, network infrastructure, or services.
PW.9.2: Implement the default settings (or groups of default settings, if applicable), and document each setting for software administrators.
|
DevSec Hardening Framework
Automates baseline hardening during image creation.
|
Chainguard Apko
Produces secure-by-default container images.
|
Trivy
CI gate to block insecure defaults from being built/deployed.
|
Checkov
Prevents insecure IaC defaults from reaching deployment.
|
KICS
Prevents insecure IaC defaults from reaching deployment.
|
OpenSCAP
Produces compliance evidence before artifact promotion.
|
Sigstore Cosign + In-Toto
Ensures only hardened, verified artifacts can be deployed.
|
CIS-CAT Lite
Verify hardened defaults match CIS requirements before release.
|
Kyverno
Policy enforcement for manifests and configs at build time.
|
OPA Conftest
Codifies secure defaults as enforceable CI/CD policies.
|
2.1.4 - Respond to Vulnerabilities (RV)
Respond to Vulnerabilities (RV) for Build and Deploy CI/CD Steps
Respond to Vulnerabilities (RV)
Respond to Vulnerabilities (RV): Organizations should identify residual vulnerabilities
in their software releases and respond appropriately to address those vulnerabilities and prevent similar ones from occurring in the future.
RV.1
Identify and Confirm Vulnerabilities on an Ongoing Basis: Help ensure that vulnerabilities are identified more quickly so that they can be remediated more quickly in accordance with risk, reducing the window of opportunity for attackers.
To satisfy SSDF RV.1 in a build and deploy context using open-source tools, the focus shifts to continuously gathering vulnerability intel (VDP + public sources), monitor components, and confirm issues across supported releases.
Tasks |
Tools |
RV.1.1: Gather information from software acquirers, users, and public sources on potential vulnerabilities in the software and third-party components that the software uses, and investigate all credible reports.
RV.1.2: Review, analyze, and/or test the software’s code to identify or confirm the presence of previously undetected vulnerabilities.
RV.1.3: Have a policy that addresses vulnerability disclosure and remediation, and implement the roles, responsibilities, and processes needed to support that policy.
|
OSV-Scanner
Continuously scans manifests/locks against OSV; great for confirming new disclosures across all supported releases..
|
Ortelius
Continuously synchronizes Software Bill of Material versions of built artifacts to OSV.dev reporting on vulnerabilities discovered post-build.
|
OSV Vulnerability Database
Queries the OSV.dev vulnerability database for open-source package CVEs.
|
Grype
Scans container images and SBOMs for known vulnerabilities.
|
Vulners CLI/API
Aggregates multiple public vulnerability feeds.
|
cve-bin-tool
Checks installed binaries for known CVEs.
|
Semgrep
SAST for multiple languages; customizable rules. Run on merge to main branch.
|
Bandit
Python security linting. Add to Python project build stage.
|
SonarQube Community Edition
SAST & quality checks. Run in build step; block deploy if high-severity issues found.
|
OWASP ZAP
DAST; quick passive scan on deployed staging app.
|
GitHub Security Policy
Public policy location for reporters.
|
Disclose.io templates
Vulnerability Disclosure Program.
|
OpenSSF Vulnerability Disclosure Guide
Playbook for implementing disclosure.
|
RV.2
Assess, Prioritize, and Remediate Vulnerabilities: Help ensure that
vulnerabilities are remediated in accordance with risk to reduce the window of opportunity for attackers.
To satisfy SSDF RV.2 in a build and deploy context using open-source tools, the focus shifts to:
-
Recording each vulnerability
-
Analyze risk (exploitability & impact)
-
Choose responses, publish advisories, and deliver remediations via trusted mechanisms; include temporary mitigations where needed.\
Tasks |
Tools |
RV.2.1: Analyze each vulnerability to gather sufficient information about risk to plan its remediation or other risk response.
RV.2.2: Plan and implement risk responses for vulnerabilities.
|
GUAC
Aggregates SBOMs, attestations, and vulns to understand blast radius and prioritize fixes.
|
Renovate
Automates dependency upgrades/patch PRs with risk-aware policies.
|
Ortelius
Exposes the blast radius of each vulnerability across live environments.
|
DefectDojo
Centralizes vulnerabilities from SAST/DAST/SCA tools; adds risk scoring.
|
OWASP Dependency-Track
SBOM-based vuln tracking, includes CVSS scoring and metadata.
|
EPSS (Exploit Prediction Scoring System)
Rates probability of exploitation for CVEs (risk-based prioritization).
|
Vulners API
Provides exploit links, PoCs, and additional context per CVE.
|
CVSS Calculator (FIRST)
Standardized impact scoring to support triage decisions.
|
Sigstore / Cosign
Sign remediated builds before deploying (trusted delivery mechanism).
|
OWASP ModSecurity CRS
Temporary WAF rules to mitigate unpatched web vulns.
|
Falco
Runtime detection and mitigation for unpatched container/Kubernetes issues.
|
RV.3
Analyze Vulnerabilities to Identify Their Root Causes: Help reduce the frequency of vulnerabilities in the future.
To satisfy SSDF RV.3 in a build and deploy context using open-source tools, the focus shifts to:
Tasks |
Tools |
RV.3.1: Analyze identified vulnerabilities to determine their root causes.
RV.3.2: Analyze the root causes over time to identify patterns, such as a particular secure coding practice not being followed consistently
RV.3.3: Review the software for similar vulnerabilities to eradicate a class of vulnerabilities, and proactively fix them rather than waiting for external reports.
RV.3.4: Review the SDLC process, and update it if appropriate to prevent (or reduce the likelihood of) the root cause recurring in updates to the software or in new software that is created.
|
Semgreps
Write org-specific rules to detect the root-cause pattern; scan repos to eradicate classes of bugs.
|
CodeQL
Deep code queries to identify the precise coding constructs leading to vulns.
|
SonarQube CE
Provides issue traces, rule violations, and hotspots including root cause indicators.
|
DefectDojo
Tracks vulns + metadata, allows attaching root cause notes per issue.
|
Dependency-Track
Long-term tracking of vulnerable components to see recurring dependency issues.
|
Grafeas
Metadata API for tracking security events across builds/releases.
|
cwe-checker
Detects weakness patterns (CWEs) in binaries, useful for compiled artifacts.
|
Joern
Open-source code analysis platform for hunting bug patterns at scale.
|
OpenSAMM (OWASP Software Assurance Maturity Model)
Framework to improve secure dev lifecycle practices.
|
OpenSSF Scorecards
Automates repo security health checks (branch protection, dependency pinning, CI hardening).
|
OSCAL (NIST)
Standard for documenting compliance + SDLC security improvements.
|
Allstar (by OpenSSF)
Enforces security policies across GitHub orgs/repos.
|
3 - Phase 3: Post Deploy
Security Compliance for Post Deployment
Introduction
The post-deploy stage of your software delivery pipeline is where your application is live and actively serving users. While much of the focus in DevSecOps is on securing code, builds, and deployments, ensuring robust security doesn’t end there. The post-deploy phase is critical for monitoring, maintaining, and adapting to new threats in real time. This phase includes tools and practices for continuous monitoring, vulnerability patch management, and incident response. From runtime application self-protection (RASP) to real-time threat detection and log analysis, post-deploy security ensures your application remains secure, compliant, and reliable in production.
Industry Frameworks
Following are guidelines from industry frameworks with suggested open source tooling needed to achieve the compliance goals.
3.1 - Secure Software Development Framework
Secure Software Development Framework Post Build CI/CD Steps
Achieving Post Deploy Tasks of the Secure Software Development Framework
The Secure Software Development Framework, developed by the National Institute of Standards and Technology (NIST), provides a comprehensive approach to ensuring security across the software development process, from initial design through deployment and maintenance. The framework outlines key practices and guidelines that organizations can implement to secure their software development lifecycle (SDLC), with a particular emphasis on integrating security into automated processes. This chapter focuses specifically on DevSecOps tooling and practices related to Post Deploy actions of the CI/CD pipeline to achieve:
|
|
Prepare the Organization (PO) |
Organizations should ensure that their people, processes, and technology are prepared to perform secure software development at the organization level. Many organizations will find some PO practices to also be applicable to subsets of their software development, like individual development groups or projects. |
Protect the Software (PS) |
Organizations should protect all components of their software from tampering and unauthorized access. |
Produce Well-Secured Software (PW) |
Organizations should produce well-secured software with minimal security vulnerabilities in its releases. |
Respond to Vulnerabilities (RV) |
Organizations should identify residual vulnerabilities in their software releases and respond appropriately to address those vulnerabilities and prevent similar ones from occurring in the future. |
3.1.1 - Protect the Organization (PO)
Protect the Organization (PO) Post Deployment CI/CD Steps
Protect the Organization (PO)
Organizations should ensure that their people, processes, and technology are prepared to perform secure software development at the organization level. Many organizations will find some PO practices to also be applicable to subsets of their software development, like individual development groups or projects.
PO.1
Define Security Requirements for Software Development: Ensure that security requirements for software development are known at all times so that they can be taken into account throughout the SDLC and duplication of effort can be minimized because the requirements information can be collected once and shared. This includes requirements from internal sources (e.g., the organization’s policies, business objectives, and risk management strategy) and external sources (e.g., applicable laws and regulations).
To satisfy SSDF PO.1 in a post-deployment context using open-source tools, the focus shifts from just defining to:
-
Maintaining and enforcing PO tasks in live systems.
-
Making task requirements visible and traceable across deployed environments.
-
Auditing and updating methods and procedures as internal and external policies change.
Tasks |
Tools |
P.O.1.1: Identify and document all security requirements for the organization’s software development infrastructures and processes, and maintain the requirements over time.
PO.1.2 Identify and document all security requirements for organization-developed software to meet, and maintain the requirements over time.
|
Open Policy Agent
Supports definitions of security policies as code and enforce them in pipelines, CI/CD, and runtime. Enforces runtime policies via integrations with Kubernetes, Terraform, and CI/CD platforms.
|
InspecLog
Periodically audits deployed environments against internal and external security standards.
|
Ortelius Evidence Store
Associate and version security requirement metadata per service and deployment, enabling continuous visibility.
|
DefectDojo
Maps security findings back to specific policy controls or regulatory frameworks.
|
PO.2
Implement Roles and Responsibilities: Ensure that everyone inside and outside of the organization involved in the SDLC is prepared to perform their SDLC-related roles and responsibilities throughout the SDLC.
To satisfy SSDF PO.2 in a post-deployment context using open-source tools, the focus shifts to:
-
Defining and assigning roles for who is responsible for remediation and runtime configurations.
-
Maintaining evidence of what was deployed, who deployed it, and impact across all software assets.
-
Ensuring security and patch management with restricted post-deployment actions.
Tasks |
Tools |
PO.2.1: Create new roles and alter responsibilities for existing roles as needed to encompass all parts of the SDLC. Periodically review and maintain the defined roles and responsibilities, updating them as needed.
PO.2.2: Provide role-based training for all personnel with responsibilities that contribute to secure development. Periodically review personnel proficiency and role-based training, and update the training as needed.
PO.2.3: Obtain upper management or authorizing official commitment to secure development, and convey that commitment to all with development related roles and responsibilities.
|
Git
Tracks authorship and code reviewers, and tags releases and documents who triggered them.
|
Ortelius Evidence Store
Associates deployed services with responsible individuals or teams, with historical record of changes, deployments and roles.
|
Backstage
Lists service owners, on-call teams and escalation paths making post-deployment responsibility transparent across the organization.
|
DefectDojo
Track security findings and assign resolution responsibilities.
|
Kubernetes RBAC / OPA Gatekeepr
Enforces access policies and role boundaries in runtime environments.
|
ArgoCD
Ensures only authorized commits/deployments affect production and logs every promotion and rollback.
|
Falco
Detects unauthorized activity at runtime.
|
Prometheus + Alertmanager
Alerts based on ownership/roles
|
PO.3
Implement Supporting Toolchains: Use automation to reduce human effort and improve the accuracy, reproducibility, usability, and comprehensiveness of security practices throughout the SDLC, as well as provide a way
to document and demonstrate the use of these practices. Toolchains and tools may be used at different levels of the organization, such as organization-wide or project-specific, and may address a particular part of the SDLC, like a
build pipeline.
To satisfy SSDF PO.3 in a post-deployment context using open-source tools, the focus shifts to:
-
Ensuring toolchains support vulnerability detection, SBOM tracking, compliance, and policy enforcement to function after release.
-
Keeping automation tooling secure, updated, and integrated with the live environment.
-
Maintaining evidence that the toolchain’s outputs (e.g., SBOMs, scan reports) remain trustworthy and current.
Tasks |
Tools |
PO.3.1: Specify which tools or tool types must or should be included in each toolchain to mitigate identified risks, as well as how the toolchain components are to be integrated with each other.
PO.3.2: Follow recommended security practices to deploy, operate, and maintain tools and toolchains.
PO.3.3: Configure tools to generate artifacts6 of their support of secure software development practices as defined by the organization.
|
OWASP Dependency Track
Continuously monitors SBOMs for newly disclosed CVEs in deployed software.
|
Ortelius Evidence Store
Maintains a historical record of deployed software, components, and their SBOMs; links to owners for accountability.
|
Syft
Generates SBOMs from deployed container images or filesystems on-demand.
|
Trivy
Post-deployment container, filesystem, and package vulnerability scanning; also generates SBOMs.
|
Clair
Continuous scanning of container registries for vulnerabilities.
|
Grype
Fast vulnerability scanner for container images and filesystems.
|
In-Toto
Validates that deployed artifacts match the cryptographic attestations from the build process.
|
Sigstore cosign
Verifies signatures of deployed artifacts; ensures they match approved builds.
|
Sigstore Rekor
Provides a public, immutable log for signatures and provenance data.
|
Open Policy Agent
Enforce security and compliance policies on deployed systems (e.g., Kubernetes clusters).
|
Inspec
Audit deployed infrastructure and applications against security baselines and compliance requirements.
|
The Hive Incident response platform for post-deployment security events.
|
DefectDojo
Track vulnerabilities and assign remediation tasks; integrate with scanners for continuous updates.
|
PO.4
Define and Use Criteria for Software Security Checks: Help ensure that the software resulting from the SDLC meets the organization’s expectations by defining and using criteria for checking the software’s security during development.
To satisfy SSDF PO.4 in a post-deployment context using open-source tools, the focus shifts to:
-
Ensuring that security data continues to be collected after release.
-
Logs, SBOMs, and scan results are preserved and tamper-resistant.
-
Data is safeguarded to prevent unauthorized access or modification.
-
Data is retrievable for audits, investigations, and compliance checks
Tasks |
Tools |
PO.4.1: Define criteria for software security checks and track throughout the SDLC.
PO.4.2: Implement processes, mechanisms, etc. to gather and safeguard the necessary information in support of the criteria.
|
Falco
Runtime security detection for containers and hosts; generates event logs for suspicious behavior.
|
AuditD
Captures system-level security events for Linux.
|
OSQuery
Endpoint telemetry and configuration monitoring.
|
Prometheus and Loki
Collect and store metrics and logs in a queryable format.
|
Ortelius Evidence Store
Maintains versioned SBOMs linked to each deployment.
|
Syft
Generates SBOMs from deployed artifacts for ongoing monitoring./p>
|
OpenSCAP
Collects and stores compliance scan data.
|
Wazuh SIEM
SIEM with audit logging, threat detection, and compliance monitoring.
|
Grype
Detects CVEs in deployed images and file systems.
|
In-Toto
Validates that deployed artifacts match the cryptographic attestations from the build process.
|
Sigstore Rekor
Provides a public, immutable log for signatures and provenance data.
|
Inspec
Audit deployed infrastructure and applications against security baselines and compliance requirements.
|
Trivy
Continuous vulnerability scanning + SBOM generation for running systems.
|
DefectDojo
Stores and organizes security scan results; integrates with Trivy, Grype, and Dependency-Track.
|
PO.5
Implement and Maintain Secure Environments for Software Development: Ensure that all components of the environments for software development are strongly protected from internal and external threats to prevent compromises of the
environments or the software being developed or maintained within them. Examples of environments for software development include development, build, test, and distribution environments.
To satisfy SSDF PO.5 in a post-deployment context using open-source tools, the focus shifts to:
-
The security requirements for your development infrastructure are still relevant and enforced after software is released.
-
Your build, deployment, and monitoring environments remain hardened and compliant.
-
You continuously validate that your development infrastructure hasn’t drifted from its secure baseline.
Tasks |
Tools |
PO.5.1: Separate and protect each environment involved in software development.
PO.5.2: Secure and harden development endpoints (i.e., endpoints for software designers, developers, testers, builders, etc.) to perform development-related tasks using a risk-based approach.
|
Inspec
Runs ongoing compliance scans against development and build servers; enforce CIS/NIST benchmarks.
|
OpenSCAP
Check infrastructure against defined security baselines.
|
OSQuery
Monitor build and deployment nodes for unauthorized changes.
|
Kube-bench
Validates Kubernetes-based build/test clusters meet CIS benchmarks.
|
Open Policy Agent - GateKeeper
Enforce rules for infrastructure configuration (Kubernetes, Terraform, CI/CD).
|
Kyverno
Kubernetes-native policy enforcement for cluster security./p>
|
Jenkins
Hardened CI/CD pipelines with access controls and audit logs.
|
Nexus Repository OSS
Securely store build artifacts post-deployment; apply access controls.
|
Harbor
Container registry with built-in vulnerability scanning and RBAC.
|
Wazuh SIEM
Ingests infrastructure security logs and alerts on violations.
|
Falco
Detect unauthorized activity in build/deployment clusters or runner nodes.
|
Prometheus + Alertmanager
Monitor infrastructure security metrics and trigger notifications.
|
In-Toto
Validates that deployed artifacts match the cryptographic attestations from the build process.
|
Sigstore Rekor
Maintain an immutable, tamper-evident log of signed infrastructure configuration files.
|
3.1.2 - Protect the Software (PS)
Protect the Software (PS) Post-Deployment CI/CD Steps
Protect the Software (PS)
Protect the Software (PS): Organizations should protect all components of their
software from tampering and unauthorized access.
PS.1
Protect All Forms of Code from Unauthorized Access and Tampering : Help prevent unauthorized changes to code, both inadvertent and intentional, which could circumvent or negate the intended security characteristics of the software. For code that is not intended to be publicly accessible, this helps prevent theft of the software and may make it more difficult or time-consuming for attackers to find vulnerabilities in the software.
To satisfy SSDF PS.1 in a post-deployment context using open-source tools, the focus shifts from just defining to:
-
Protecting deployed artifacts (binaries, containers, scripts, configs) from being altered in production
-
Ensuring post-deployment code integrity is verifiable at any time
-
Maintaining secure storage, transport, and retrieval of code and artifacts
-
Keeping an audit trail for all modifications and access
Tasks |
Tools |
PS.1.1: Store all forms of code including source code, executable code, and configuration-as-code based on the principle of least privilege so that only authorized personnel, tools, services, etc. have access.
|
Cosign Sigstore
Sign and verify container images, binaries, and other artifacts.
|
Rekor Sigstore
Immutable public transparency log for signatures and metadata.
|
In-Toto
End-to-end supply chain verification to ensure deployed artifacts came from trusted sources.
|
Gnu Privacy GuardG
Sign and verify any file type, including tarballs and configuration files.
|
Harbor
Container registry with built-in vulnerability scanning, content signing, and RBAC.
|
Sonatype Nexus OSS
Secure artifact repository with access controls.
|
JFrog Artifactory OSS
Manages binary repositories with fine-grained permissions.
|
Tripwire OSS
Monitors filesystem for unauthorized changes.
|
AIDE (Advanced Intrusion Detection Environment)
Creates a baseline of files and detects alterations.
|
Falco
Detects suspicious activity in Kubernetes or container environments, including file changes.
|
Kubernetes RBAC + OPA Gatekeeper
Enforces role-based policies for container image deployment.
|
Keycloak
Centralized authentication/authorization for artifact registries and CI/CD systems.
|
Wazuh
SIEM platform that monitors access logs and alerts on anomalies.
|
Ortelius Evidence Store
Tracks which version of a service is deployed where, and links to its signed SBOM.
|
Syft
Generates SBOMs for deployed artifacts for later verification.
|
OWASP Dependency-Track
Monitors components in deployed artifacts against CVE feeds.
|
PS.2
Provide a Mechanism for Verifying Software Release Integrity: Help software acquirers ensure that the software they acquire is legitimate and has not been tampered with. Make software integrity verification information available to software acquirers.
To satisfy SSDF PS.2 in a post-deployment context using open-source tools, the focus shifts to:
-
Keeping exact copies of every release artifact (binaries, containers, configs, SBOMs)
-
Recording and publishing cryptographic verification data (signatures, hashes, attestations)
-
Ensuring acquirers can confirm that what they have matches the trusted, official release
Tasks |
Tools |
PS.2.1: Make software integrity verification information available to software acquirers.
|
Harbor
Container registry with image retention policies, RBAC, and content trust.
|
Sonatype Nexus OSS
Artifact repository for storing binaries and dependencies.
|
JFrog Artifactory OSS
Binary management with retention and access control.
|
GitHub
Tag and store release binaries, SBOMs, and checksums.
|
Sigstore cosign
Sign and verify container images, SBOMs, and other artifacts.
|
Sigstore Rekor
Immutable transparency log for all signed artifacts and metadata.
|
Gnu Privacy Guard
Sign and verify tarballs, binaries, or SBOM files.
|
In-Toto
Provide end-to-end build provenance verification.
|
Ortelius
Maps deployed services to specific versions and their SBOMs.
|
Syft
Generates SBOMs from deployed artifacts.
|
OWASP Dependency-Track
Continuously monitors SBOMs for new CVEs in preserved releases.
|
AIDE (Advanced Intrusion Detection Environment)
Filesystem integrity checker to detect changes in stored artifacts.
|
Tripwire OSS
Baseline and monitor stored release directories for modifications.
|
Wazuh
SIEM that audits artifact repository activity.
|
AuditD
Linux-level auditing for access to preserved release files.
|
Kubernetes RBAC / Keycloak
Restrict who can upload or modify artifacts in registries.
|
PS.3
Archive and Protect Each Software Release: Preserve software releases in order to help identify, analyze, and eliminate vulnerabilities discovered in the software after release.
To satisfy SSDF PS.3 in a post-deployment context using open-source tools, the focus shifts to:
-
Keeping a tamper-proof record of every software component in each release
-
Ensuring provenance data remains accessible for audits, investigations, and vulnerability response
-
Allowing acquirers and downstream users to independently verify the origin and integrity of every component
Tasks |
Tools |
PS.3.1: Securely archive the necessary files and supporting data (e.g., integrity verification information, provenance data) to be retained for each software release.
PS.3.2: Collect, safeguard, maintain, and share provenance data for all components of each software release (e.g., in a software bill of materials [SBOM]).
|
Syft
Generate SBOMs from deployed containers, VMs, or file systems (SPDX & CycloneDX formats).
|
Trivy
Create SBOMs and scan for vulnerabilities in deployed systems.
|
In-Toto
Record build steps and supply chain metadata as signed “link” files.
|
Cosign Attest
Capture build and deployment provenance as signed attestations.
|
Gnu Privacy Guard
Sign SBOMs and metadata for offline or private distribution.
|
Rekor
Store signatures and attestations in an immutable, public transparency log.
|
Tripwire OSS
Detect unauthorized changes in locally stored provenance archives.
|
AIDE (Advanced Intrusion Detection Environment)
Detect unauthorized changes in locally stored provenance archives.
|
Ortelius Evidence Store
Version and track deployed services and their SBOMs; link them to environments and releases. API/UI access for sharing SBOM and component history for specific releases.
|
Dependency Track
Continuously monitor preserved SBOMs for new CVEs.
|
Harbor
Attach SBOMs and signatures to container images in a registry.
|
CycloneDX BOM Portal (OSS)
Host and validate SBOMs in a web-accessible interface.
|
3.1.3 - Produce Well-Secured Software (PW)
Produce Well-Secured Software (PW) in the Post-Deployment CI/CD Steps
Produce Well-Secured Software (PW)
Organizations should produce well-secured software with minimal security vulnerabilities in its releases.
PW.1
Design Software to Meet Security Requirements and Mitigate Security Risks: Identify and evaluate the security requirements for the software; determine what security risks the software is likely to face during operation and how the software’s design and architecture should mitigate those risks; and justify any cases where risk-based analysis indicates that security requirements should be relaxed or waived. Addressing security requirements and risks during software design (secure by design) is key for improving software security and also helps improve development efficiency.
To satisfy SSDF PW.1 in a post-deployment context using open-source tools, the focus shifts to:
-
Keeping a tamper-proof record of every software component in each release
-
Ensuring provenance data remains accessible for audits, investigations, and vulnerability response
-
Allowing acquirers and downstream users to independently verify the origin and integrity of every component
Tasks |
Tools |
PW.1.1: Use forms of risk modeling, such as threat modeling, attack modeling, or attack surface mapping to help assess the security risk for the software.
PW.1.2: Track and maintain the software’s security requirements, risks, and design decisions.
PW.1.3: Where appropriate, build in support for using standardized security features and services (e.g., enabling software to integrate with existing log management, identity management, access control, and vulnerability management systems) instead of creating proprietary implementations of security features and services.
|
Semgrep
Static and Dynamic Analysis that an be run against deployed codebases in staging mirrors to detect insecure patterns.
|
Wapiti
Web application security scanner for deployed apps.
|
Zap (Zed Attack Proxy)
Active and passive testing of live apps for vulnerabilities.
|
Inspec
Validates that deployed applications meet secure coding standards.
|
Ortelius
10 minute synchronizing to OSV.dev for new vulnerability detection in deployed artifacts.
|
OpenSCAP
Scans systems for compliance with security coding-related baselines.
|
Falco
Logging and Monitoring - Detects insecure behavior at runtime (e.g., unsafe system calls).
|
Wazuh
Monitors application and OS logs for security-related events.
|
AuditD
Captures low-level system calls related to code execution.
|
Syft
Generates SBOMs for deployed applications for ongoing monitoring.
|
OWASP Dependency-Track
Continuously tracks SBOMs for new vulnerabilities
|
Trivy
Scans deployed containers/filesystems for known CVEs in code and dependencies.
|
Grype
Focused vulnerability scanning for deployed artifacts.
|
PW.2
Review the Software Design to Verify Compliance with Security Requirements and Risk Information:Help ensure that the software will meet the security requirements and satisfactorily address the identified risk information.
To satisfy SSDF PW.2 in a post-deployment context using open-source tools, the focus shifts to:
-
Continuous verification that deployed code (source or binary) hasn’t been tampered with.
-
Ongoing vulnerability assessment of deployed applications and components.
-
Post-release code review triggers when a vulnerability or incident is detected.
-
Auditable evidence that deployed software matches approved, reviewed code.
Tasks |
Tools |
PW.2.1: Have 1) a qualified person (or people) who were not involved with the design and/or 2) automated processes instantiated in the toolchain review the software design to confirm and enforce that it meets all of the security requirements and satisfactorily addresses the identified risk information.
|
Sigstore Cosign
Verify deployed containers and binaries were signed at build time.
|
Rekore
Store verification data and attestations in a tamper-evident log.
|
In-Toto
Ensure deployed code matches the reviewed build pipeline steps.
|
Tripwire OSS
Monitor deployed files for unauthorized changes.
|
Semgrep
Review mirrored deployed code for security issues or policy violations.
|
GitHub CodeQL
Advanced code queries to detect vulnerability patterns.
|
Wapiti
Web vulnerability scanning against deployed endpoints.
|
Ortelius
Track vulnerabilities to live endpoints for quick remediation times.
|
Zap (Zed Attack Proxy)
Automated and manual DAST testing for live applications.
|
Nikto
Server-focused vulnerability scanning.
|
OpenSCAP
Map results to compliance baselines.
|
DefectDojo
Track vulnerabilities found during post-deployment reviews and link to remediation./p>
|
PW.4
Reuse Existing, Well-Secured Software When Feasible Instead of Duplicating Functionality : Lower the costs of software development, expedite software development, and decrease the likelihood of introducing additional security vulnerabilities into the software by reusing software modules and services that have already had their security posture checked. This is particularly important for software that implements security functionality, such as cryptographic modules and protocols.
Note: PW.3 moved to PW.4
To satisfy SSDF PW.4 in a post-deployment context using open-source tools, the focus shifts to:
-
Vulnerability detection runs continuously on production or production-equivalent environments.
-
Results are triaged and assigned quickly.
-
There is an automated or semi-automated path to remediation (e.g., patching, image rebuild, or component upgrade).
-
All activity is auditable and linked to release artifacts.
Tasks |
Tools |
PW.4.1: Acquire and maintain well-secured software components (e.g., software libraries, modules, middleware, frameworks) from commercial, opensource, and other third-party developers for use by the organization’s software.
PW.4.2: Create and maintain well-secured software components in-house following SDLC processes to meet common internal software development needs that cannot be better met by third-party software components.
PW.4.3: Moved to PW.1.3
PW.4.4: Verify that acquired commercial, open-source, and all other third-party software components comply with the requirements, as defined by the organization, throughout their life cycles.
|
Git
Stores signed vulnerability reports and patch commit metadata.
|
Rekore
Logs scan results, remediations, and signatures immutably.
|
Ortelius
Audit and evidence retention tracks which environments are running which version, enabling targeted redeployment of patched builds.
|
Trivy
Scans running containers, filesystems, and Kubernetes clusters; also generates SBOMs.
|
Grype
SBOM-driven vulnerability scanning for images and directories.
|
Clair
Monitors container registries for vulnerable images.
|
OpenVAS / Greenbone
Network and host vulnerability scanning.
|
Syft
Generates SBOMs from deployed environments.
|
OWASP Dependency-Track
CWatches SBOMs for new CVEs and policy violations.
|
Vulnix
Nix-based vulnerability scanning from SBOM input.
|
Kyverno
Kubernetes-native admission controller enforcing vulnerability thresholds.
|
Falco
Detects runtime anomalies that may indicate exploitation.
|
Nikto
Server-focused vulnerability scanning.
|
Keel
Automates container redeployments when a new image is pushed.
|
Kured
Automated Kubernetes node reboots for kernel patching.
|
DefectDojo
Centralizes vulnerability data from scanners; assigns remediation tasks and tracks SLAs./p>
|
The Hive
Incident response and coordination for urgent vulnerability events./p>
|
PW.5
Create Source Code by Adhering to Secure Coding Practices: Decrease the number of security vulnerabilities in the software, and reduce costs by minimizing vulnerabilities introduced during source code creation that meet or exceed organization-defined vulnerability severity criteria.
To satisfy SSDF PW.5 in a post-deployment context using open-source tools, the focus shifts to:
-
Ongoing verification of integrity, compliance, and security posture for deployed software.
-
Continuous checks to ensure that the running software still meets the security requirements it had at release.
-
Detecting drift, newly introduced vulnerabilities, and configuration changes.
-
Maintaining verifiable evidence of these checks over time.
Tasks |
Tools |
PW.5.1: Follow all secure coding practices that are appropriate to the development languages and environment to meet the organization’s requirements.
|
Trivy
Ongoing scans of deployed containers, filesystems, and Kubernetes clusters.
|
Grype
Detect CVEs in deployed SBOMs or images.
|
Clair
Continuous vulnerability scanning for registry images.
|
Syft
Generate SBOMs from running systems for ongoing monitoring.
|
Inspec
Define and run compliance checks (CIS, NIST, org-specific policies) against deployed environments.
|
OpenSCAP
Evaluate running systems against security baselines.
|
Kube-bench
Validate Kubernetes deployments against CIS benchmarks.
|
Kube-hunter
Identify potential attack paths in deployed Kubernetes clusters.
|
Falco
Detect runtime changes to files, processes, and network behavior.
|
AIDE
File integrity monitoring to ensure binaries/configs aren’t altered.
|
osquery
Query system state to detect unauthorized configuration changes.
|
Open Policy Agent
Enforce continuous compliance policies at runtime.
|
Kyverno
Kubernetes-native policy engine to prevent insecure updates.
|
DefectDojo
Centralize verification results and track issues over time./p>
|
Rekor
Store signed verification reports in a tamper-proof ledger.
|
PW.6
Configure the Compilation, Interpreter, and Build Processes to Improve Executable Security: Decrease the number of security vulnerabilities in the software and reduce costs by eliminating vulnerabilities before testing occurs.
To satisfy SSDF PW.6 in a post-deployment context using open-source tools, the focus shifts to:
-
Running scheduled scans on running containers, VMs, and registries; integrate with SBOM monitoring
-
Maintain SBOMs for deployed software; monitor for new CVEs.
-
Score findings (CVSS, EPSS); prioritize fixes based on severity & exploitability.
-
Auto-rebuild/redeploy when patched images are available.
Tasks |
Tools |
PW.6.1: Use compiler, interpreter, and build tools that offer features to improve executable security.
PW.6.2: Determine which compiler, interpreter, and build tool features should be used and how each should be configured, then implement and use the approved configurations.
|
Trivy
Trivy runs weekly scans on all production container images and hosts → results are signed and logged in Rekor.
|
Syft
Regenerates SBOMs for deployed artifacts, and flags new CVEs.
|
DefectDojo
CVSS scoring + SLA assignment to owners./p>
|
Keel
Auto-rebuild/redeploy when patched images are available
|
Kured
Automated Kubernetes node reboots for kernel patching.
|
Argo Rollouts
Use canary/staged rollouts for patched versions.
|
OpenVAS
Run scheduled scans on running containers, VMs, and registries; integrate with SBOM monitoring
|
Rekor
Store signed records of detection, triage, fix, and verification
|
PW.7
Review and/or Analyze Human-Readable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements: Help identify vulnerabilities so that they can be corrected before the software is released to prevent exploitation. Using automated methods lowers the effort and resources needed to detect vulnerabilities. Human-readable code includes source code, scripts, and any other form of code that an organization deems human readable.
To satisfy SSDF PW.7 in a post-deployment context using open-source tools, the focus shifts to:
-
Maintain a record showing that the deployed version went through the organization’s required code review and/or automated analysis process.
-
Ensure all emergency/hotfix patches pushed post-deployment are also reviewed or analyzed — even if done after release.
-
Maintain Audit-Ready Evidence
Tasks |
Tools |
PW.7.1: Determine whether code review (a person looks directly at the code to find issues) and/or code analysis (tools are used to find issues in code, either in a fully automated way or in conjunction with a person) should be used, as defined by the organization.
PW.7.2: Perform the code review and/or code analysis based on the organization’s secure coding standards, and record and triage all discovered issues and recommended remediations in the development team’s workflow or issue tracking system.
|
Semgrep
Run SAST against the exact code linked to deployed binaries; include dependency scanning
|
GitHub CodeQL
Re-run code analysis on production mirrors.
|
DefectDojo
Keeps immutable records of all reviews, approvals, and automated analysis runs
|
Rekor
Signed commits, protected branch history, scan results.
|
PW.8
Test Executable Code to Identify Vulnerabilities and Verify Compliance with Security Requirements: Help identify vulnerabilities so that they can be corrected before the software is released in order to prevent exploitation. Using automated methods lowers the effort and resources needed to detect vulnerabilities and improves traceability and repeatability. Executable code includes binaries, directly executed bytecode and source code,
and any other form of code that an organization deems executable.
To satisfy SSDF PW.8 in a post-deployment context using open-source tools, the focus shifts to:
-
Continuously Test Deployed Executables for Vulnerabilities
-
Verify Compliance with Security Requirements
-
Feed Findings Back into Development
Tasks |
Tools |
PW.8.1: Determine whether executable code testing should be performed to find vulnerabilities not identified by previous reviews, analysis, or testing and, if so, which types of testing should be used.
PW.8.2: Scope the testing, design the tests, perform the testing, and document the results, including recording and triaging all discovered issues and recommended remediations in the development team’s workflow or issue tracking system.
|
Trivy
Scans deployed containers/filesystems for known CVEs in code and dependencies.
|
Grype
Focused vulnerability scanning for deployed artifacts.
|
Ortelius
10 minute synchronizing to OSV.dev for new vulnerability detection in deployed artifacts.
|
OpenVAS / Greenbone
Network and host vulnerability scanning.
|
Inspec
Map scan results to security standards (NIST, CIS, OWASP ASVS)
|
OpenSCAP
Compliance scan outputs, baseline profiles, exception docs.
|
Wapiti
DAST, fuzzing, and runtime monitoring to detect insecure behavior
|
Zap (Zed Attack Proxy)
DAST/fuzzing reports.
|
PW.9
Configure Software to Have Secure Settings by Default: Help improve the security of the software at the time of installation to reduce the likelihood of the software being deployed with weak security settings, putting it at greater risk of compromise.
To satisfy SSDF PW.9 in a post-deployment context using open-source tools, the focus shifts to:
-
Check deployed software and infrastructure against the organization’s secure configuration baseline (e.g., NIST 800-53, CIS Benchmarks, DISA STIGs).
-
Use policy-as-code and configuration management tools to keep deployed systems in compliance.
-
Integrate configuration checks into runtime monitoring
Tasks |
Tools |
PW.9.1: Define a secure baseline by determining how to configure each setting that has an effect on security or a security-related setting so that the default settings are secure and do not weaken the security functions provided by the platform, network infrastructure, or services.
PW.9.2: Implement the default settings (or groups of default settings, if applicable), and document each setting for software administrators.
|
Ortelius
Continuously monitors drift in container configurations.
|
Inspec
Compare deployed systems against secure configuration baselines (NIST, CIS, STIG)
|
OpenSCAP
Compare deployed systems against secure configuration baselines (NIST, CIS, STIG).
|
Falco
Continuously monitor config changes; alert or auto-remediate deviations.
|
Wazuh
Drift detection logs, remediation actions.
|
Ansible
Policy-as-code and config management to ensure all deployments match baseline
|
Saltstack
Config playbooks, enforcement logs, policy change history.
|
Git
Store signed scan results and drift detection records in tamper-evident systems.
|
3.1.4 - Respond to Vulnerabilities (RV)
Respond to Vulnerabilities (RV) in the Post-Deployment CI/CD Steps
Respond to Vulnerabilities (RV)
Respond to Vulnerabilities (RV): Organizations should identify residual vulnerabilities
in their software releases and respond appropriately to address those vulnerabilities and prevent similar ones from occurring in the future.
RV.1
Identify and Confirm Vulnerabilities on an Ongoing Basis: Help ensure that vulnerabilities are identified more quickly so that they can be remediated more quickly in accordance with risk, reducing the window of opportunity for attackers.
To satisfy SSDF RV.1 in a post-deployment context using open-source tools, the focus shifts to:
-
Continuously scanning live environments for new vulnerabilities
-
Correlating detected vulnerabilities to deployed components and SBOM data
-
Validating whether vulnerabilities are exploitable in the specific environment
-
Prioritizing remediation based on severity, exploitability, and operational impact
Tasks |
Tools |
RV.1.1: Gather information from software acquirers, users, and public sources on potential vulnerabilities in the software and third-party components that the software uses, and investigate all credible reports.
RV.1.2: Review, analyze, and/or test the software’s code to identify or confirm the presence of previously undetected vulnerabilities.
RV.1.3: Have a policy that addresses vulnerability disclosure and remediation, and implement the roles, responsibilities, and processes needed to support that policy.
|
OWASP Dependency Track
Integrates with live SBOMs to detect and alert on vulnerabilities after release.
|
Ortelius
Links detected vulnerabilities directly to deployed service versions for traceability.
|
DefectDojo
Central vulnerability management hub with metrics and tracking.
|
Trivy
Identify vulnerabilities in images already deployed in Kubernetes or Docker environments.
|
Grype
Works with Syft-generated SBOMs to continuously check for new CVEs.
|
OpenSCAP
Provide scheduled compliance scans alongside vulnerability checks.
|
VEX (Vulnerability Exploitability eXchange) + OpenVEX
Helps teams prioritize remediation by filtering out non-exploitable vulnerabilities.
|
Syft
MFeed live SBOMs into scanners like Dependency-Track or Grype.
|
RV.2
Assess, Prioritize, and Remediate Vulnerabilities: Help ensure that
vulnerabilities are remediated in accordance with risk to reduce the window of opportunity for attackers.
To satisfy SSDF RV.2 in a post-deployment context using open-source tools, the focus shifts to:
-
Determining which vulnerabilities matter most in the deployed context
-
Using exploitability, business impact, and compliance requirements for prioritization
-
Executing timely remediation or mitigation actions in live environments
-
Tracking remediation status to closure with audit-ready records
Tasks |
Tools |
RV.2.1: Analyze each vulnerability to gather sufficient information about risk to plan its remediation or other risk response.
RV.2.2: Plan and implement risk responses for vulnerabilities.
|
DefectDojo
Centralizes risk scoring, workflow management, and reporting for remediation progress.
|
OWASP Dependency Track
Provides real-time vulnerability prioritization and integrates with issue tracking systems.
|
Ortelius
Enables environment-specific remediation prioritization and impact assessment.
|
Jenkins + OPA (Open Policy Agent)
Enforce remediation SLAs and automate rollouts of fixed versions.
|
Trivy + Grype
Continuous scanning plus integration with CI/CD to push patched artifacts.
|
GitHub/GitLab Issues + Automation Bots
Ensures no vulnerability is left without a tracked remediation action.
|
Kubebench + Falco (Runtime Security)
Provides real-time signals to prioritize operational security fixes.
|
RV.3
Analyze Vulnerabilities to Identify Their Root Causes: Help reduce the frequency of vulnerabilities in the future.
To satisfy SSDF RV.3 in a post-deployment context using open-source tools, the focus shifts to:
-
Determining whether it originated in coding, dependencies, build processes, or deployment configurations
-
Documenting lessons learned to prevent recurrence
-
Feeding analysis results back into security requirements, pipelines, and developer training
Tasks |
Tools |
RV.3.1: Analyze identified vulnerabilities to determine their root causes.
RV.3.2: Analyze the root causes over time to identify patterns, such as a particular secure coding practice not being followed consistently
RV.3.3: Review the software for similar vulnerabilities to eradicate a class of vulnerabilities, and proactively fix them rather than waiting for external reports.
RV.3.4: Review the SDLC process, and update it if appropriate to prevent (or reduce the likelihood of) the root cause recurring in updates to the software or in new software that is created.
|
Ortelius
Supports forensic analysis by tracking when and where a vulnerable component entered the system.
|
DefectDojo
Maintains historical data to identify trends in vulnerability origins.
|
GitHub
Supports forensic traceability and accountability in root cause analysis.
|
Syft + Dependency Track
nables version-diff SBOM analysis for root cause investigations.
|
Semgrep
Assists in determining whether vulnerabilities stem from code-level issues.
|
OpenSCAP
Enables root cause mapping to configuration weaknesses.
|
Trivy + Grype
Provides temporal context for root cause timelines.
|
OSQuery
Supports deep inspection during vulnerability forensics.
|