Skip to content
This repository was archived by the owner on Jan 20, 2025. It is now read-only.

Commit 2d503dd

Browse files
committed
1 parent 260fcb2 commit 2d503dd

File tree

1 file changed

+40
-44
lines changed

1 file changed

+40
-44
lines changed

docs/about.mdx

+40-44
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,49 @@ slug: /
66
---
77

88

9-
# The OpenJS Foundation Security Compliance Guide v1.0 <span style={{backgroundColor: '#ff6f3c', color: 'white', padding: '2px 6px'}}>DRAFT</span>
10-
9+
# The OpenJS Foundation Security Compliance Guide v1.0
1110

1211
## Executive Summary
1312

14-
1513
### Background
1614

17-
Since 2020, the number of actively exploited security vulnerabilities in open source software (OSS) has significantly increased, along with attacks on core software supply chain infrastructure and individual community members. Awareness of the heightened threat environment has led to substantial responses from software consumers and regulators:
15+
Since 2020, the number of actively exploited security vulnerabilities in open source software (OSS) has significantly increased, along with attacks on core software supply chain infrastructure and individual community members. Awareness of the heightened threat environment has led to substantial responses from software consumers and regulators.
1816

1917
- The United States, European Union, and other nation states are actively funding efforts to build the modern institutional functions needed to regulate the software supply chains and inclusion of OSS in software they procure.
2018
- Commercial software vendors have responded to regulator and customer awareness of their Software Supply Chain Security risks and ubiquitous use of OSS by increasingly funding and formalizing internal DevOps, Cybersecurity Supply Chain Risk Management (C-SCRM), and Open Source Program Office (OSPO) initiatives.
2119
- A new generation of Application Security startups have raised VC funding to support these emerging initiatives. With the promise of regulator-induced demand Software Supply Chain Security, Software Bill of Materials (SBOM), and OSPO products achieved the same Peak status as Generative AI in the 2023 Gartner Hype Cycle.
2220
- Large commercial consumers of OSS, and more recently governments, have funded new and existing non-profit infrastructure to support defining best practices, tool development, and selectively engaging with maintainers to improve the security posture of their projects. Newer software supply chain security startups are sometimes engaged in these non-profit activities by open sourcing and integrating parts of their tool chains.
2321

22+
2423
### Observations
2524

2625
#### Community Outreach Efforts
2726

2827
The OSS community’s response to these trends and the expectations thrust upon them by their newfound criticality in national security and for-profit business risk assessments have varied.
2928

