NIST Software Supply Chain and DevOps Security Practices
NIST Software Supply Chain and DevOps Security Practices
SOFTWARE
SUPPLY CHAIN AND
DEVOPS SECURITY
PRACTICES
Implementing a Risk-Based Approach to
DevSecOps
Murugiah Souppaya
Michael Ogata
Paul Watrobski
Karen Scarfone
Scarfone Cybersecurity
November 2022
ABSTRACT
DevOps brings together software development and operations to shorten development cycles,
allow organizations to be agile, and maintain the pace of innovation while taking advantage of
cloud-native technology and practices. Industry and government have fully embraced and are
rapidly implementing these practices to develop and deploy software in operational
environments, often without a full understanding and consideration of security. Also, most
software today relies on one or more third-party components, yet organizations often have little
or no visibility into and understanding of how these components are developed, integrated,
deployed, and maintained, as well as the practices used to ensure the components’ security. To
help improve the security of DevOps practices, the NCCoE is planning a DevSecOps project that
will focus initially on developing and documenting an applied risk-based approach and
recommendations for secure DevOps and software supply chain practices consistent with the
Secure Software Development Framework (SSDF), Cybersecurity Supply Chain Risk Management
(C-SCRM), and other NIST, government, and industry guidance. This project will apply these
DevSecOps practices in proof-of-concept use case scenarios that will each be specific to a
technology, programming language, and industry sector. Both closed source (proprietary) and
open source technology will be used to demonstrate the use cases. This project will result in a
freely available NIST Cybersecurity Practice Guide.
KEYWORDS
cloud-native technology; cybersecurity supply chain risk management; DevOps; DevSecOps;
secure software development; Secure Software Development Framework (SSDF); supply chain
security
DISCLAIMER
Certain commercial entities, equipment, products, or materials may be identified in this
document in order to describe an experimental procedure or concept adequately. Such
identification is not intended to imply recommendation or endorsement by NIST or NCCoE, nor
is it intended to imply that the entities, equipment, products, or materials are necessarily the
best available for the purpose.
TABLE OF CONTENTS
1 Executive Summary ........................................................................................................... 3
Purpose ..................................................................................................................................... 3
Scope ......................................................................................................................................... 4
Assumptions/Challenges........................................................................................................... 5
Background ............................................................................................................................... 5
2 Scenarios ........................................................................................................................... 6
Scenario 1: Free and Open Source Software (FOSS) Development .......................................... 6
Scenario 2: Closed Source Software Development .................................................................. 6
3 High-Level Architecture ..................................................................................................... 6
Component List ......................................................................................................................... 6
Desired Security Capabilities .................................................................................................... 7
4 Relevant Standards and Guidance ..................................................................................... 7
5 Security Control Map ......................................................................................................... 9
Appendix A References ........................................................................................................ 17
Appendix B Acronyms and Abbreviations ............................................................................. 18
1
Note that SDLC is also widely used for “system development life cycle.” All usage of “SDLC” in this
document is referencing software, not systems.
2 SCENARIOS
The use case scenarios we are considering for this project are described below.
Scenario 1: Free and Open Source Software (FOSS) Development
This scenario involves a small FOSS community that wants to improve the security of their
software. The FOSS community is all volunteer-based. They also want to provide better
security transparency for others who want to use the software, including provenance
information and mechanisms for confirming software integrity. This community already uses
a cloud-based, publicly accessible version control repository for its software development,
packaging, and distribution, plus patch management, configuration management, and other
ongoing maintenance efforts. The software itself relies on multiple open source components
from other communities.
Scenario 2: Closed Source Software Development
This scenario involves a medium- or large-size organization that has an existing cloud-based
application for its global customers. The organization is actively developing, maintaining,
and supporting the application, which utilizes multiple closed source and open source
components. The application’s production environment is in the public cloud and is
microservices-based. The development and build environments, version control systems,
code repositories, and other parts of the toolchain are spread across private clouds and
Software-as-a-Service (SaaS)-hosted applications. In this scenario, the organization wants to
ensure its DevSecOps approach addresses all applicable practices in the SSDF for its cloud
environments, as well as generates artifacts to support and inform its self-attestation and
declaration to conformance to applicable NIST and industry-recommended practices for
secure software development and cybersecurity supply chain risk management.
For each scenario, we will perform one or more build implementations. Each build
implementation will be significantly different from the others, such as using different technology
stacks and programming languages. Each build implementation will rely on automation to the
extent feasible, such as using existing capabilities or adding automated features into existing
platforms and tools. Also, each build implementation will address security throughout the entire
software development life cycle, to include the security of developer, integration, build,
deployment, and distribution systems.
3 HIGH-LEVEL ARCHITECTURE
Component List
The high-level architecture of the development and hosting environments may include, but is
not limited to, the following components:
• Developer endpoints, including PCs (desktops or laptops) and virtual environments, both
PC-based and cloud-based
• Network/infrastructure devices
• Services and applications, both on-premises and cloud-based
o Toolchains and their tools (build tools, packaging tools, repositories, etc.)
Define and Use Criteria for Software Security PO.4.1: Define criteria for software security checks EO14028: 4e(iv), 4e(v), 4e(ix)
Checks (PO.4): Help ensure that the software and track throughout the SDLC. SP80053: SA-15, SA-15(1)
resulting from the SDLC meets the SP800161: SA-15, SA-15(1)
organization’s expectations by defining and PO.4.2: Implement processes, mechanisms, etc. to EO14028: 4e(iv), 4e(v), 4e(ix)
using criteria for checking the software’s security gather and safeguard the necessary information in SP80053: SA-15, SA-15(1), SA-15(11)
during development. support of the criteria. SP800161: SA-15, SA-15(1), SA-15(11)
Implement and Maintain Secure PO.5.1: Separate and protect each environment EO14028: 4e(i)(A), 4e(i)(B), 4e(i)(C), 4e(i)(D),
Environments for Software Development involved in software development. 4e(i)(F), 4e(ii), 4e(iii), 4e(v), 4e(vi), 4e(ix)
(PO.5): Ensure that all components of the NISTCSF: PR.AC-5, PR.DS-7
environments for software development are SP80053: SA-3(1), SA-8, SA-15
strongly protected from internal and external SP800161: SA-3, SA-8, SA-15
threats to prevent compromises of the PO.5.2: Secure and harden development endpoints EO14028: 4e(i)(C), 4e(i)(E), 4e(i)(F), 4e(ii), 4e(iii),
environments or the software being developed (i.e., endpoints for software designers, developers, 4e(v), 4e(vi), 4e(ix)
or maintained within them. Examples of testers, builders, etc.) to perform development-related NISTCSF: PR.AC-4, PR.AC-7, PR.IP-1, PR.IP-3,
environments for software development include tasks using a risk-based approach. PR.IP-12, PR.PT-1, PR.PT-3, DE.CM
development, build, test, and distribution SP80053: SA-15
environments. SP800161: SA-15
Protect All Forms of Code from Unauthorized PS.1.1: Store all forms of code – including source EO14028: 4e(iii), 4e(iv), 4e(ix)
Access and Tampering (PS.1): Help prevent code, executable code, and configuration-as-code – NISTCSF: PR.AC-4, PR.DS-6, PR.IP-3
unauthorized changes to code, both inadvertent based on the principle of least privilege so that only SP80053: SA-10
and intentional, which could circumvent or authorized personnel, tools, services, etc. have SP800161: SA-8, SA-10
negate the intended security characteristics of access.
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.
Provide a Mechanism for Verifying Software PS.2.1: Make software integrity verification information EO14028: 4e(iii), 4e(ix), 4e(x)
Release Integrity (PS.2): Help software available to software acquirers. NISTCSF: PR.DS-6
acquirers ensure that the software they acquire SP80053: SA-8
is legitimate and has not been tampered with. SP800161: SA-8
[2] M. Souppaya et al., Secure Software Development Framework (SSDF) Version 1.1:
Recommendations for Mitigating the Risk of Software Vulnerabilities, National Institute
of Standards and Technology (NIST) Special Publication (SP) 800-218, Gaithersburg, Md.,
February 2022, 36 pp. Available: https://doi.org/10.6028/NIST.SP.800-218.
[3] NIST, Framework for Improving Critical Infrastructure Cybersecurity, Version 1.1, 2018.
https://doi.org/10.6028/NIST.CSWP.04162018.
[4] M. Souppaya et al., Application Container Security Guide, National Institute of Standards
and Technology (NIST) Special Publication (SP) 800-190, Gaithersburg, Md., September
2017, 63 pp. Available: https://doi.org/10.6028/NIST.SP.800-190.
[5] E. LeMay et al., The Common Misuse Scoring System (CMSS): Metrics for Software
Feature Misuse Vulnerabilities, National Institute of Standards and Technology (NIST)
Internal Report (IR) 7864, Gaithersburg, Md., July 2012, 39 pp. Available:
https://doi.org/10.6028/NIST.IR.7864.
[6] Executive Order on Improving the Nation’s Cybersecurity, Executive Order (EO) 14028,
May 12, 2021. Available: https://www.whitehouse.gov/briefing-room/presidential-
actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity/.
[7] Joint Task Force, Security and Privacy Controls for Information Systems and
Organizations, National Institute of Standards and Technology (NIST) Special Publication
(SP) 800-53 Revision 5, Gaithersburg, Md., September 2020, 492 pp. Available:
https://doi.org/10.6028/NIST.SP.800-53r5.