3029
Observations and research strongly signal that a majority of maintainers have an accurate understanding of their threat environment, desire to proactively protect themselves, and value external support and guidance that tangibly improves their security posture. However, they are generally allergic to dedicating personal time implementing security controls that appear to satisfy low impact checkbox compliance rules without a locally relevant attack chain (“security theater”) or the risk management interests of commercial OSS consumers.
31-
- Congratulations: We Now Have Opinions on Your Open Source Contributions
32-
- OpenSSF Maintainer Experiences Lessons Learned
33-
- Atlantic Council Research on Paying Maintainers
34-
- <More…>
30+
31+
- [Congratulations: We Now Have Opinions on Your Open Source Contributions](https://lucumr.pocoo.org/2022/7/9/congratulations/)
32+
- [OpenSSF Maintainer Experiences Lessons Learned](https://github.com/ossf/tac/issues/169)
33+
- [Atlantic Council Research on Paying Maintainers](https://dfrlab.org/2024/04/18/more-money-better-security/)
34+
3535

3636
#### Prior Art
3737

3838
There exist countless cybersecurity and software security best practices, maturity models, and standards for commercial software developers. Most of these are intended for internal use and assume facilitation by dedicated security practitioners in full time equivalent roles. Others are intended to provide their customers a standard way of measuring security program completeness and efficacy via a 3rd party audit.
3939

4040
There are few equivalents designed for OSS maintainers today. Those that exist often combine OSS project health, legal compliance, and technical security concepts together into a single score or maturity model for community and industry audiences. This choice fills a very real market need, but is not without controversy and appears at times to distract from the important work of implementing and celebrating incremental security posture improvements.
4141

42+
Sources for Guidelines include:
43+
- [CNCF Cloud Native Security Whitepaper](https://github.com/cncf/tag-security/blob/main/security-whitepaper/v2/cloud-native-security-whitepaper.md)
44+
- [CNCF Software Supply Chain Best Practices](https://github.com/cncf/tag-security/blob/main/supply-chain-security/supply-chain-security-paper/sscsp.md)
45+
- [OpenSSF Best Practices Badge](https://www.bestpractices.dev/en/criteria)
46+
- [OpenSSF Scorecard](https://github.com/ossf/scorecard/blob/main/docs/checks.md)
47+
- [OpenSSF Source Code Management Best Practices](https://best.openssf.org/SCM-BestPractices)
48+
- [OWASP SCVS](https://scvs.owasp.org/scvs/)
49+
- Various npm and GitHub documentation
50+
51+
4252
### Approach
4353

4454
Informed by these insights, this Standard is designed to serve as an achievable minimum security baseline for OpenJS Foundation Project maintainers. More plainly said, this is intended to be used as an easily digested and actioned security checklist.
@@ -66,44 +76,31 @@ Multiple open source and proprietary OSS project health measurement systems exis
6676

6777
- Security architecture and feature hardening best practices
6878

69-
This Standard does not address secure design and defense-in-depth feature hardening concepts. In their most useful form, these best practices are specific to the frameworks used. Examples include Node.js' Security Best Practices and Electron's Security Best Practices.
70-
71-
## Assumptions
72-
73-
### Vulnerability Management
74-
75-
This Standard assumes projects do not have the time, application security expertise, or budget for the commercial tooling needed to consistently perform exploitability analysis for vulnerabilities in their transitive dependencies. For this reason, it Expects projects to refresh their dependencies at least every six months. The Standard Expects exploitable vulnerabilities in direct dependencies to be remediated within defined SLAs.
76-
77-
### Insider Threat
78-
79-
- **Unintentional:** This Standard offers numerous guidelines to address this risk. Most can be found in the various Authentication and Permissions sections.
80-
- **Intentional:** Most OSS project health systems attempt to infer and score this risk via automated measurement of how well the project enforces the four eyes principle (1 author + 1 reviewer). OpenSSF Scorecard goes further and penalizes projects unable to demonstrate an ability to implement six eyes reviews (1 author + 2 reviewers).
81-
82-
However, the vast majority of npm packages have only one maintainer, including several OpenJS Projects. A review of OpenSSF’s internal discussion on this topic reveals the questionable real-world security value of how these checks are implemented and scored.
83-
84-
Unfortunately, many industry standard controls to manage Insider Threat risks remain out of reach to most OSS due to their voluntary nature and a lack of funding. Examples of common Unintentional and Intentional Insider Threat controls include dedicated engineering devices, installation of commercial Detection and Response (D&R) suites, monitoring of Threat Intelligence feeds, configuration change control monitoring, and the dedicated IT staff needed to establish a separation of duties that can be trusted to enforce secure configuration and change management processes.
85-
86-
### Dependency Inventory, Management, and Software Bills of Materials (SBOM)
87-
88-
The purpose of an SBOM is to provide software consumers an accurate list of third party dependencies included in a given software product. OpenJS supports the creation of SBOMs when they can be trusted to be consistently accurate. Efforts to increase publication of SBOMs are critically important in the context of compiled languages and closed source software.
89-
90-
In the case of JavaScript, and in particular the Node.js and npm ecosystems, research has demonstrated that SBOMs generated by npm and other tools for JavaScript libraries [are not and cannot be made accurately](https://blog.deps.dev/zillions-of-sboms/). The root cause of this gap is npm’s method of resolving dependency conflicts, which should be expected by software consumers to produce wildly different sets of dependencies depending on the other libraries used in a given application.
91-
92-
Thus, the mass generation of SBOMs for individual JavaScript libraries in npm may actually be _worse_ than not publishing an SBOM at all. If this Standard were to Expect individual libraries to publish SBOMs that cannot, and will never, represent the dependencies used in an application used by software consumers, we risk polluting the ecosystem of SBOM tools with bad data. This Standard recommends that freestanding OpenJS JavaScript applications publish an SBOM.
93-
94-
For OpenJS projects that are libraries, this Standard Expects them to perform dependency inventorying and management to evaluate their use of dependencies holistically.
79+
This Standard does not address secure design and defense-in-depth feature hardening concepts. In their most useful form, these best practices are specific to the frameworks used. Examples include [Node.js' Security Best Practices](https://nodejs.org/en/learn/getting-started/security-best-practices) and [Electron's Security Best Practices](https://www.electronjs.org/docs/latest/tutorial/security).
9580

9681
## How to Use the Standard
9782

98-
This Standard is designed to be used by three different types of OpenJS Foundation Projects:
99-
100-
101-
- Incubating Projects
102-
- For use as part of their process to graduate into an Active Project.
103-
- Active Projects (eg: At Large and Impact)
104-
- For use as part of their own processes to mature and maintain their security posture.
105-
- Retiring Projects (eg: Emeritus Projects)
106-
- For use as part of the process to wind down and end support for an Active Project in order to establish a durable, long-term baseline.
83+
The Standard is organized around three concepts:
84+
- Categories that organize the different types of Guidelines by security domain:
85+
1. User Authentication
86+
2. User Account Permissions
87+
3. Service Authentication
88+
4. Github Workflows
89+
5. Vulnerability Management
90+
6. Coordinated Vulnerability Disclosure
91+
7. Code Quality
92+
8. Code Review
93+
9. Source Control
94+
10. Dependency Inventory
95+
11. Dependency Management
96+
- Priority Groups that break up the 72 Guidelines into 22 smaller, sequenced chunks of work. Maintainers can use the Priority Groups to prioritize, sequence, and establish milestones to communicate and celebrate incremental security successes.
97+
- Applicability of the Guideline based on the Project’s Status in OpenJS’ Project Lifecycle:
98+
- Incubating Projects
99+
- For use as part of their processes to mature and maintain their security posture to graduate into an Active Project.
100+
- Active Projects (eg: At Large and Impact)
101+
- For use as part of their own processes to mature and maintain their security posture.
102+
- Retiring Projects (eg: Emeritus Projects)
103+
- For use when winding down and ending support for an Active Project in order to establish a durable, long-term baseline security posture.
107104

108105
These Project types represent very different phases of an OSS project’s lifecycle, including their process maturity and available resources. To acknowledge these potentially enormous variances, for each Project type and Item, the Standard offers four different types of Guidance:
109106

@@ -120,4 +117,3 @@ These Project types represent very different phases of an OSS project’s lifecy
120117
- Low real-world security impact
121118
- Not Applicable (N/A)
122119
- This Guidance is reserved for Items that are no longer relevant for Projects once they are formally Retired.
123-

0 commit comments

Comments
 (0)