├── specification ├── images ├── README.md └── framework.md ├── governance ├── Charter.pdf ├── s2c2f-steering-committee.md ├── CS_Contributor_License_Agreement.md ├── Governance.md └── Community_Specification_License_v1.md ├── images ├── Diagram-white-bkg.png ├── image_from_ios_720.jpg ├── secure-package-icon.png ├── 8-practices-white-bkg.png └── maturity-level-white-bkg.png ├── Scope.md ├── Reference_implementation ├── README.md ├── GitLab.md └── GitHub.md ├── LICENSE.md ├── .github └── settings.yml ├── community └── Roadmap.md ├── Notices.md ├── README.md ├── Contributing.md ├── Code of Conduct.md ├── FAQ.md └── Minutes └── 2022 -23 Meeting Notes.md /specification/images: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /governance/Charter.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ossf/s2c2f/HEAD/governance/Charter.pdf -------------------------------------------------------------------------------- /images/Diagram-white-bkg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ossf/s2c2f/HEAD/images/Diagram-white-bkg.png -------------------------------------------------------------------------------- /images/image_from_ios_720.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ossf/s2c2f/HEAD/images/image_from_ios_720.jpg -------------------------------------------------------------------------------- /images/secure-package-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ossf/s2c2f/HEAD/images/secure-package-icon.png -------------------------------------------------------------------------------- /images/8-practices-white-bkg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ossf/s2c2f/HEAD/images/8-practices-white-bkg.png -------------------------------------------------------------------------------- /images/maturity-level-white-bkg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ossf/s2c2f/HEAD/images/maturity-level-white-bkg.png -------------------------------------------------------------------------------- /Scope.md: -------------------------------------------------------------------------------- 1 | ## Scope 2 | 3 | This guide outlines and defines how to securely consume Open Source Software (OSS) dependencies into the developer's workflow. 4 | -------------------------------------------------------------------------------- /Reference_implementation/README.md: -------------------------------------------------------------------------------- 1 | # Reference Implementations 2 | 3 | This section of the repo captures suggested ways to implement the Secure Supply Chain Consumption Framework (S2C2F) based on which CI/CD platform you are using. The suggested capabilities try leverage as much native features to the specific CI/CD environment as possible. 4 | 5 | We are looking for help to create pages to suggest reference implementations for the following platforms: 6 | 7 | 1. [GitHub](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/GitHub.md) 8 | 2. [GitLab](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/GitLab.md) 9 | 3. Jenkins 10 | 4. Circle CI 11 | 5. TeamCity 12 | 6. Travis CI 13 | 7. And more... 14 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # Licenses 2 | 3 | ## Specification License 4 | 5 | Specifications in the repository are subject to the **Community Specification License 1.0** available at [https://github.com/CommunitySpecification/1.0](https://github.com/CommunitySpecification/1.0). 6 | 7 | ## Source Code License 8 | 9 | If source code is included in this repository, or for sample or reference code included in the specification itself, that code is subject to the MIT license unless otherwise designated. In the case of any conflict or confusion within this specification repository between the Community Specification License and the MIT or other designated license, the terms of the Community Specification License shall apply. 10 | 11 | If source code is included in this repository, or for sample or reference code included in the specification itself, that code is subject to the MIT license unless otherwise marked. 12 | 13 | In the case of any conflict or confusion within this specification repository between the Community Specification License and the designated source code license, the terms of the Community Specification License shall apply. 14 | -------------------------------------------------------------------------------- /governance/s2c2f-steering-committee.md: -------------------------------------------------------------------------------- 1 | # S2C2F Governance 2 | 3 | This repo contains documents that describe the governance practices for the Secure Supply Chain Consumption Framework Project. 4 | 5 | The S2C2F Project oversees development of the S2C2F materials in the [S2C2F GitHub org](https://github.com/ossf/s2c2f). Specifications developed by the S2C2F Project are developed in this repo, and are subject to the licensing and governance policies described in this repo. 6 | 7 | The S2C2F Governance process is based on the [Community Specification model and license](https://github.com/CommunitySpecification/1.0) from the [Joint Development Foundation](https://www.jointdevelopment.org). 8 | 9 | ## Steering committee 10 | 11 | Current steering committee members: 12 | 13 | - [Jay White](https://github.com/camaleon2016) - Microsoft 14 | - [Adrian Diglio](https://github.com/adriandiglio) - Microsoft 15 | - [David A. Wheeler](https://github.com/david-a-wheeler) - Linux Foundation 16 | - [Jonathan Meadows](https://github.com/) - Citi 17 | - [Christopher Robinson](https://github.com/CRob) - Intel 18 | 19 | To contact the steering committee: 20 | 21 | - On GitHub: `@ossf/s2c2f/governance/s2c2f-steering-committee` 22 | -------------------------------------------------------------------------------- /.github/settings.yml: -------------------------------------------------------------------------------- 1 | repository: 2 | # See https://developer.github.com/v3/repos/#edit for all available settings. 3 | 4 | # The name of the repository. Changing this will rename the repository 5 | name: project-template 6 | 7 | # A short description of the repository that will show up on GitHub 8 | description: OpenSSF Project Template 9 | 10 | # A URL with more information about the repository 11 | homepage: https://openssf.org 12 | 13 | # Collaborators: give specific users access to this repository. 14 | # see /governance/roles.md for details on write access policy 15 | # note that the permissions below may provide wider access than needed for 16 | # a specific role, and we trust these individuals to act according to their 17 | # role. If there are questions, please contact one of the chairs. 18 | collaborators: 19 | # Chairs and Admin Help 20 | - username: 21 | permission: admin 22 | 23 | # Contributors 24 | # all permissions except admin 25 | 26 | - username: 27 | permission: push 28 | 29 | labels: 30 | - name: helpwanted 31 | color: ffff54 32 | - name: good first issue 33 | color: ff8c00 34 | - name: meeting 35 | color: 00ff00 36 | 37 | # additional colors in this palette: 38 | # 7f0000 , 1e90ff, ffdab9, ff69b4 39 | -------------------------------------------------------------------------------- /governance/CS_Contributor_License_Agreement.md: -------------------------------------------------------------------------------- 1 | By making a Contribution to this repository, I agree to the terms of the following documents located at https://github.com/CommunitySpecification/1.0: 2 | 3 | (a) Community Specification License 1.0 (.0_Community_Specification_License-v1.md) 4 | 5 | (b) Community Specification Governance Policy 1.0 (5._Governance.md) 6 | 7 | (c) Community Specification Contribution Policy 1.0 (6._Contributing.md) 8 | 9 | (d) Community Specification Code of Conduct (8._Code_of_Conduct.md) 10 | 11 | In addition, for source code contributions, I certify that: 12 | 13 | (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this working group and the contribution may be public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this agreement or the open source license(s) involved. 14 | 15 | I represent that I am legally entitled to make the grants set forth in the documents above. If my employer(s) has rights to intellectual property that may be infringed by the materials developed by this Working Group, I represent that I have received permission to enter these agreements on behalf of that employer. 16 | -------------------------------------------------------------------------------- /community/Roadmap.md: -------------------------------------------------------------------------------- 1 | ## S2C2F Roadmap 2 | 3 | ### Strategic Goals of S2C2F 4 | 5 | The S2C2F has a number of goals that we wish to accomplish together as a community: 6 | * **Awareness** of how to address the supply chain threats specific to open source, and understanding that the S2C2F is here to directly mitigate those issues 7 | * This is accomplished through collaboration with other areas of the OpenSSF, continued referencing of the S2C2F in publications 8 | * **Community Engagement** to keep the S2C2F relevant and up-to-date on the latest threats 9 | * **Adoption** by the industry to reduce open source supply chain risk 10 | * This is accomplished through industry recognition as a best practice. Adoption of the S2C2F into the OpenSSF was the first step on that journey. Pursuing international standardization is another 11 | * Develop attestations of conformance to S2C2F policies 12 | * **Drive Tooling Innovation** across the industry to help others implement the S2C2F requirements, as well as driving innovations related to generation of claims/attestations of compliance with the S2C2F maturity levels 13 | * The S2C2F SIG shouldn’t be working in a silo. There needs to be conscious efforts to leverage other initiatives across the OpenSSF where it makes sense for S2C2F to be involved. 14 | * Tooling to generate attestations of policy conformance 15 | 16 | ### S2C2F Initiatives Seeking Community Support 17 | 18 | These initiatives align with the strategic goals of S2C2F 19 | * Creating reference implementation guidance for different DevOps platforms [https://github.com/ossf/s2c2f/tree/main/Reference_implementation](https://github.com/ossf/s2c2f/tree/main/Reference_implementation) 20 | * Create Supplemental Material for deeper dives and clarification [https://github.com/ossf/s2c2f/issues/24](https://github.com/ossf/s2c2f/issues/24) 21 | * Translations of the framework to other languages 22 | * Pursue international standardization 23 | * Continuous improvement leveraging feedback from those that have implemented/implementing S2C2F 24 | * Contributing to the S2C2F attestation GitHub Action tool. Areas where we are open for contribution are listed in our tool’s Roadmap [https://github.com/ossf/S2C2F-attestation-schema-and-tool/blob/main/ROADMAP.md](https://github.com/ossf/S2C2F-attestation-schema-and-tool/blob/main/ROADMAP.md) 25 | 26 | -------------------------------------------------------------------------------- /Notices.md: -------------------------------------------------------------------------------- 1 | # Notices 2 | 3 | ## Code of Conduct 4 | 5 | Contact for Code of Conduct issues or inquires: 6 | * Jay White (jaywhite@microsoft.com) 7 | * Adrian Diglio (adrian.diglio@microsoft.com) 8 | 9 | 10 | ## License Acceptance 11 | 12 | Per Community Specification License 1.0 Section 2.1.3.3, Licensees may indicate their acceptance of the Community Specification License by issuing a pull request to the Specification’s repository’s Notice.md file, including the Licensee’s name, authorized individuals' names, and repository system identifier (e.g. GitHub ID), and specification version. 13 | 14 | A Licensee may consent to accepting the current Community Specification License version or any future version of the Community Specification License by indicating "or later" after their specification version. 15 | 16 | --------------------------------------------------------------------------------- 17 | 18 | Licensee’s name: 19 | 20 | Authorized individual and system identifier: 21 | 22 | Specification version: 23 | 24 | --------------------------------------------------------------------------------- 25 | 26 | ## Withdrawals 27 | 28 | Name of party withdrawing: 29 | 30 | Date of withdrawal: 31 | 32 | --------------------------------------------------------------------------------- 33 | 34 | ## Exclusions 35 | 36 | This section includes any Exclusion Notices made against a Draft Deliverable or Approved Deliverable as set forth in the Community Specification Development License. Each Exclusion Notice must include the following information: 37 | 38 | - Name of party making the Exclusion Notice: 39 | 40 | - Name of patent owner: 41 | 42 | - Specification: 43 | 44 | - Version number: 45 | 46 | **For issued patents and published patent applications:** 47 | 48 | (i) patent number(s) or title and application number(s), as the case may be: 49 | 50 | (ii) identification of the specific part(s) of the Specification whose implementation makes the excluded claim a Necessary Claim. 51 | 52 | **For unpublished patent applications must provide either:** 53 | 54 | (i) the text of the filed application; or 55 | 56 | (ii) identification of the specific part(s) of the Specification whose implementation makes the excluded claim a Necessary Claim. 57 | 58 | ----------------------------------------------------------------------------------------- 59 | -------------------------------------------------------------------------------- /specification/README.md: -------------------------------------------------------------------------------- 1 | # Maintaining the S2C2F Specification 2 | 3 | > ⭐: **Click _[here](Secure_Supply_Chain_Consumption_Framework_(S2C2F).pdf)_ for the PDF of the specification** 4 | > 5 | > :atom:: **Click _[here](framework.md)_ to view the specification in markdown** 6 | 7 | ## Updates to the specification 8 | 9 | The S2C2F specification is intended to be a living document 10 | created and maintained for the community by its members. 11 | 12 | Updates to the whitepaper, suggestions for updates, or discussion for updates 13 | should initiate with an [issue](https://github.com/microsoft/oss-ssc-framework/issues) 14 | submitted to the repo and labeled with "discussion" and "specification". 15 | 16 | ### Markdown 17 | 18 | The living S2C2F is captured in [markdown](framework.md) and is where all updates will take place. 19 | 20 | ### Contributing updates 21 | 22 | All members of the community are welcome to contribute updates to the S2C2 Framework specification. We 23 | ask potential contributors to refer to the original design decisions, listed 24 | below, as guidance when determining the content of their updates. 25 | 26 | It is highly recommended that you seek peer review for your updates beyond that 27 | of the Technical Leads of the working group. 28 | 29 | After the issue has been triaged in the community call, and has been tagged with "Spec Change", the next step is to submit a PR to the [markdown](framework.md) with the proposed changes. Once the PR is submitted, please link the PR to the issue to request a review. 30 | 31 | ### Versioning and publishing 32 | 33 | It is expected that many minor updates will occur, corrections to grammar, 34 | spelling, clarification in language, translations, etc. When these occur they 35 | are considered minor changes to the overall content and will not warrant the 36 | regeneration of the PDF. 37 | 38 | When significant changes to the intent, content, or numerous minor changes 39 | occur, the S2C2F SIG will assess and determine if a new major version 40 | of the PDF needs to be published. When this decision is made, the markdown content 41 | will be converted to text document and sent to the S2C2F technical writers to 42 | create the PDF. The PDF will then be published back into the repository 43 | annotating the new version, updating the links in the README.md accordingly. 44 | 45 | Minor updates to the markdown shall receive a minor version bump indicated in 46 | the Metadata table of the document and recorded as WIP. When enough significant 47 | changes have been recorded, the markdown will be placed "In Review" (via PR) and 48 | solicited to the S2C2F SIG mailing list for review, at a 49 | minimum. 50 | 51 | Upon completion of review, the S2C2F technical writer shall provide final 52 | approval on the PR. At which point the markdown state will be changed to 53 | "Approved" and merged. 54 | 55 | ## Original design decisions 56 | 57 | The S2C2F creation occurred using the below general design decisions which 58 | should be considered when updating the content. 59 | 60 | * Consider if the content already exists elsewhere. Provide references to 61 | comprehensive information on a topic rather than re-writing the content. This 62 | not only allows us to provide summarization of complex topics, but also 63 | exposes the audience to other avenues of information for which they may be 64 | unaware. 65 | * Determine if the content is better suited as it's own document, such as a 66 | how-to, blog, or whitepaper of itself. 67 | * Determine if your suggestion belongs in the high-level solution-agnostic set of Practices - which can be used in any scenario - or if your suggestion is more of a detailed implementation-level requirement. 68 | * Identify if the proposed requirement is realistic or aspirational. Suggest a level of maturity that fits with the themes for each maturity level. 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Secure Supply Chain Consumption Framework (S2C2F) Project 2 | 3 | Inspector Gadget Goose 4 | 5 | The S2C2F Project is a group working within the OpenSSF's Supply Chain Integrity Working Group formed to further develop and continuously improve the S2C2F guide which outlines and defines how to securely consume Open Source Software (OSS) dependencies into the developer’s workflow. This paper is split into two parts: a solution-agonistic set of practices and a maturity model-based implementation guide. The Framework is targeted toward organizations that do software development, that take a dependency on open source software, and that seek to improve the security of their software supply chain. 6 | 7 | ## Motivation 8 | 9 | OSS has become a critical aspect of any software supply chain. The S2C2F was designed based on known threats (i.e. tactics and techniques) used by adversaries to compromise OSS packages. By leveraging the framework, software development teams and organizations can securely consume OSS dependencies into the developer's workflow and enhance their OSS governance program to address threats specific to OSS consumption. 10 | 11 | ## Objective 12 | 13 | The objective for the S2C2F Project is to develop and continuously improve upon a guide that provides the following: 14 | 15 | * A high-level solution-agnostic set of practices 16 | * A detailed list of requirements 17 | * A list of real-world supply chain threats specific to OSS, and how our Framework requirements mitigates them 18 | * A maturity model-based implementation guide, with links to tools from across the industry 19 | * A process for assessing your organization’s maturity 20 | * A mapping of the Framework requirements to 6 other supply chain specifications 21 | 22 | ## View or Download the S2C2F Specification 23 | 24 | :atom:: **Click _[here](./specification/framework.md)_ to view the specification in markdown** 25 | 26 | To learn more, the S2C2F FAQ is available [here](./FAQ.md). 27 | 28 | ## Get Involved 29 | 30 | * Official communications occur on the [openssf-sig-s2c2f@lists.openssf.org](https://lists.openssf.org/g/openssf-sig-s2c2f). \ 31 | [Manage your subscriptions to Open SSF mailing lists](https://lists.openssf.org/g/main/subgroups). 32 | * [S2C2F Project Slack](https://openssf.slack.com/archives/C03THTH3RSM) 33 | * [Supply Chain Integrity WG Slack](https://openssf.slack.com/archives/C01A1MA7A1K) 34 | 35 | ### Quick Start 36 | 37 | * File issues in the [Issues page](https://github.com/ossf/s2c2f/issues) 38 | * We are actively seeking contributions to our [Reference Implementations](./Reference_implementation) 39 | 40 | ### Meeting times 41 | 42 | * Every other Tuesday @ 12:00pm PST The invite is available on the [OpenSSF Community Calendar](https://calendar.google.com/calendar/u/0/r?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ) 43 | * [Meeting Minutes](https://docs.google.com/document/d/10Q_VOvKsGaYJoK-5yJY4868mTkYZjEo-6xV6ghYS84k/edit) 44 | 45 | # Governance 46 | 47 | The [GOVERNANCE.md](https://github.com/ossf/s2c2f/blob/main/governance/Governance.md) outlines the scope and governance of our group activities. 48 | 49 | * Lead: Adrian Diglio (https://github.com/adriandiglio) 50 | * Co-Lead: Jay White (https://github.com/camaleon2016) 51 | 52 | ## Steering Committee 53 | - [Jay White, Microsoft](https://github.com/camaleon2016) 54 | - [Adrian Diglio, Microsoft](https://github.com/adriandiglio) 55 | 56 | ## Project Maintainers 57 | - [Jay White, Microsoft](https://github.com/camaleon2016) 58 | - [Adrian Diglio, Microsoft](https://github.com/adriandiglio) 59 | - [Jasmine Wang, Microsoft](https://github.com/jasminewang0) 60 | - [Tom Bedford, Bloomberg](https://github.com/tombedfordgit) 61 | 62 | 63 | ## Project Collaborators 64 | - [Christopher "CRob" Robinson, Intel](https://github.com/SecurityCRob) 65 | - [David A Wheeler, LF/OSSF](https://github.com/david-a-wheeler) 66 | -------------------------------------------------------------------------------- /Reference_implementation/GitLab.md: -------------------------------------------------------------------------------- 1 | # Suggested Reference Implementation for GitLab open source projects 2 | 3 | The goal of this document is to show how far a GitLab project can get using as much native tooling as possible toward achieving up to maturity level 3 for the Secure Supply Chain Consumption Framework (S2C2F). 4 | 5 | The community helps maintain these suggested methods of implementing the requirements, and will be updated over time. 6 | 7 | | Requirement ID | Requirement Title | Maturity Level | Reference Implementation in GitLab | 8 | | --- | --- | --- | --- | 9 | | ING-1 | Use public package managers trusted by your organization | L1 | Ex. npmjs.org, DockerHub | 10 | | ING-2 | Use an OSS binary repository manager solution | L1 | GitLab [Package Registry](https://docs.gitlab.com/ee/user/packages/package_registry/index.html) or [Container Registry](https://docs.gitlab.com/ee/user/packages/container_registry/) | 11 | | ING-3 | Have a Deny List capability to block known malicious OSS from being consumed | L3 | Not Available | 12 | | ING-4 | Mirror a copy of all OSS source code to an internal location | L3 | N/A. This requirement is geared toward large development teams | 13 | | SCA-1 | Scan OSS for known vulnerabilities | L1 | GitLab [Dependency Scanning](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/) and [Container Scanning](https://docs.gitlab.com/ee/user/application_security/container_scanning/index.html) | 14 | | SCA-2 | Scan OSS for licenses | L1 | GitLab [License compliance](https://docs.gitlab.com/ee/user/compliance/license_compliance/index.html) | 15 | | SCA-3 | Scan OSS to determine if its end-of-life | L2 | [OpenSSF Scorecard](https://github.com/ossf/scorecard) - actively maintained (inactivity for X years). Security Insights (Luigi) | 16 | | SCA-4 | Scan OSS for malware | L3 | [OpenSSF Package Analysis](https://github.com/ossf/package-analysis) | 17 | | SCA-5 | Perform proactive security review of OSS | L3 | Proactive security scans will be done out-of-band from a build. Usually it's an action that can be taken on cloned source | 18 | | INV-1 | Maintain an automated inventory of all OSS used in development | L1 | GitLab [Dependency list](https://docs.gitlab.com/ee/user/application_security/dependency_list/) | 19 | | INV-2 | Have an OSS Incident Response Plan | L2 | Write one - be focused on how to roll back versions of OSS | 20 | | UPD-1 | Update vulnerable OSS manually | L1 | | 21 | | UPD-2 | Enable automated OSS updates | L2 | [Renovate](https://github.com/renovatebot/renovate) | 22 | | UPD-3 | Display OSS vulnerabilities as comments in Pull Requests (PRs) | L2 | Leverage a [custom Scan Result Policy](https://docs.gitlab.com/ee/user/application_security/policies/scan-result-policies.html) that requires a reviewer to approve | 23 | | AUD-1 | Verify the provenance of your OSS | L3 | Repo it came from and commit hash from where it came. GitBOM? SBOM? | 24 | | AUD-2 | Audit that developers are consuming OSS through the approved ingestion method | L2 | An index methodology to identify the OSS code undeclared. Searching for Copyright and != your company name | 25 | | AUD-3 | Validate integrity of the OSS that you consume into your build | L2 | This is usually performed by the language package client | 26 | | AUD-4 | Validate SBOMs of OSS that you consume into your build | L4 | | 27 | | ENF-1 | Securely configure your package source files (i.e. nuget.config, .npmrc, pip.conf, pom.xml, etc.) | L2 | https://azure.microsoft.com/en-us/resources/3-ways-to-mitigate-risk-using-private-package-feeds/ | 28 | | ENF-2 | Enforce usage of a curated OSS feed that enhances the trust of your OSS | L3 | Enforce that “OpenSSF Package Analysis” was run via GitLab [Scan Execution Policies](https://docs.gitlab.com/ee/user/application_security/policies/scan-execution-policies.html) | 29 | | REB-1 | Rebuild the OSS in a trusted build environment, or validate that it is reproducibly built | L4 | Vet or validate tools that you use in your pipeline. This accounts for closed source scenarios as well. | 30 | | REB-2 | Digitally sign the OSS you rebuild | L4 | | 31 | | REB-3 | Generate SBOMs for OSS that you rebuild | L4 | | 32 | | REB-4 | Digitally sign the SBOMs you produce | L4 | | 33 | | FIX-1 | Implement a change in the code to address a zero-day vulnerability, rebuild, deploy to your organization, and confidentially contribute the fix to the upstream maintainer | L4 | | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Reference_implementation/GitHub.md: -------------------------------------------------------------------------------- 1 | # Suggested Reference Implementation for GitHub open source projects 2 | 3 | The goal of this document is to show how far a GitHub project can get using as much native tooling as possible toward achieving up to maturity level 3 for the Secure Supply Chain Consumption Framework (S2C2F). 4 | 5 | The community helps maintain these suggested methods of implementing the requirements, and will be updated over time. 6 | 7 | | Requirement ID | Requirement Title | Maturity Level | Reference Implementation in GitHub | 8 | | --- | --- | --- | --- | 9 | | ING-1 | Use public package managers trusted by your organization | L1 | Ex. npmjs.org, DockerHub | 10 | | ING-2 | Use an OSS binary repository manager solution | L1 | GitHub Packages | 11 | | ING-3 | Have a Deny List capability to block known malicious OSS from being consumed | L3 | a Deny list can be achieved through [Dependency Review action](https://josh-ops.com/posts/dependency-review-action/). You must create a branch protection rule for your default branch, and select "Require status checks to pass before merging" box. If a component has vulnerabilities, this part of the build will fail. And GitHub now auto-creates CVEs for malicious components, so this is in-effect your Deny List. | 12 | | ING-4 | Mirror a copy of all OSS source code to an internal location | L3 | [Duplicate a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/duplicating-a-repository) | 13 | | SCA-1 | Scan OSS for known vulnerabilities | L1 | Recommend using [GitHub dependency graph](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph) for your repo for scanning vulns | 14 | | SCA-2 | Scan OSS for licenses | L1 | Recommend configuring [Dependency Review](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review#configuring-the-dependency-review-github-action) for license management | 15 | | SCA-3 | Scan OSS to determine if its end-of-life | L2 | [OpenSSF Scorecard](https://github.com/ossf/scorecard) - actively maintained (inactivity for X years). Security Insights (Luigi) | 16 | | SCA-4 | Scan OSS for malware | L3 | [OpenSSF Package Analysis](https://github.com/ossf/package-analysis) | 17 | | SCA-5 | Perform proactive security review of OSS | L3 | Proactive security scans will be done out-of-band from a build. Usually it's an action that can be taken on cloned source | 18 | | INV-1 | Maintain an automated inventory of all OSS used in development | L1 | [GitHub Dependency Graph](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph) | 19 | | INV-2 | Have an OSS Incident Response Plan | L2 | Write one - be focused on how to roll back versions of OSS | 20 | | UPD-1 | Update vulnerable OSS manually | L1 | | 21 | | UPD-2 | Enable automated OSS updates | L2 | [Dependabot](https://docs.github.com/en/code-security/dependabot/dependabot-alerts/about-dependabot-alerts) | 22 | | UPD-3 | Display OSS vulnerabilities as comments in Pull Requests (PRs) | L2 | [Dependency Review](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review) via [GHAS](https://docs.github.com/en/enterprise-server@3.4/get-started/learning-about-github/about-github-advanced-security) | 23 | | AUD-1 | Verify the provenance of your OSS | L3 | Repo it came from and commit hash from where it came. GitBOM? SBOM? | 24 | | AUD-2 | Audit that developers are consuming OSS through the approved ingestion method | L2 | An index methodology to identify the OSS code undeclared. Searching for Copyright and != your company name | 25 | | AUD-3 | Validate integrity of the OSS that you consume into your build | L2 | This is usually performed by the language package client | 26 | | AUD-4 | Validate SBOMs of OSS that you consume into your build | L4 | | 27 | | ENF-1 | Securely configure your package source files (i.e. nuget.config, .npmrc, pip.conf, pom.xml, etc.) | L2 | https://azure.microsoft.com/en-us/resources/3-ways-to-mitigate-risk-using-private-package-feeds/ | 28 | | ENF-2 | Enforce usage of a curated OSS feed that enhances the trust of your OSS | L3 | Enforce a [branch protection rule](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests) to enforce that “OpenSSF Package Analysis” was run | 29 | | REB-1 | Rebuild the OSS in a trusted build environment, or validate that it is reproducibly built | L4 | | 30 | | REB-2 | Digitally sign the OSS you rebuild | L4 | | 31 | | REB-3 | Generate SBOMs for OSS that you rebuild | L4 | | 32 | | REB-4 | Digitally sign the SBOMs you produce | L4 | | 33 | | FIX-1 | Implement a change in the code to address a zero-day vulnerability, rebuild, deploy to your organization, and confidentially contribute the fix to the upstream maintainer | L4 | | 34 | -------------------------------------------------------------------------------- /Contributing.md: -------------------------------------------------------------------------------- 1 | # Community Specification Contribution Policy 1.0 2 | 3 | This document provides the contribution policy for specifications and other documents developed using the Community Specification process in a repository (each a “Working Group”). Additional or alternate contribution policies may be adopted and documented by the Working Group. 4 | 5 | ## 1. Contribution Guidelines. 6 | 7 | This Working Group accepts contributions via pull requests. The following section outlines the process for merging contributions to the specification 8 | 9 | **1.1. Issues.** Issues are used as the primary method for tracking anything to do with this specification Working Group. 10 | 11 | **1.1.1. Issue Types.** There are three types of issues (each with their own corresponding label): 12 | 13 | **1.1.1.1. Discussion.** These are support or functionality inquiries that we want to have a record of for future reference. Depending on the discussion, these can turn into "Spec Change" issues. 14 | 15 | **1.1.1.2. Proposal.** Used for items that propose a new ideas or functionality that require a larger discussion. This allows for feedback from others before a specification change is actually written. All issues that are proposals should both have a label and an issue title of "Proposal: [the rest of the title]." A proposal can become a "Spec Change" and does not require a milestone. 16 | 17 | **1.1.1.3. Spec Change:** These track specific spec changes and ideas until they are complete. They can evolve from "Proposal" and "Discussion" items, or can be submitted individually depending on the size. Each spec change should be placed into a milestone. 18 | 19 | ## 2. Issue Lifecycle. 20 | 21 | The issue lifecycle is mainly driven by the Maintainer. All issue types follow the same general lifecycle. Differences are noted below. 22 | 23 | **2.1. Issue Creation.** 24 | 25 | **2.2. Triage.** 26 | 27 | o The Editor in charge of triaging will apply the proper labels for the issue. This includes labels for priority, type, and metadata. 28 | 29 | o (If needed) Clean up the title to succinctly and clearly state the issue. Also ensure that proposals are prefaced with "Proposal". 30 | 31 | **2.3. Discussion.** 32 | 33 | o "Spec Change" issues should be connected to the pull request that resolves it. 34 | 35 | o Whoever is working on a "Spec Change" issue should either assign the issue to themselves or make a comment in the issue saying that they are taking it. 36 | 37 | o "Proposal" and "Discussion" issues should stay open until resolved. 38 | 39 | **2.4. Issue Closure.** 40 | 41 | ## 3. How to Contribute a Patch. 42 | 43 | The Working Group uses pull requests to track changes. To submit a change to the specification: 44 | 45 | **3.1 Fork the Repo, modify the Specification to Address the Issue.** 46 | 47 | **3.2. Submit a Pull Request.** 48 | 49 | ## 4. Pull Request Workflow. 50 | 51 | The next section contains more information on the workflow followed for Pull Requests. 52 | 53 | **4.1. Pull Request Creation.** 54 | 55 | o We welcome pull requests that are currently in progress. They are a great way to keep track of important work that is in-flight, but useful for others to see. If a pull request is a work in progress, it should be prefaced with "WIP: [title]". You should also add the wip label Once the pull request is ready for review, remove "WIP" from the title and label. 56 | 57 | o It is preferred, but not required, to have a pull request tied to a specific issue. There can be circumstances where if it is a quick fix then an issue might be overkill. The details provided in the pull request description would suffice in this case. 58 | 59 | **4.2. Triage** 60 | 61 | o The Editor in charge of triaging will apply the proper labels for the issue. This should include at least a size label, a milestone, and awaiting review once all labels are applied. 62 | 63 | **4.3. Reviewing/Discussion.** 64 | 65 | o All reviews will be completed using the review tool. 66 | 67 | o A "Comment" review should be used when there are questions about the spec that should be answered, but that don't involve spec changes. This type of review does not count as approval. 68 | 69 | o A "Changes Requested" review indicates that changes to the spec need to be made before they will be merged. 70 | 71 | o Reviewers should update labels as needed (such as needs rebase). 72 | 73 | o When a review is approved, the reviewer should add LGTM as a comment. 74 | 75 | o Final approval is required by a designated Editor. Merging is blocked without this final approval. Editors will factor reviews from all other reviewers into their approval process. 76 | 77 | **4.4. Responsive.** Pull request owner should try to be responsive to comments by answering questions or changing text. Once all comments have been addressed, the pull request is ready to be merged. 78 | 79 | **4.5. Merge or Close.** 80 | 81 | o A pull request should stay open until a Maintainer has marked the pull request as approved. 82 | 83 | o Pull requests can be closed by the author without merging. 84 | 85 | o Pull requests may be closed by a Maintainer if the decision is made that it is not going to be merged. 86 | -------------------------------------------------------------------------------- /Code of Conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. 8 | 9 | ## Our Standards 10 | 11 | Examples of behavior that contributes to a positive environment for our community include: 12 | 13 | * Demonstrating empathy and kindness toward other people 14 | * Being respectful of differing opinions, viewpoints, and experiences 15 | * Giving and gracefully accepting constructive feedback 16 | * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience 17 | * Focusing on what is best not just for us as individuals, but for the overall community 18 | 19 | Examples of unacceptable behavior include: 20 | 21 | * The use of sexualized language or imagery, and sexual attention or advances of any kind 22 | * Trolling, insulting or derogatory comments, and personal or political attacks 23 | * Public or private harassment 24 | * Publishing others' private information, such as a physical or email address, without their explicit permission 25 | * Other conduct which could reasonably be considered inappropriate in a professional setting 26 | 27 | ## Enforcement Responsibilities 28 | 29 | Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. 32 | 33 | ## Scope 34 | 35 | This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. 36 | 37 | ## Enforcement 38 | 39 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement as set forth in the repository's Notices.md file. All complaints will be reviewed and investigated promptly and fairly. 40 | 41 | All community leaders are obligated to respect the privacy and security of the reporter of any incident. 42 | 43 | ## Enforcement Guidelines 44 | 45 | Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: 46 | 47 | ### 1. Correction 48 | 49 | **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. 50 | 51 | **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. 52 | 53 | ### 2. Warning 54 | 55 | **Community Impact**: A violation through a single incident or series of actions. 56 | 57 | **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. 58 | 59 | ### 3. Temporary Ban 60 | 61 | **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. 62 | 63 | **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. 64 | 65 | ### 4. Permanent Ban 66 | 67 | **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. 68 | 69 | **Consequence**: A permanent ban from any sort of public interaction within the project community. 70 | 71 | ## Attribution 72 | 73 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, 74 | available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 75 | 76 | Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). 77 | 78 | [homepage]: https://www.contributor-covenant.org 79 | 80 | For answers to common questions about this code of conduct, see the FAQ at 81 | https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations. 82 | -------------------------------------------------------------------------------- /FAQ.md: -------------------------------------------------------------------------------- 1 | # Frequently Asked Questions 2 | 3 | Below are some frequently asked questions regarding the Framework. If you have further questions, feel free to start a discussion by opening an [Issue](https://github.com/ossf/s2c2f/issues). 4 | 5 | - [What is the Secure Supply Chain Consumption Framework (S2C2F)?](#what-is-the-secure-supply-chain-consumption-framework-s2c2f) 6 | - [What does this Framework focus on securing?](#what-does-this-framework-focus-on-securing) 7 | - [How do you define OSS?](#how-do-you-define-OSS) 8 | - [Why should I use the S2C2F?](#why-should-i-use-the-s2c2f) 9 | - [What is this Framework not?](#what-is-this-framework-not) 10 | - [Why is this Framework focused on open source?](#why-is-this-framework-focused-on-open-source) 11 | - [How does this Framework relate to other supply chain security specifications like SLSA?](#how-does-this-framework-relate-to-other-supply-chain-security-specifications-like-slsa) 12 | - [What is the difference between the SCA-5 and FIX-1 requirements?](#what-is-the-difference-between-the-SCA-5-and-FIX-1-requirements) 13 | - [Is the SCA-3 requirement only about the end of an open source project, or is it also about the end of support of a branch in the project used by a product?](#is-the-sca-3-requirement-only-about-the-end-of-an-open-source-project-or-is-it-also-about-the-end-of-support-of-a-branch-in-the-project-used-by-a-product) 14 | - [Is the UPD-3 requirement to add a reference to the known vulnerabilities in the pull requests intending to fix these vulnerabilities? What is the "Two-person PR reviews are enforced" prerequisite?](#is-the-upd-3-requirement-to-add-a-reference-to-the-known-vulnerabilities-in-the-pull-requests-intending-to-fix-these-vulnerabilities-what-is-the-two-person-pr-reviews-are-enforced-prerequisite) 15 | - [Is the ENF-1 requirement about properly configuring the allowed repositories into package managers?](#is-the-enf-1-requirement-about-properly-configuring-the-allowed-repositories-into-package-managers) 16 | 17 | ## About the framework 18 | 19 | ### What is the Secure Supply Chain Consumption Framework (S2C2F)? 20 | The S2C2F is a combination of processes and tools for any organization to adopt to help establish a secure OSS ingestion process to protect developers from OSS Supply Chain threats and to help establish a governance program to manage your organization’s use of OSS. The framework is based on three core concepts: control all artifact inputs, continuous process improvement, and scale. 21 | 22 | ### What does this Framework focus on securing? 23 | This framework focuses on securing OSS dependencies like PyPI, Maven, NuGet, npm, etc. The implementation guide does not apply to containers, but the 8 high level practices do. For further container guidance, please refer to the [Cloud Native Computing Foundation (CNCF) projects](https://www.cncf.io/projects/). 24 | 25 | ### How do you define OSS? 26 | Open Source Software, as adopted from [The Free Software Definition](https://en.wikipedia.org/wiki/The_Free_Software_Definition), is software that ensures that the end users have freedom in using, studying, sharing and modifying that software. For more details about the definition of Open Source Software (OSS), see [The Open Source Definition](https://opensource.org/osd/). 27 | 28 | ### Why should I use the S2C2F? 29 | Our framework provides the support and implementation guidance to protect your supply chains and prevent open source software threats from compromising your organization’s software and development environment. The framework includes solution-agonistic practices – suited for individuals like compliance/risk managers, security managers, engineering managers, and Chief Information Security Officers – plus an implementation guide with recommended tooling – suited for software developers, Continuous Integration and Continuous Development administrators, and security practitioners. 30 | 31 | ### What is this Framework not? 32 | The S2C2F does not provide guidance on how to secure your DevOps workflows, how to secure your build infrastructure, how to secure the code you author, or how to secure your containers. 33 | 34 | ### Why is this Framework focused on open source? 35 | Across the software industry today, developers are using and relying upon OSS components to expedite developer productivity and innovation – which makes OSS a critical piece of any software’s supply chain. However, cyberattacks that specifically target open source are growing at an exponential rate, as they are trying to abuse these package manager ecosystems to either distribute their own malicious components or to compromise existing OSS components. 36 | 37 | ### How does this Framework relate to other supply chain security specifications like SLSA? 38 | The S2C2F is focused on securely consuming OSS and makes an excellent bridge to other producer-focused supply chain security frameworks, such as SLSA. 39 | 40 | ## Requirements 41 | 42 | ### What is the difference between the SCA-5 and FIX-1 requirements? 43 | `SCA-5: Perform proactive security review of OSS - Identify zero-day vulnerabilities and confidentially contribute fixes back to the upstream maintainer.` 44 | 45 | SCA-5 requirement is simply that your organization is performing proactive security reviews of OSS and helping improve the security of the entire ecosystem by partnering with the upstream maintainer (confidentially - outside of public GitHub issues via [private security notifications](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)) and suggesting a fix. 46 | 47 | `FIX-1: Implement a change in the code to address a zero-day vulnerability, rebuild, deploy to your organization, and confidentially contribute the fix to the upstream maintainer - To be used only in extreme circumstances when the risk is too great and to be used temporarily until the upstream maintainer issues a fix.` 48 | 49 | FIX-1 is when you come across a zero-day vulnerability that is so severe that your organization feels that they can't wait for the upstream maintainer to issue a public fix. The only other action would be to implement a private fix (just for your team/organization) while you continue trying to partner with the upstream maintainer on a public fix. A private fix should always be considered a temporary risk reduction measure for extreme circumstances, as your team/organization should plan to convert to the public fix once available. 50 | 51 | ### Is the SCA-3 requirement only about the end of an open source project, or is it also about the end of support of a branch in the project used by a product? 52 | 53 | Scanning for end of support entails scanning for all of the above to understand if anything consumed is no longer supported. Consumers of open source may want to know if a product is no longer supported or even if a specific version range is unsupported. The point is to identify if anything consumed is no longer supported. It is vital to know if any dependency is unsupported as this can create gaps in security since dependencies won't get patched and attackers can take advantage of the lack of support. 54 | 55 | ### Is the UPD-3 requirement to add a reference to the known vulnerabilities in the pull requests intending to fix these vulnerabilities? What is the "Two-person PR reviews are enforced" prerequisite? 56 | 57 | Including references to known vulnerabilities in pull requests prevents vulnerabilities from being unknowingly introduced earlier in the DevOps lifecycle. This requirement should be exercised when a developer adds new dependencies at pull request time. The prerequisite of "two-person PR reviews" means that manual pull request reviews are conducted by at least one reviewer separate from the person the developed the code so that they see and remediate the vulnerabilities prior to approving and merging the pull request. 58 | 59 | ### Is the ENF-1 requirement about properly configuring the allowed repositories into package managers? 60 | 61 | ENF-1 is about hardening package source file configuration to prevent mix-and-match attacks through dependencies being sourced from multiple registries or otherwise not using the expected version. How to do it varies by environment (OSS developer, indie, enterprise) and ecosystem (Python, npm, etc). 62 | -------------------------------------------------------------------------------- /governance/Governance.md: -------------------------------------------------------------------------------- 1 | # Community Specification Governance Policy 1.0 2 | 3 | This document provides the governance policy for specifications and other documents developed using the Community Specification process in a repository (each a “Working Group”). Each Working Group and must adhere to the requirements in this document. 4 | 5 | ## 1. Roles. 6 | 7 | Each Working Group may include the following roles. Additional roles may be adopted and documented by the Working Group. 8 | 9 | **1.1. Maintainer.** "Maintainers" are responsible for organizing activities around developing, maintaining, and updating the specification(s) and other assets developed by the Project. Maintainers are also responsible for determining consensus and coordinating appeals. Examples of the responsibility of a Maintainer (directly or by delegation) include: 10 | 11 |
  • leading workstream meetings and tracking progress 12 |
  • setting the agenda, scheduling meetings and keeping minutes 13 |
  • actively engaging with the proposals process, both in GitHub issues and the slsa-proposals repo 14 |
  • triaging and prioritizing issues 15 |
  • contributing and reviewing pull requests 16 |
  • manage the day-to-day planning, operation, organization, deliverables and alignment with other workstreams 17 |
  • coordinating efforts with the Steering Committee, other workstreams and other external projects 18 |
  • ensuring that the contents of their workstream's materials accurately reflect the decisions that have been made by the group, and that the specification adheres to formatting and content guidelines 19 | 20 | A Contributor may become a Maintainer with the Approval of the Steering Committee. A Maintainer may be removed with the Approval of the Steering Committee. A Steering Committee Member may not deliberate or vote on their own appointment or removal as a Maintainer. 21 | 22 | **1.2. Editor.** “Editors” are responsible for ensuring that the contents of the document accurately reflect the decisions that have been made by the group, and that the specification adheres to formatting and content guidelines. Each Working Group will designate an Editor for that Working Group. A Working Group may select a new Editor upon Approval of the Working Group Participants. 23 | 24 | **1.3. Participants.** “Participants” are those that have made Contributions to the Working Group subject to the Community Specification License. 25 | 26 | **1.4. Steering Committee Members.** The "Steering Committee" is the body that is responsible for overseeing the overall activities of the Project. The Steering Committee consists of up to 7 Participants (each, a "Steering Committee Member") and will initially consist of the Steering Committee Members so designated as of the date of initial adoption of this S2C2F Governance Policy. The Steering Committee will meet regularly as needed, but no less then once per quarter. Examples of the responsibilities of the Steering Committee include: 27 | 28 |
  • enabling the smooth running of the Project 29 |
  • coordinating activities between workstreams and Maintainers 30 |
  • collectively reviewing and revising the roadmap on a biannual basis 31 |
  • participating in strategic planning, such as coordinating face-to-face meetings or suggesting and approving changes to the governance model 32 |
  • creating or restructuring workstreams 33 |
  • responding to specific issues or concerns above and beyond the domain of the various workstreams 34 |
  • making decisions when community consensus cannot be reached, pursuant to the appeal process documented below 35 | 36 | **1.5. Steering Committee Member Terms.** During the initial year, the Steering Committee Members will agree on grouping themselves into two groups, one to serve an initial two-year term, and the other for an initial one-year term. Thereafter, the Steering Committee Members will serve two year terms. 37 | 38 | At the expiration of a Steering Committee Member term, any Participant may submit a nomination to fill the seat. An individual may be nominated for and serve any number of successive terms. 39 | 40 | If a Steering Committee Member resigns or ceases to participate for a significant period of time prior to the end of their term, the remaining Steering Committee Members may choose to remove that Steering Committee Member. If so, the remaining Steering Committee Members will determine whether and when to fill the role. 41 | 42 | The Steering Committee may add additional Steering Committee Members as it deems necessary. 43 | 44 | After discussion with the nominees for a vacant seat, the Steering Committee will select the new Steering Committee Members from the group of nominees taking into account such things as the nominees’ willingness to take on the role, skills, and level of participation as well as the need to maintain a balanced perspective on the Steering Committee (e.g., no more than two people from the same group of related companies should be on the Steering Committee). A Steering Committee Member nominee may not deliberate or vote on their own appointment. 45 | 46 | ## 2. Decision Making. 47 | 48 | **2.1. Consensus-Based Decision Making.** Working Groups make decisions through a consensus process (“Approval” or “Approved”). While the agreement of all Participants is preferred, it is not required for consensus. Rather, the Maintainer will determine consensus based on their good faith consideration of a number of factors, including the dominant view of the Working Group Participants and nature of support and objections. The Maintainer will document evidence of consensus in accordance with these requirements. 49 | 50 | **2.2. Appeal Process.** Decisions may be appealed be via a pull request or an issue, and that appeal will be considered by the Maintainer in good faith, who will respond in writing within a reasonable time. 51 | 52 | **2.3. Steering Committee Appeal Process.** Decisions that have been appealed to the Maintainers may in extraordinary cases be appealed to the Steering Committee for reconsideration. An appeal to the Steering Committee must specify in detail (1) the specific decision that is being appealed; (2) the basis for contending that the decision was not aligned with the purposes, goals or scope of the Project; and (3) an explanation of why the decision is extraordinary enough to warrant an appeal to the Steering Committee. The appeal will be considered by the Steering Committee in good faith, who will respond in writing within a reasonable time. The Steering Committee may decline to consider appeals that are unexceptional, unfounded or excessive, including because of their repetitive character. 53 | 54 | **2.4. Amendments to Governance Documents.** The documents in this Governance repository may be amended by a two-thirds vote of the entire Steering Committee and are subject to approval by The Linux Foundation. However, entries may be added to the Notices file in this Governance repository as described therein. 55 | 56 | ## 3. Ways of Working. 57 | 58 | Inspired by [ANSI’s Essential Requirements for Due Process](https://share.ansi.org/Shared%20Documents/Standards%20Activities/American%20National%20Standards/Procedures,%20Guides,%20and%20Forms/2020_ANSI_Essential_Requirements.pdf), Community Specification Working Groups must adhere to consensus-based due process requirements. These requirements apply to activities related to the development of consensus for approval, revision, reaffirmation, and withdrawal of Community Specifications. Due process means that any person (organization, company, government agency, individual, etc.) with a direct and material interest has a right to participate by: a) expressing a position and its basis, b) having that position considered, and c) having the right to appeal. Due process allows for equity and fair play. The following constitute the minimum acceptable due process requirements for the development of consensus. 59 | 60 | **3.1. Openness.** Participation shall be open to all persons who are directly and materially affected by the activity in question. There shall be no undue financial barriers to participation. Voting membership on the consensus body shall not be conditional upon membership in any organization, nor unreasonably restricted on the basis of technical qualifications or other such requirements. Membership in a Working Group’s parent organization, if any, may be required. 61 | 62 | **3.2. Lack of Dominance.** The development process shall not be dominated by any single interest category, individual or organization. Dominance means a position or exercise of dominant authority, leadership, or influence by reason of superior leverage, strength, or representation to the exclusion of fair and equitable consideration of other viewpoints. 63 | 64 | **3.3. Balance.** The development process should have a balance of interests. Participants from diverse interest categories shall be sought with the objective of achieving balance. 65 | 66 | **3.4. Coordination and Harmonization.** Good faith efforts shall be made to resolve potential conflicts between and among deliverables developed under this Working Group and existing industry standards. 67 | 68 | **3.5. Consideration of Views and Objections.** Prompt consideration shall be given to the written views and objections of all Participants. 69 | 70 | **3.6. Written procedures.** This governance document and other materials documenting the Community Specification development process shall be available to any interested person. 71 | 72 | ## 4. Specification Development Process. 73 | 74 | **4.1. Draft.** During the specification development process, Participants may submit issues and pull requests to a S2C2F specification repository. Pull requests will be merged upon Approval of the applicable Maintainers. Each updated version of the specification following the merging of a pull request will be considered a "Draft Specification". 75 | 76 | **4.2. Project Approval.** Upon the determination by the applicable workstream that it has achieved the objectives for its specification as described in the Scope, the applicable Maintainers will Approve that Draft Specification as a candidate for "Approved Specification" status. The following process will then be used: 77 | 78 |
  • The Maintainers will distribute that version of the Draft Specification to the Project's primary mailing list. 79 |
  • The Maintainers will state in the distribution that the Draft Specification is a candidate for "Approved Specification" status, and will announce the start of a two-week review period (the "Review Period"). 80 |
  • During the Review Period, Participants may raise any issues regarding the Draft Specification. Such issues will be considered and resolved in the ordinary course. 81 |
  • The Maintainers may, in their discretion, extend the Review Period for a longer period of time, but will not shorten it to be less than the initial two-week period. 82 |
  • After the completion of the Review Period and upon the Approval of the Project (which may include the absence of, or resolution in the ordinary course of, any issues raised during the Review Period), the Draft Specification will be progressed to be an "Approved Specification". 83 | 84 | **4.3. Publication and Submission.** Upon the designation of a Draft Specification as an Approved Specification, the Maintainers will publish the Approved Specification in a manner agreed upon by the Project Participants (i.e., Project Participant only location, publicly available location, Project maintained website, Project member website, etc.). The publication of an Approved Specification in a publicly accessible manner must include the terms under which the Approved Specification is being made available. 85 | 86 | **4.4. Submissions to Standards Bodies.** No Draft Specification or Approved Specification may be submitted to another standards development organization without Project Approval. Upon reaching Approval, the Maintainers will coordinate the submission of the applicable Draft Specification or Approved Specification to another standards development organization. The Project Participants that developed that Draft Specification or Approved Specification agree to grant the copyright rights necessary to make those submissions. 87 | 88 | ## 5. Non-Confidential, Restricted Disclosure. 89 | 90 | Information disclosed in connection with any Working Group activity, including but not limited to meetings, Contributions, and submissions, is not confidential, regardless of any markings or statements to the contrary. Notwithstanding the foregoing, if the Working Group is collaborating via a private repository, the Participants will not make any public disclosures of that information contained in that private repository without the Approval of the Working Group. 91 | -------------------------------------------------------------------------------- /governance/Community_Specification_License_v1.md: -------------------------------------------------------------------------------- 1 | # Community Specification License 1.0 2 | 3 | **The Purpose of this License.** This License sets forth the terms under which 1) Contributor will participate in and contribute to the development of specifications, standards, best practices, guidelines, and other similar materials under this Working Group, and 2) how the materials developed under this License may be used. It is not intended for source code. Capitalized terms are defined in the License’s last section. 4 | 5 | **1. Copyright.** 6 | 7 | **1.1. Copyright License.** Contributor grants everyone a non-sublicensable, perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as expressly stated in this License) copyright license, without any obligation for accounting, to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute any materials it submits to the full extent of its copyright interest in those materials. Contributor also acknowledges that the Working Group may exercise copyright rights in the Specification, including the rights to submit the Specification to another standards organization. 8 | 9 | **1.2. Copyright Attribution.** As a condition, anyone exercising this copyright license must include attribution to the Working Group in any derivative work based on materials developed by the Working Group. That attribution must include, at minimum, the material’s name, version number, and source from where the materials were retrieved. Attribution is not required for implementations of the Specification. 10 | 11 | **2. Patents.** 12 | 13 | **2.1. Patent License.** 14 | 15 | **2.1.1. As a Result of Contributions.** 16 | 17 | **2.1.1.1. As a Result of Contributions to Draft Specifications.** Contributor grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as expressly stated in this License) license to its Necessary Claims in 1) Contributor’s Contributions and 2) to the Draft Specification that is within Scope as of the date of that Contribution, in both cases for Licensee’s Implementation of the Draft Specification, except for those patent claims excluded by Contributor under Section 3. 18 | 19 | **2.1.1.2. For Approved Specifications.** Contributor grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as expressly stated in this License) license to its Necessary Claims included the Approved Specification that are within Scope for Licensee’s Implementation of the Approved Specification, except for those patent claims excluded by Contributor under Section 3. 20 | 21 | **2.1.2. Patent Grant from Licensee.** Licensee grants each other Licensee a non-sublicensable, perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as expressly stated in this License) license to its Necessary Claims for its Implementation, except for those patent claims excluded under Section 3. 22 | 23 | **2.1.3. Licensee Acceptance.** The patent grants set forth in Section 2.1 extend only to Licensees that have indicated their agreement to this License as follows: 24 | 25 | **2.1.3.1. Source Code Distributions.** For distribution in source code, by including this License in the root directory of the source code with the Implementation; 26 | 27 | **2.1.3.2. Non-Source Code Distributions.** For distribution in any form other than source code, by including this License in the documentation, legal notices, via notice in the software, and/or other written materials provided with the Implementation; or 28 | 29 | **2.1.3.3. Via Notices.md.** By issuing pull request or commit to the Specification’s repository’s Notices.md file by the Implementer’s authorized representative, including the Implementer’s name, authorized individual and system identifier, and Specification version. 30 | 31 | **2.1.4. Defensive Termination.** If any Licensee files or maintains a claim in a court asserting that a Necessary Claim is infringed by an Implementation, any licenses granted under this License to the Licensee are immediately terminated unless 1) that claim is directly in response to a claim against Licensee regarding an Implementation, or 2) that claim was brought to enforce the terms of this License, including intervention in a third-party action by a Licensee. 32 | 33 | **2.1.5. Additional Conditions.** This License is not an assurance (i) that any of Contributor’s copyrights or issued patent claims cover an Implementation of the Specification or are enforceable or (ii) that an Implementation of the Specification would not infringe intellectual property rights of any third party. 34 | 35 | **2.2. Patent Licensing Commitment.** In addition to the rights granted in Section 2.1, Contributor agrees to grant everyone a no charge, royalty-free license on reasonable and non-discriminatory terms to Contributor’s Necessary Claims that are within Scope for: 36 | 1) Implementations of a Draft Specification, where such license applies only to those Necessary Claims infringed by implementing Contributor's Contribution(s) included in that Draft Specification, and 37 | 2) Implementations of the Approved Specification. 38 | 39 | This patent licensing commitment does not apply to those claims subject to Contributor’s Exclusion Notice under Section 3. 40 | 41 | **2.3. Effect of Withdrawal.** Contributor may withdraw from the Working Group by issuing a pull request or commit providing notice of withdrawal to the Working Group repository’s Notices.md file. All of Contributor’s existing commitments and obligations with respect to the Working Group up to the date of that withdrawal notice will remain in effect, but no new obligations will be incurred. 42 | 43 | **2.4. Binding Encumbrance.** This License is binding on any future owner, assignee, or party who has been given the right to enforce any Necessary Claims against third parties. 44 | 45 | **3. Patent Exclusion.** 46 | 47 | **3.1. As a Result of Contributions.** Contributor may exclude Necessary Claims from its licensing commitments incurred under Section 2.1.1 by issuing an Exclusion Notice within 45 days of the date of that Contribution. Contributor may not issue an Exclusion Notice for any material that has been included in a Draft Deliverable for more than 45 days prior to the date of that Contribution. 48 | 49 | **3.2. As a Result of a Draft Specification Becoming an Approved Specification.** Prior to the adoption of a Draft Specification as an Approved Specification, Contributor may exclude Necessary Claims from its licensing commitments under this Agreement by issuing an Exclusion Notice. Contributor may not issue an Exclusion Notice for patents that were eligible to have been excluded pursuant to Section 3.1. 50 | 51 | **4. Source Code License.** Any source code developed by the Working Group is solely subject the source code license included in the Working Group’s repository for that code. If no source code license is included, the source code will be subject to the MIT License. 52 | 53 | **5. No Other Rights.** Except as specifically set forth in this License, no other express or implied patent, trademark, copyright, or other rights are granted under this License, including by implication, waiver, or estoppel. 54 | 55 | **6. Antitrust Compliance.** Contributor acknowledge that it may compete with other participants in various lines of business and that it is therefore imperative that they and their respective representatives act in a manner that does not violate any applicable antitrust laws and regulations. This License does not restrict any Contributor from engaging in similar specification development projects. Each Contributor may design, develop, manufacture, acquire or market competitive deliverables, products, and services, and conduct its business, in whatever way it chooses. No Contributor is obligated to announce or market any products or services. Without limiting the generality of the foregoing, the Contributors agree not to have any discussion relating to any product pricing, methods or channels of product distribution, division of markets, allocation of customers or any other topic that should not be discussed among competitors under the auspices of the Working Group. 56 | 57 | **7. Non-Circumvention.** Contributor agrees that it will not intentionally take or willfully assist any third party to take any action for the purpose of circumventing any obligations under this License. 58 | 59 | **8. Representations, Warranties and Disclaimers.** 60 | 61 | **8.1. Representations, Warranties and Disclaimers.** Contributor and Licensee represents and warrants that 1) it is legally entitled to grant the rights set forth in this License and 2) it will not intentionally include any third party materials in any Contribution unless those materials are available under terms that do not conflict with this License. IN ALL OTHER RESPECTS ITS CONTRIBUTIONS ARE PROVIDED "AS IS." The entire risk as to implementing or otherwise using the Contribution or the Specification is assumed by the implementer and user. Except as stated herein, CONTRIBUTOR AND LICENSEE EXPRESSLY DISCLAIM ANY WARRANTIES (EXPRESS, IMPLIED, OR OTHERWISE), INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, CONDITIONS OF QUALITY, OR TITLE, RELATED TO THE CONTRIBUTION OR THE SPECIFICATION. IN NO EVENT WILL ANY PARTY BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Any obligations regarding the transfer, successors in interest, or assignment of Necessary Claims will be satisfied if Contributor or Licensee notifies the transferee or assignee of any patent that it knows contains Necessary Claims or necessary claims under this License. Nothing in this License requires Contributor to undertake a patent search. If Contributor is 1) employed by or acting on behalf of an employer, 2) is making a Contribution under the direction or control of a third party, or 3) is making the Contribution as a consultant, contractor, or under another similar relationship with a third party, Contributor represents that they have been authorized by that party to enter into this License on its behalf. 62 | 63 | **8.2. Distribution Disclaimer.** Any distributions of technical information to third parties must include a notice materially similar to the following: “THESE MATERIALS ARE PROVIDED “AS IS.” The Contributors and Licensees expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the materials. The entire risk as to implementing or otherwise using the materials is assumed by the implementer and user. IN NO EVENT WILL THE CONTRIBUTORS OR LICENSEES BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS DELIVERABLE OR ITS GOVERNING AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER MEMBER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.” 64 | 65 | **9. Definitions.** 66 | 67 | **9.1. Affiliate.** “Affiliate” means an entity that directly or indirectly Controls, is Controlled by, or is under common Control of that party. 68 | 69 | **9.2. Approved Specification.** “Approved Specification” means the final version and contents of any Draft Specification designated as an Approved Specification as set forth in the accompanying Governance.md file. 70 | 71 | **9.3. Contribution.** “Contribution” means any original work of authorship, including any modifications or additions to an existing work, that Contributor submits for inclusion in a Draft Specification, which is included in a Draft Specification or Approved Specification. 72 | 73 | **9.4. Contributor.** “Contributor” means any person or entity that has indicated its acceptance of the License 1) by making a Contribution to the Specification, or 2) by entering into the Community Specification Contributor License Agreement for the Specification. Contributor includes its Affiliates, assigns, agents, and successors in interest. 74 | 75 | **9.5. Control.** “Control” means direct or indirect control of more than 50% of the voting power to elect directors of that corporation, or for any other entity, the power to direct management of such entity. 76 | 77 | **9.6. Draft Specification.** “Draft Specification” means all versions of the material (except an Approved Specification) developed by this Working Group for the purpose of creating, commenting on, revising, updating, modifying, or adding to any document that is to be considered for inclusion in the Approved Specification. 78 | 79 | **9.7. Exclusion Notice.** “Exclusion Notice” means a written notice made by making a pull request or commit to the repository’s Notices.md file that identifies patents that Contributor is excluding from its patent licensing commitments under this License. The Exclusion Notice for issued patents and published applications must include the Draft Specification’s name, patent number(s) or title and application number(s), as the case may be, for each of the issued patent(s) or pending patent application(s) that the Contributor is excluding from the royalty-free licensing commitment set forth in this License. If an issued patent or pending patent application that may contain Necessary Claims is not set forth in the Exclusion Notice, those Necessary Claims shall continue to be subject to the licensing commitments under this License. The Exclusion Notice for unpublished patent applications must provide either: (i) the text of the filed application; or (ii) identification of the specific part(s) of the Draft Specification whose implementation makes the excluded claim a Necessary Claim. If (ii) is chosen, the effect of the exclusion will be limited to the identified part(s) of the Draft Specification. 80 | 81 | **9.8. Implementation.** “Implementation” means making, using, selling, offering for sale, importing or distributing any implementation of the Specification 1) only to the extent it implements the Specification and 2) so long as all required portions of the Specification are implemented. 82 | 83 | **9.9. License.** “License” means this Community Specification License. 84 | 85 | **9.10. Licensee.** “Licensee” means any person or entity that has indicated its acceptance of the License as set forth in Section 2.1.3. Licensee includes its Affiliates, assigns, agents, and successors in interest. 86 | 87 | **9.11. Necessary Claims.** “Necessary Claims” are those patent claims, if any, that a party owns or controls, including those claims later acquired, that are necessary to implement the required portions (including the required elements of optional portions) of the Specification that are described in detail and not merely referenced in the Specification. 88 | 89 | **9.12. Specification.** “Specification” means a Draft Specification or Approved Specification included in the Working Group’s repository subject to this License, and the version of the Specification implemented by the Licensee. 90 | 91 | **9.13. Scope.** “Scope” has the meaning as set forth in the accompanying Scope.md file included in this Specification’s repository. Changes to Scope do not apply retroactively. If no Scope is provided, each Contributor’s Necessary Claims are limited to that Contributor’s Contributions. 92 | 93 | **9.14. Working Group.** “Working Group” means this project to develop specifications, standards, best practices, guidelines, and other similar materials under this License. 94 | 95 | 96 | 97 | *The text of this Community Specification License is Copyright 2020 Joint Development Foundation and is licensed under the Creative Commons Attribution 4.0 International License available at https://creativecommons.org/licenses/by/4.0/.* 98 | 99 | SPDX-License-Identifier: CC-BY-4.0 100 | -------------------------------------------------------------------------------- /specification/framework.md: -------------------------------------------------------------------------------- 1 | secure package icon 2 | 3 | # Secure Supply Chain Consumption Framework (S2C2F) Simplified Requirements 4 | 5 | This document is provided "as-is." Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it. 6 | 7 | Some examples depicted herein are provided for illustration only and are fictitious. No real association or connection is intended or should be inferred. 8 | 9 | This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes. 10 | 11 | Licensed under [Community Specification License 1.0](https://github.com/CommunitySpecification/1.0) 12 | 13 | # Table of Contents 14 | 15 | - [Secure Supply Chain Consumption Framework (S2C2F) Simplified Requirements](#secure-supply-chain-consumption-framework-s2c2f-simplified-requirements) 16 | - [Table of Contents](#table-of-contents) 17 | - [Document Change Record](#document-change-record) 18 | - [Introduction](#introduction) 19 | - [About the Secure Supply Chain Consumption Framework](#about-the-secure-supply-chain-consumption-framework) 20 | - [What is the Secure Supply Chain Consumption Framework?](#what-is-the-secure-supply-chain-consumption-framework) 21 | - [Common OSS Supply Chain Threats](#common-oss-supply-chain-threats) 22 | - [Secure Supply Chain Consumption Framework Practices](#secure-supply-chain-consumption-framework-practices) 23 | - [Target Audience](#target-audience) 24 | - [Secure Supply Chain Consumption Framework Practices](#secure-supply-chain-consumption-framework-practices-1) 25 | - [_Practice 1: Ingest It_](#practice-1-ingest-it) 26 | - [_Practice 2: Scan It_](#practice-2-scan-it) 27 | - [_Practice 3: Inventory It_](#practice-3-inventory-it) 28 | - [_Practice 4: Update It_](#practice-4-update-it) 29 | - [_Practice 5: Audit It_](#practice-5-audit-it) 30 | - [_Practice 6: Enforce It_](#practice-6-enforce-it) 31 | - [_Practice 7: Rebuild It_](#practice-7-rebuild-it) 32 | - [_Practice 8: Fix It + Upstream_](#practice-8-fix-it--upstream) 33 | - [The Secure Supply Chain Consumption Framework Implementation Guide](#the-secure-supply-chain-consumption-framework-implementation-guide) 34 | - [Target Audience](#target-audience-1) 35 | - [Secure Supply Chain Consumption Framework Levels of Maturity](#secure-supply-chain-consumption-framework-levels-of-maturity) 36 | - [How to Assess Where Your Organization is in the Maturity Model?](#how-to-assess-where-your-organization-is-in-the-maturity-model) 37 | - [Secure Supply Chain Consumption Framework Requirements](#secure-supply-chain-consumption-framework-requirements) 38 | - [Secure Supply Chain Consumption Framework Tooling Availability](#secure-supply-chain-consumption-framework-tooling-availability) 39 | - [Implementing the Secure Supply Chain Consumption Framework by Level](#implementing-the-secure-supply-chain-consumption-framework-by-level) 40 | - [Conclusion](#conclusion) 41 | - [Appendix: Relation to SCITT](#appendix-relation-to-scitt) 42 | - [Appendix: Mapping Secure Supply Chain Consumption Framework Requirements to Other Specifications](#appendix-mapping-secure-supply-chain-consumption-framework-requirements-to-other-specifications) 43 | - [Appendix: References](#appendix-references) 44 | 45 | # Document Change Record 46 | 47 | | Date | Author | Version | Change Reference | 48 | | --- | --- | --- | --- | 49 | | 8/1/2022 | Adrian Diglio (Microsoft) | 1.0 | Initial release | 50 | | 10/19/2022 | Jasmine Wang (Microsoft) | 1.1 | Resolving issues [#5](https://github.com/microsoft/oss-ssc-framework/issues/5), [#6](https://github.com/microsoft/oss-ssc-framework/issues/6), [#7](https://github.com/microsoft/oss-ssc-framework/issues/7), [#9](https://github.com/microsoft/oss-ssc-framework/issues/9), [#1](https://github.com/ossf/s2c2f/issues/1). Replaced references to "Microsoft OSS SSC Framework" with "Secure Supply Chain Consumption Framework." | 51 | 52 | # Introduction 53 | 54 | The purpose of this paper is to illustrate the core concepts of the Secure Supply Chain Consumption Framework (S2C2F) to outline and define how to securely consume OSS dependencies, such as NuGet and NPM, into the developer's workflow. Open Source Software, as adopted from [The Free Software Definition](https://en.wikipedia.org/wiki/The_Free_Software_Definition), is software that ensures that the end users have freedom in using, studying, sharing and modifying that software. For more details about the definition of Open Source Software (OSS), see [The Open Source Definition](https://opensource.org/osd). This framework is applicable to OSS dependencies consumed into the developer's workflow, such as any source code, language package, module, component, container, library, or binary. This guide provides a dedicated framework to enhance any organization's OSS governance program to address supply chain threats specific to OSS consumption. 55 | 56 | OSS has become a critical aspect of any software supply chain. Across the software industry, developers are using and relying upon OSS components to expedite developer productivity and innovation. However, attackers are trying to abuse these package manager ecosystems to either distribute their own malicious components, or to compromise existing OSS components. 57 | 58 | This paper is split into two parts: a solution-agonistic set of practices and a maturity model-based implementation guide. The practices section should be utilized by individuals like Chief Information Security Officers (CISOs) and security, engineering, compliance/risk managers while the implementation guide should be utilized by software developers and other security practitioners. 59 | 60 | This paper presents: 61 | 62 | - An overview of the Secure Supply Chain Consumption Framework (S2C2F) Practices. 63 | - Common supply chain threats with examples and how the S2C2F can help. 64 | - An overview of the S2C2F Implementation Guide and Maturity Model. 65 | - A process for assessing your organization's maturity. 66 | - Detailed walkthrough of the S2C2F implementation requirements and tools. 67 | - A mapping of the S2C2F requirements to other specifications. 68 | 69 | The guidance provided in this paper is targeted toward organizations that do software development, that take a dependency on open source software, and that seek to improve the security of their software supply chain. 70 | 71 | # About the Secure Supply Chain Consumption Framework 72 | 73 | The Secure Supply Chain Consumption Framework (S2C2F) is a security assurance and risk reduction process that is focused on securing how developers consume open source software. As an initiative widely used across Microsoft since 2019, the S2C2F provides security guidance and tools throughout the developer inner-loop and outer-loop processes that have played a critical role in defending and preventing supply chain attacks through consumption of open source software. Using a threat-based risk-reduction approach, the goals of the S2C2F are to: 74 | 75 | 1. Provide a strong OSS governance program 76 | 2. Improve the Mean Time To Remediate (MTTR) for resolving known vulnerabilities in OSS 77 | 3. Prevent the consumption of compromised and malicious OSS packages 78 | 79 | The S2C2F (described later in this document) is modeled after three core concepts—_control all artifact inputs, continuous process improvement, and scale._ 80 | 81 |

    82 | framework diagram 83 |

    84 | 85 | - _Control All Artifact Inputs_: There are a myriad of ways that developers consume OSS today: git clone, wget, copy & pasted source, checking-in the binary into the repo, direct from public package managers, repackaging the OSS into a .zip, curl, apt-get, git submodule, and more. Securing the OSS supply chain in any organization is going to be near impossible if developer teams don't follow a uniform process for consuming OSS. Enforcing an effective secure OSS supply chain strategy necessitates standardizing your OSS consumption process across the various developer teams throughout your organization, so all developers consume OSS using governed workflows. 86 | - _Continuous Process Improvement_: To help guide organizations through continuous process improvement, we have organized the S2C2F into a maturity model. This helps organizations prioritize which requirements they should implement first. Since security risk is dynamic and new threats can emerge at any time, the S2C2F places heavy emphasis on understanding the new threats to the OSS supply chain and _requires_ regular evaluation of S2C2F controls and introduction of changes in response to new technology advancements or new threats. 87 | - _Scale_:The S2C2F tools were designed with scale in mind. Some organizations may attempt to secure their OSS ingestion process through a central internal registry that all developers within the organization are supposed to pull from. However, what if one developer chooses to pull straight from pypi.org or npmjs.com? Is there anything preventing them from doing so? A central internal registry also has the problem of requiring a team to manage the process and workflow, which is extra overhead. As such, the S2C2F tools were developed to secure how they consume OSS today at scale without requiring a central internal registry or central governance body. 88 | 89 | # What is the Secure Supply Chain Consumption Framework? 90 | 91 | The S2C2F Framework is a combination of requirements and tools for any organization to adopt. The Framework includes a capability maturity roadmap to help establish a secure OSS ingestion process to protect developers from OSS supply chain threats and to establish a strong governance program to manage your organization's use of OSS. 92 | 93 | # Common OSS Supply Chain Threats 94 | 95 | The S2C2F was designed based on known threats (i.e. tactics and techniques) used by adversaries to compromise OSS packages. The table below is a comprehensive compilation of OSS supply chain threats with links to real examples. It also identifies which S2C2F requirements mitigate the threat. To see the full list of requirements and their benefits, please see the [Secure Supply Chain Consumption Framework Requirements](#secure-supply-chain-consumption-framework-requirements) later in this document. 96 | 97 | For other sources of OSS threats, please see the following links: 98 | 99 | - [Threats, Risks, and Mitigations in the Open Source Ecosystem](https://github.com/ossf/wg-identifying-security-threats/blob/main/publications/threats-risks-mitigations/v1.1/Threats%2C%20Risks%2C%20and%20Mitigations%20in%20the%20Open%20Source%20Ecosystem%20-%20v1.1.pdf) 100 | - [Taxonomy of Attacks on Open-Source Software Supply Chains](https://arxiv.org/pdf/2204.04008.pdf) 101 | - [Software Supply Chain Threats](https://cloud.google.com/software-supply-chain-security/docs/attack-vectors) 102 | 103 | | **OSS Supply Chain Threat** | **Real Example** | **Mitigation via S2C2F Requirement** | **Mitigation via S2C2F Maturity Level** | 104 | | --- | --- | --- | --- | 105 | | Accidental vulnerabilities in OSS code or Containers that we inherit | [SaltStack](https://www.helpnetsecurity.com/2020/05/04/saltstack-salt-vulnerabilities/) | UPD-2
    UPD-3 | L2 | 106 | | Intentional vulnerabilities/backdoors added to an OSS code base | [colors v1.4.1](https://snyk.io/blog/open-source-npm-packages-colors-faker/) | SCA-5 | L3 | 107 | | A malicious actor compromises a distribution mirror of a package | [phpMyAdmin](https://arstechnica.com/information-technology/2012/09/questions-abound-as-malicious-phpmyadmin-backdoor-found-on-sourceforge-site/) | AUD-3 | L2 | 108 | | A malicious actor compromises a known good OSS component and adds malicious code into the repo | [ESLint incident](https://eslint.org/blog/2018/07/postmortem-for-malicious-package-publishes) | ING-3
    ENF-2
    SCA-4 | L3 | 109 | | A malicious actor creates a malicious package that is similar in name to a popular OSS component to trick developers into downloading it | [Typosquatting](https://www.securityweek.com/checkmarx-finds-threat-actor-fully-automating-npm-supply-chain-attacks) | AUD-1
    ENF-2
    SCA-4 | L3 | 110 | | A malicious actor compromises the compiler used by the OSS during build, adding backdoors | [CCleaner](https://blog.morphisec.com/morphisec-discovers-ccleaner-backdoor) | REB-1 | L4 | 111 | | Dependency confusion, package substitution attacks | [Dependency Confusion](https://www.bleepingcomputer.com/news/security/copycats-imitate-novel-supply-chain-attack-that-hit-tech-giants/) | ENF-1
    ENF-2 | L3 | 112 | | An OSS component adds new dependencies that are malicious | [Event-Stream incident](https://blog.npmjs.org/post/180565383195/details-about-the-event-stream-incident) | SCA-4
    ENF-2 | L3 | 113 | | The integrity of an OSS package is tampered after build, but before consumption | [How to tamper with Electron apps](https://github.com/jonmest/How-To-Tamper-With-Any-Electron-Application) | AUD-3
    AUD-4 | L4 | 114 | | Upstream source can be removed or taken down which can then break builds that depend on that OSS component or container | [left-pad](https://www.theregister.com/2016/03/23/npm_left_pad_chaos/) | ING-2
    ING-4 | L3 | 115 | | OSS components reach end-of-support/end-of-life and therefore don't patch vulnerabilities | [log4net](https://github.com/apache/logging-log4net/) and [CVE-2018-1285](https://nvd.nist.gov/vuln/detail/CVE-2018-1285) | SCA-3 | L2 | 116 | | Vulnerability not fixed by upstream maintainer in desired timeframe | [Prototype Pollution in Lodash](https://hackerone.com/reports/712065) | FIX-1 | L4 | 117 | | Bad actor compromises a package manager account (e.g. npm) with no change to the corresponding open source repo and uploads a new malicious version of a package | [Ua-parser-js](https://www.truesec.com/hub/blog/uaparser-js-npm-package-supply-chain-attack-impact-and-response) | AUD-1
    ENF-2
    SCA-4 | L3 | 118 | | Upstream source code re-licensed which may pose legal risk or prevent practical upgrade paths when licenses are incompatible | [node-ipc license change to DBAD](https://snyk.io/blog/peacenotwar-malicious-npm-node-ipc-package-vulnerability/) | SCA-2 | L1 | 119 | 120 | # Secure Supply Chain Consumption Framework Practices 121 | 122 | ## Target Audience 123 | 124 | This section is a solution-agonistic description of what should be implemented to secure your organization's OSS supply chain. The guidance is useful to compliance/risk managers, security managers, engineering managers, and Chief Information Security Officers (CISOs). 125 | 126 | ## Secure Supply Chain Consumption Framework Practices 127 | 128 | ### _Practice 1: Ingest It_ 129 | 130 | _I can ship any existing asset if external OSS sources are compromised or unavailable._ 131 | 132 | **Sample threat scenarios addressed by this job:** 133 | 134 | - The Docker Hub repository becomes compromised 135 | - A team might be targeted by a dependency confusion attack 136 | - Cloud service itself is unavailable and we need access to OSS assets to restore it 137 | - A package becomes permanently unavailable (i.e. left-pad is removed) 138 | 139 | The first step towards securing a software supply chain is ensuring you control all the artifact inputs. To satisfy this practice, there are two ingestion mechanisms: one for packaged artifacts and one for source code artifacts. 140 | 141 | For **packaged artifacts**, we require ingestion into an artifact stores – Linux package repositories, artifact stores, OCI registries – to fully support _upstream sources_, which transparently proxy from the artifact store to an external source and save a copy of everything used from that source. When using a mix of internal and external packaged artifacts, it is important to secure your package source file configuration to protect yourself from dependency confusion attacks ([CVE-2021-24105](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-24105)). 142 | 143 | For **source code artifacts**, we require mirroring external source code repositories to an internal location. Mirroring the source in addition to caching packages locally is also useful for many reasons: 144 | 145 | - Business Continuity and Disaster Recovery (BCDR) purposes, so that your organization can take ownership of code if a critical dependency is removed from the upstream 146 | - Enables proactive security scans to look for backdoors and zero-day vulnerabilities 147 | - Enables your organization to contribute fixes back upstream 148 | - Enables your organization to perform fixes if needed (in extreme circumstances) 149 | 150 | ### _Practice 2: Scan It_ 151 | 152 | _I know if any OSS artifact in my pipeline has vulnerabilities or malware._ 153 | 154 | **Sample threat scenarios addressed by this job:** 155 | 156 | - A team tries to use an OSS package with a known vulnerability 157 | - A team is already using an OSS package believed to be secure, but a new vulnerability in that package is later publicly disclosed 158 | - A team tries to use an OSS package that is known to steal bitcoins (i.e. the _event-stream_ scenario) 159 | - A team tries to use an OSS package with a backdoor 160 | 161 | Once we control all artifact inputs, we must scan all inputs to trust them. This trust is built using scanners that look for vulnerabilities, malware, malicious or anomalous behavior, extraneous code, end-of-life notices, and other known or previously undiscovered issues (i.e. zero-day vulnerabilities). 162 | 163 | ### _Practice 3: Inventory It_ 164 | 165 | _I know where OSS artifacts are deployed in production._ 166 | 167 | **Sample threat scenarios addressed by this job:** 168 | 169 | - A critical vulnerability is discovered in log4j, and the incident response team wants to know all the production services using log4j so they can appropriately staff and coordinate a response effort 170 | 171 | Once we have ingested and scanned the artifacts entering the software supply chain, we must ensure that we have an inventory where each artifact is used, by knowing in which services it is deployed and in which products it was released. This is required for incident response scenarios so that teams affected by a compromised package can be contacted so the appropriate actions can be taken to remove the affected package. 172 | 173 | ### _Practice 4: Update It_ 174 | 175 | _I can deploy updated external artifacts soon after an update becomes publicly available._ 176 | 177 | **Sample threat scenarios addressed by this job:** 178 | 179 | - A team is currently using three different vulnerable NuGet packages and upgrading each package will be a substantial amount of work for the team. The team chooses to start by upgrading the most widely deployed package. 180 | 181 | Once we have ingested, scanned, and inventoried where each artifact is used, we can enable developers to _fix_ issues with artifacts that have already been used by knowing the supply chain processes that released the product/service that needs the fix. 182 | 183 | Given the [SaltStack incident](https://www.helpnetsecurity.com/2020/05/04/saltstack-salt-vulnerabilities/), where a vulnerability was exploited within 3 days after announcement, every organization should aspire to patch vulnerable OSS packages in under 72 hours so that you patch faster than the adversary can operate. Using tools such as Dependabot to auto-generate Pull Requests (PRs) to update vulnerable OSS become critical capabilities for securing your supply chain. 184 | 185 | ### _Practice 5: Audit It_ 186 | 187 | _I can prove that every OSS artifact in production has a full chain-of-custody from the original artifact source and is consumed through the official supply chain._ 188 | 189 | **Sample threat scenarios addressed by this job:** 190 | 191 | - A well-meaning but misguided developer bypasses the official engineering pipeline to update an OSS package directly in a release; however, this new version contains a known vulnerability 192 | - An attacker with network access intentionally bypasses the official engineering pipeline to deploy malware to a service 193 | 194 | Now that we have ingested, scanned, inventoried, and provided the ability to update any artifact that has come through the software supply chain properly, you must have the ability within your organization to audit OSS consumption to see if it's coming through the standardized consumption tools (such as a package repository solution) established by your organization. 195 | 196 | ### _Practice 6: Enforce It_ 197 | 198 | _I can rely on secure and trusted OSS consumption within my organization._ 199 | 200 | **Sample threat scenarios addressed by this job:** 201 | 202 | - A developer bypasses the official engineering pipeline to consume an OSS package with a known vulnerability 203 | 204 | All OSS artifacts must be consumed from organization-defined approved sources and through the official OSS consumption channels. The next step is to enable enforcement of the supply chain so that all artifacts that in any way impact a production service/release must come through the full supply chain. An example of enforcement is to reroute DNS traffic or configure builds to break if they try to consume OSS from untrusted sources. 205 | 206 | ### _Practice 7: Rebuild It_ 207 | 208 | _I can rebuild from source code every OSS artifact I'm deploying._ 209 | 210 | **Sample threat scenarios addressed by this job:** 211 | 212 | - A team uses a malicious OSS package with a hidden backdoor (which could happen via traditional exploitation, political influence, blackmail or even threats of violence); as a result, the package's binaries do not match its source code. 213 | - An attacker gains access to build infrastructure and modifies generated binaries during the build process; as a result, illicit changes can be injected in a manner that is essentially invisible to its original authors and users alike. 214 | 215 | Until now, we have assumed that we took our inputs at the beginning of the supply chain _as-is_: as the package, container, or other delivery vehicle provided by the author. For key artifacts that are business-critical and for all artifacts that are inputs to High Value Assets, this assumption may not be sufficient. Hence, the next step to secure the supply chain is creating a chain of custody _from the original source code_ for every artifact used to create a production service/release. 216 | 217 | The baseline REBUILD IT requirement is to enable developers who have a critical dependence on certain OSS components to ingest source code (including discovering the source code, which is not always linked to the built artifact), rebuild it (possibly developing build scripts along the way, if they're not part of the source code), make any post-build modifications (e.g. signing), cache the rebuilt artifact, and advertise the internally-rebuilt version's existence to other teams in the organization. One other potential method is the use of multiple third parties to build and come to consensus on a 'correct' artifact (e.g. [Reproducible Builds](https://reproducible-builds.org/)). 218 | 219 | ### _Practice 8: Fix It + Upstream_ 220 | 221 | _I can privately patch, build, and deploy any external artifact within 3 days of harm notification and confidentially contribute the fix to the upstream maintainer._ 222 | 223 | **Sample threat scenarios addressed by this job:** 224 | 225 | - A team has taken a dependency on a package; the package is later discovered to have a critical vulnerability and the maintainer needs help/more time to fix the issue 226 | 227 | **When To Use This:** _This is intended to be used only in extreme scenarios and for temporary risk mitigation. It should only be used when the upstream maintainer is unable to provide a public fix within an acceptable time for your Organization's risk tolerance. The first action any organization should take is to confidentially report the vulnerability to the upstream maintainer AND help suggest a fix_. 228 | 229 | Once we can rebuild any artifact used in the software supply chain, the final step is to be able to privately fix it while confidentially disclosing the vulnerability to the upstream maintainer. Assuming that the team that ingested the source and rebuilt the artifact has allowed PRs to their forked copy of the source and set up CI builds appropriately, then anyone needing to private fix a component can use the normal PR workflow. The only additional work needed is the ability to distribute the private fix as widely within the organization as is needed. 230 | 231 | Related to the note below, the implemented fix should be confidentially contributed to the upstream maintainer to give back to the community. 232 | 233 | 234 | > **📝 Important Note** 235 | > 236 | > The Fix It + Upstream practice should not be perceived as being at odds with supporting communities and projects. If an organization chooses to take a dependency on open source, they should also find ways to give back to the community. Microsoft suggests a number of different ways to contribute: 237 | > - Financial support and participating in foundations or even individual projects: [GitHub Sponsors](https://github.com/sponsors), [OpenCollective](https://opencollective.com/become-a-sponsor), etc. 238 | > - Bounty programs (such as [SOS Rewards](https://sos.dev/)) and sharing best practices and tools with projects around security 239 | > - Being present and participating in key open source projects to share fixes or expertise 240 | > - See Microsoft's approach toward contributing to open source for more ideas [Microsoft's Open Source Program | Microsoft Open Source](https://opensource.microsoft.com/program#program-contributing) 241 | 242 | # The Secure Supply Chain Consumption Framework Implementation Guide 243 | 244 | ## Target Audience 245 | 246 | This section details a maturity model, which splits the practices in the previous section into 4 levels to achieve. There is also a list of tools your organization can implement to meet each security level in the framework. The guidance is useful to software developers, Continuous Integration and Continuous Development (CI/CD) administrators, and security practitioners. 247 | 248 | ## Secure Supply Chain Consumption Framework Levels of Maturity 249 | 250 | When the S2C2F was first developed, the strategy to secure our OSS supply chain was comprised of 8 practices. 251 | 252 |

    253 | list of practices 254 |

    255 | 256 | Since all 8 practices cannot be reasonably implemented at the same time, the following maturity model organizes the requirements from each of the 8 practices into 4 different levels. It allows an organization to make incremental progress from their existing set of security capabilities toward a more secure defensive posture. Additionally, the maturity model considers different threats and themes at each Maturity Level. 257 | 258 | Depending on the projects and their criteria, you may have a mix of framework levels implemented across projects. Additionally, Level 4 of the Maturity Model has a high estimated cost to implement compared to the risk/reward, and therefore should be considered as an aspirational north star vision for your organization. While it is difficult to implement Level 4 at scale across your organization, it is feasible to implement Level 4 on your most critical dependencies for your most critical projects. 259 | 260 |

    261 | list of practices 262 |

    263 | 264 | **Level 1** – Using a package caching solution, performing an OSS inventory, plus scanning and updating OSS represents the most common set of OSS security capabilities across the software industry today. 265 | 266 | **Level 2** – This maturity level focuses on shifting security further left by improving ingestion configuration security, decreasing MTTR to patch OSS vulnerabilities, and responding to incidents. The SaltStack vulnerability in 2020 showed us that adversaries were able to start exploiting CVE-2020-11651 within 3 days of it being announced. Even though a patch was available, organizations were not able to patch their systems fast enough. Thus, a key component of this level leverages automation to help developers keep their OSS hygiene healthy and updated. The ideal goal is for organizations to be able to patch faster than attackers can operate. 267 | 268 | **Level 3** – Proactively performing security analysis on your organization's most used OSS components and reducing risk to consume malicious packages are the themes of this maturity level. Scanning for malware in OSS before the package is downloaded is key toward preventing compromise. Then, to perform proactive security analysis of OSS requires that an organization can clone the source code to an internal location. Proactive security analysis helps you look for not-yet-discovered vulnerabilities, as well as identifying other threat categories such as detecting backdoors. 269 | 270 | **Level 4** – This level is considered aspirational in most cases as it is difficult to implement at scale. Rebuilding OSS on trusted build infrastructure is a defensive step to ensure that the OSS was not compromised at build time. Build time attacks are performed by the most sophisticated adversaries and may not occur very frequently. Thus, this level of maturity is what's required to defend against the most sophisticated adversaries. Additionally, rebuilding OSS has many subtle technical challenges such as what to name the package to prevent collisions with upstream? How to make sure all developers use the internal package instead of the external? Rebuilding also enables you to implement fixes (if needed) and deploy them at scale across your organization. 271 | 272 | ## How to Assess Where Your Organization is in the Maturity Model? 273 | 274 | Any maturity assessment should be done at the Organization level, so that it assesses multiple different OSS consumption processes from across different development teams. Some teams may have more mature processes than others, even within a single organization, so it's best to perform a company-wide assessment to determine OSS consumption practices across a diverse set of software development teams. The steps to perform a Maturity Assessment are below: 275 | 276 | 1. **Prepare for Assessment**. The first step is to understand the concepts behind the S2C2F so you feel comfortable engaging with developers and engineers to inquire about their existing tools, capabilities, and workflows. Next, identify a good sample size of diverse development teams from across the company to interview. 277 | 2. **Perform the Assessment**. This is where you assess the organization's degree of maturity in software developer OSS management, security, and consumption processes. Here are a set of example questions that you can ask: 278 | 1. What tools do you use to evaluate the criticality of an open source project? (e.g. [criticality score](https://github.com/ossf/criticality_score)) 279 | 2. What type of OSS do you consume in your project?(e.g. native C/C++, NuGet, PyPI, npm, etc.) 280 | 3. How are you consuming your OSS into your project? (e.g. Using a Package Cache solution such as Azure Artifacts, commands such as curl or git clone, checking in the OSS into the repo, etc.) 281 | 4. Where do you consume your OSS from? (e.g. NuGet.org, npmjs.com, pypi.org, etc.) 282 | 5. Do you use a mix of internal-only packages and external packages? (_This can make you susceptible to Dependency Confusion attacks_) 283 | 6. Does your package source file (e.g. nuget.config, pom.xml, pip.conf, etc.) contain multiple feeds in its configuration? (_This can make you susceptible to Dependency Confusion attacks_) 284 | 7. Do you do anything custom with how you consume OSS? (e.g. consuming private forks of projects, putting Golang components into a NuGet, etc.) 285 | 8. Does your project use package lock files? (e.g. [packages.lock.json](https://devblogs.microsoft.com/nuget/enable-repeatable-package-restores-using-a-lock-file/) for NuGet, [package-lock.json](https://docs.npmjs.com/cli/v7/configuring-npm/package-lock-json) for NPM, etc.) 286 | 9. How does your team inventory the use of OSS within your project? What tools are used? 287 | 10. How is your team made aware when a vulnerability exists in an OSS component? What tool is used? 288 | 11. At what point in the Software Development Lifecycle (SDLC) are OSS vulnerabilities surfaced? (e.g. after release? During build? As comments in PRs?) 289 | 12. How fast is OSS updated to address known vulnerabilities? (e.g. what is the Mean Time To Remediate) 290 | 13. Is updating OSS a manual or automated process? (e.g. using Dependabot) 291 | 14. Do you perform integration tests of how your software interfaces with the dependencies you have to validate that there are no breaking changes? 292 | 15. Do you scan OSS for malware prior to use? 293 | 16. Is your team able to block ingestion of a known-bad/malicious package? 294 | 17. Does your team clone open source code internally? 295 | 18. Does your team perform any sort of security reviews or scans of OSS before using? 296 | 19. Does your team contribute bug fixes back to the upstream OSS maintainer? 297 | 20. Do you rebuild any of the open source internally? 298 | 21. Do you have an incident response plan or playbook for reacting to an incident of consuming a malicious OSS component? 299 | 300 | 3. **Plan for Improvements.** Based on the interviews and answers you received from across your organization, you should be able to determine where you fall within the S2C2F Maturity Levels. It's possible that some teams may be ahead of others, so your focus should be on elevating all development teams to a specific Maturity Level. It's suggested that you accomplish this by driving standardization in both process and tooling across your software development teams for consuming OSS. 301 | 302 | The S2C2F categorizes its requirements into maturity levels to better help you prioritize investments in improvements. Additionally, the S2C2F recommends tooling with specific capabilities that mitigates against the known supply chain threats, but you probably should make business decisions about which set of tools are right for your business and your security goals. 303 | 304 | ## Secure Supply Chain Consumption Framework Requirements 305 | 306 | Below is a table of the requirements mapped to the 8 different practices. Two of the requirements have prerequisites identified that are outside the scope of this document to list as requirements. 307 | 308 | | **Practice** | **Requirement ID** | **Maturity Level** | **Requirement Title** | **Benefit** | 309 | | --- | --- | --- | --- | --- | 310 | | *Ingest it* | ING-1 | L1 | Use public package managers trusted by your organization (i.e. NuGet.org, npmjs.com, PyPi.org, etc.) | Your organization benefits from the inherent security provided by the package manager | 311 | | | ING-2 | L1 | Use an OSS binary repository manager solution (i.e. JFrog Artifactory, Azure Artifacts, etc.) | Caches a local copy of the OSS artifact and protects against [left-pad](https://www.theregister.com/2016/03/23/npm_left_pad_chaos/) incidents, enabling developers to continue to build even if upstream resources are unavailable | 312 | | | ING-3 | L3 | Have a Deny List capability to block known malicious OSS from being consumed | Prevents ingestion of known malware by blocking ingestion as soon as a critically vulnerable OSS component is identified, such as [colors v 1.4.1](https://security.snyk.io/vuln/SNYK-JS-COLORS-2331906), or if an OSS component is deemed malicious | 313 | | | ING-4 | L3 | Mirror a copy of all OSS source code to an internal location | Business Continuity and Disaster Recovery (BCDR) scenarios. Also enables proactive security scanning, fix it scenarios, and ability to rebuild OSS in a trusted build environment. | 314 | | *Scan It* | SCA-1 | L1 | Scan OSS for known vulnerabilities (i.e. CVEs, GitHub Advisories, etc.) | Able to update OSS to reduce risks | 315 | | | SCA-2 | L1 | Scan OSS for licenses | Ensure your organization remains in compliance with the software license | 316 | | | SCA-3 | L2 | Scan OSS to determine if its end-of-life | For security purposes, no organization should take a dependency on software that is no longer receiving updates | 317 | | | SCA-4 | L3 | Scan OSS for malware | Able to prevent ingestion of malware into your CI/CD environment | 318 | | | SCA-5 | L3 | Perform proactive security analysis of OSS | Identify zero-day vulnerabilities and other threat categories (i.e. backdoors) and responsibly disclose them to the upstream OSS project | 319 | | *Inventory It* | INV-1 | L1 | Maintain an automated inventory of all OSS used in development | Able to respond to incidents by knowing who is using what OSS where. This can also be accomplished by generating SBOMs for your software. | 320 | | | INV-2 | L2 | Have an OSS Incident Response Plan | This is a defined, repeatable process that enables your organization to quickly respond to reported OSS incidents | 321 | | *Update It* | UPD-1 | L1 | Update vulnerable OSS manually | Ability to resolve vulnerabilities | 322 | | | UPD-2 | L2 | Enable automated OSS updates | Improve MTTR to patch faster than adversaries can operate | 323 | | | UPD-3 | L2 | Display OSS vulnerabilities in developer contribution flow (i.e. Pull Requests).
    **Prerequisite**: Two-person PR reviews are enforced. | PR reviewer doesn't want to approve knowing that there are unaddressed vulnerabilities. | 324 | | *Audit It* | AUD-1 | L3 | Verify the provenance of your OSS | Able to track that a given OSS package traces back to a repo | 325 | | | AUD-2 | L2 | Audit that developers are consuming OSS through the approved ingestion method | Detect when developers consume OSS that isn't detected by your inventory or scan tools | 326 | | | AUD-3 | L2 | Validate integrity of the OSS that you consume into your build | Validate digital signature or hash match for each component | 327 | | | AUD-4 | L4 | Validate SBOMs of OSS that you consume into your build | Validate SBOM for provenance data, dependencies, and its digital signature for SBOM integrity | 328 | | *Enforce It* | ENF-1 | L2 | Securely configure your package source files (i.e. nuget.config, .npmrc, pip.conf, pom.xml, etc.) | By using NuGet package source mapping, or a single upstream feed, or using version pinning and lock files, you can protect yourself from race conditions and Dependency Confusion attacks | 329 | | | ENF-2 | L3 | Enforce usage of a curated OSS feed that enhances the trust of your OSS | Curated OSS feeds can be systems that scan OSS for malware, validate claims-metadata about the component, or systems that enforce an allow/deny list. Developers should not be allowed to consume OSS outside of the curated OSS feed | 330 | | *Rebuild It* | REB-1 | L4 | Rebuild the OSS in a trusted build environment, or validate that it is reproducibly built.
    **Prerequisite**: Sufficient build integrity measures are in place to establish a trusted build environment. | Mitigates against build-time attacks such as those seen on CCleaner and SolarWinds. Open Source developers could introduce scripts or code that aren't present in the repository into the build process or be building in a compromised environment. | 331 | | | REB-2 | L4 | Digitally sign the OSS you rebuild | Protect the integrity of the OSS you use. | 332 | | | REB-3 | L4 | Generate SBOMs for OSS that you rebuild | Captures the supply chain information for each package to enable you to better maintain your dependencies, auditability, and blast radius assessments | 333 | | | REB-4 | L4 | Digitally sign the SBOMs you produce | Ensures that consumers of your SBOMs can trust that the contents have not been tampered with | 334 | | *Fix It + Upstream* | FIX-1 | L4 | Implement a change in the code to address a zero-day vulnerability, rebuild, deploy to your organization, and confidentially contribute the fix to the upstream maintainer | To be used only in extreme circumstances when the risk is too great and to be used temporarily until the upstream maintainer issues a fix. | 335 | 336 | ## Secure Supply Chain Consumption Framework Tooling Availability 337 | 338 | **Tooling referenced within the S2C2F:** 339 | 340 | The implementation guidance and tooling in this document are a combination of paid and free tools across the industry. It is not a comprehensive list, but is included to provide examples of the type of solutions that help address the S2C2F requirements. Before jumping to any solutions, you should first understand the needs of your team/organization (such as what languages they use) and then assess multiple tool's capabilities from across the industry against your needs (such as ensuring the solution supports your top-used languages). 341 | 342 | 343 | ## Implementing the Secure Supply Chain Consumption Framework by Level 344 | 345 | Below is a table of the S2C2F requirements with example tools from across the industry or detailed instructions to implement them, sorted by maturity level. Many of the tools referenced below are freely available and are listed as such. Some tools that are individually listed are available through a bundled offering, such as [GitHub Advanced Security](https://docs.github.com/en/enterprise-server@3.4/get-started/learning-about-github/about-github-advanced-security) (GHAS). We aren't specifically endorsing any tool or service, as they each have different strengths or weaknesses. We recommend performing a thorough evaluation before deciding on a specific solution, including tools not referenced in this document. 346 | 347 | This table maps each Framework requirement to corresponding level and Framework practice. To see the full list of requirements and their benefits, please see the [Secure Supply Chain Consumption Framework Requirements](#Secure-Supply-Chain-Consumption-Framework-Requirements) earlier in this document. 348 | 349 | | **Practice name** | **L1** | **L2** | **L3** | **L4** | 350 | | --- | --- | --- | --- | --- | 351 | | **Ingest it** – save a local copy of artifacts and source code | [**ING-1**] Use package managers trusted by your organization
    [**ING-2**] Saving a local copy of the OSS artifact can be done by adopting an integrated package caching solution into your CI/CD infrastructure. All developers across your organization should standardize their consumption methods (using governed workflows) so that security policy can be enforced.

    **Free Tools:** [VCPKG for C/C++ OSS](https://github.com/Microsoft/vcpkg), [Pulp](https://pulpproject.org/)
    **Paid Tools:** [Artifacts](https://docs.microsoft.com/en-us/azure/devops/artifacts/start-using-azure-artifacts?view=azure-devops), [GitHub Packages](https://github.com/features/packages), [Azure Container Registry](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal), [PackageCloud](https://packagecloud.io/) | | [**ING-3**] Having a Deny List capability to block ingestion of vulnerable and malicious OSS components is a required defensive tool in incident response situations. Having an incident response team that can rapidly respond and update the deny list is also critical.

    **Paid Tool:** [Nexus Firewall](https://www.sonatype.com/products/firewall)

    [**ING-4**] Saving a local copy of the OSS source code

    **Free Tool:** [Duplicating a repo](https://docs.github.com/en/repositories/creating-and-managing-repositories/duplicating-a-repository) | | 352 | | **Scan It -** for vulnerabilities and malware | [**SCA-1**] It is required to scan for known vulnerabilities of your dependencies. Choosing a tool that gets vulnerabilities from more places than just CVEs is important to ensure that you are being informed from across multiple vulnerability sources.

    **Free Tool:** [GitHub Dependency Graph](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph)
    **Paid Tool:** [Snyk Open Source](https://snyk.io/product/open-source-security-management/), [Mend SCA](https://www.mend.io/sca/)

    [**SCA-2**] In addition to scanning for vulnerabilities, OSS should be scanned for software licenses.

    **Free Tool:** [ScanCode](https://github.com/nexB/scancode-toolkit) | [**SCA-3**] Scanning OSS to determine if it is end of life is crucial to ensure that you are not taking dependencies on OSS that is no longer updated.

    **Free Tool**: [OpenSSF Scorecard](https://github.com/ossf/scorecard) | [**SCA-4**] Given the rise in malicious OSS packages over the years, it is critical that OSS be scanned for malware prior to consumption.

    **Free Tool:** [Mend Supply Chain Defender](https://www.mend.io/mend-supply-chain-defender/), [OpenSSF Package Analysis](https://github.com/ossf/package-analysis)
    **Paid Tool:** [Nexus Firewall](https://www.sonatype.com/products/firewall), [Checkmarx SCA](https://checkmarx.com/resource/documents/en/34965-19105-preventing-supply-chain-attacks.html)

    [**SCA-5**] Without doing proactive security analysis to look for zero-day vulnerabilities, there would be entire threat categories that would go unmitigated, such as back-doors.

    **Free Tools:** [OSSGadget](https://github.com/microsoft/OSSGadget), [DevSkim](https://github.com/microsoft/DevSkim), [Attack Surface Analyzer](https://github.com/microsoft/AttackSurfaceAnalyzer), [Application Inspector](https://github.com/microsoft/ApplicationInspector), [CodeQL](https://codeql.github.com/), [OneFuzz](https://github.com/microsoft/onefuzz), [RESTler](https://github.com/microsoft/restler-fuzzer)
    **Paid Tool:** [Semgrep](https://semgrep.dev/) | | 353 | | **Inventory It -** OSS usage and deployment | [**INV-1**] Establishing an inventory of all developer OSS dependencies is critical when responding to an incident as an ingested malicious component would need to be deleted from the developer's desktop, the package caching solution, and the software/service that in production that consumed the package. Knowing which projects are using which OSS components and their versions across your enterprise is vital toward supporting rapid Incident Response.

    **Free Tool**: [Component Detection](https://github.com/microsoft/component-detection), [SBOM Generator for 1st party code](https://github.com/microsoft/sbom-tool), [Syft](https://github.com/anchore/syft), [Tern](https://github.com/tern-tools/tern), [SCA tooling](https://github.com/bureado/awesome-software-supply-chain-security#sca-and-sbom)
    **Paid Tool**: [Dependency Graph w/ Insights](https://docs.github.com/en/organizations/collaborating-with-groups-in-organizations/viewing-insights-for-your-organization#viewing-organization-dependency-insights) via [GHAS](https://docs.github.com/en/enterprise-server@3.4/get-started/learning-about-github/about-github-advanced-security) | [**INV-2**] Have an incident response plan that leverages your inventory and your deny list.

    **Free Tool:** [Incident Response Reference Guide](https://www.microsoft.com/en-us/download/details.aspx?id=103148) | | | 354 | | **Update It** | [**UPD-1**] Update vulnerable OSS manually. | [**UPD-2**] Automating patching OSS dependencies to address known vulnerabilities in a timely manner.

    **Free Tool**: [Dependabot](https://docs.github.com/en/code-security/dependabot/dependabot-alerts/about-dependabot-alerts), [Renovate](https://github.com/renovatebot/renovate)

    [**UPD-3**] Display OSS vulnerabilities in developer contribution flow (i.e. Pull Requests).

    **Paid Tool**: [Dependency Review](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review) via [GHAS](https://docs.github.com/en/enterprise-server@3.4/get-started/learning-about-github/about-github-advanced-security) | | | 355 | | **Audit It -** provenance and consumption workflows | | [**AUD-2**] Audit that developers are consuming OSS through the approved ingestion method. You can search for binaries that are checked into the repo.

    **Free Guide**: [Searching Code](https://docs.github.com/en/search-github/searching-on-github/searching-code)

    [**AUD-3**] Validate integrity of the OSS that you consume into your build.

    **Free Tool**: [NuGet CLI verify command](https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-verify), | [**AUD-1**] Verify the provenance of all OSS components to ensure they come through the official supply chain.

    **Paid Tool**: [Nexus Firewall](https://www.sonatype.com/products/firewall) | [**AUD-4**] Validate the SBOMs of OSS that you consume into your build.

    **Free Tool**: [Community Attestation Service](https://cas.codenotary.com/) | 356 | | **Enforce It -** OSS consumption meets security policy | | [**ENF-1**] Securing the configuration of how build pipelines consume OSS components.

    **Free Tools:** [NuGet Package Source Mapping](https://docs.microsoft.com/en-us/nuget/consume-packages/package-source-mapping), [Version pinning and Lock Files](https://azure.microsoft.com/mediahandler/files/resourcefiles/3-ways-to-mitigate-risk-using-private-package-feeds/3%20Ways%20to%20Mitigate%20Risk%20When%20Using%20Private%20Package%20Feeds%20-%20v1.0.pdf) | [**ENF-2**] Enforcing teams to only consume packages from a curated feed is the goal of this Framework.

    **Paid Tool**: [Nexus Firewall](https://www.sonatype.com/products/firewall) | | 357 | | **Rebuild It -** from source | | | | [**REB-1**] Rebuilding from source in a trusted build environment removes the risk of consuming a package that may have been victim to a CCleaner/SolarWinds style build-time attack.

    **Free Tools:** [Oryx](https://github.com/microsoft/oryx), [DotNet.ReproducibleBuilds](https://www.nuget.org/packages/DotNet.ReproducibleBuilds/), [Reproducible-Builds.org](https://reproducible-builds.org/), [OSS Reproducible](https://github.com/microsoft/OSSGadget/tree/main/src/oss-reproducible), [rebuilderd](https://github.com/kpcyrd/rebuilderd)

    [**REB-2**] Digitally sign the OSS you rebuild.

    **Tool:** [Notary](http://notaryproject.dev/), [SigStore](https://www.sigstore.dev/)

    [**REB-3**] If you are rebuilding the OSS yourself, you can automate Software Bill of Material (SBOM) generation at build time. This helps capture the supply chain information for each package to enable you to better maintain auditability and blast radius assessments.

    **Free Tool:** [SBOM Generator](https://github.com/microsoft/sbom-tool) on rebuilt 3rd party code

    [**REB-4**] Digitally sign the SBOMs you produce.

    **Free Tool:** [Notary](notaryproject.dev) | 358 | | **Fix It + Upstream** | | | | [**FIX-1**] In extreme cases, when a newly discovered vulnerability is so severe and you cannot wait for an upstream maintainer to implement a fix, you should implement a change in the code to address a zero-day vulnerability, rebuild, deploy to your organization, and confidentially contribute the fix to the upstream maintainer.

    **Free Tool**: [Follow confidential disclosure guidelines](https://docs.github.com/en/code-security/security-advisories/about-coordinated-disclosure-of-security-vulnerabilities) | 359 | 360 | # Conclusion 361 | 362 | The goal of this paper is to provide a _simple_ framework for the pragmatic inclusion of secure OSS consumption practices in the software development process. It outlines a series of discrete, non-proprietary security development activities that when joined with effective process automation and maturation levels represent the steps necessary for an organization to objectively claim compliance with the S2C2F as defined by the requirements identified in Level 3 of the S2C2F Maturity Model. 363 | 364 | # Appendix: Relation to SCITT 365 | The [Supply Chain Integrity, Transparency, and Trust](https://github.com/ietf-scitt) initiative, or SCITT, is a set of proposed industry standards for managing the compliance of goods and services across end-to-end supply chains. In the future, we expect teams to output "attestations of conformance" to the S2C2F requirements and store it in SCITT. The format of such attestations is to be determined. 366 | 367 | # Appendix: Mapping Secure Supply Chain Consumption Framework Requirements to Other Specifications 368 | 369 | There are many other security frameworks, guides, and controls. This section maps the S2C2F Framework requirements to other relevant specifications including NIST SP 800-161, NIST SP 800-218, CIS Software Supply Chain Security Guide, OWASP Software Component Verification Standard, SLSA, and the CNCF Software Supply Chain Best Practices. 370 | 371 | | **Requirement ID** | **Requirement Title** | **References** | 372 | | --- | --- | --- | 373 | | ING-1 | Use package managers trusted by your organization | **CIS SSC SG** : 3.1.5
    **OWASP SCVS:** 1.2
    **CNCF SSC:** Define and prioritize trusted package managers and repositories | 374 | | ING-2 | Use an OSS binary repository manager solution | **OWASP SCVS:** 4.1
    **CNCF SSC:** Define and prioritize trusted package managers and repositories | 375 | | ING-3 | Have a Deny List capability to block known malicious OSS from being consumed | | 376 | | ING-4 | Mirror a copy of all OSS source code to an internal location | **CNCF SSC:** Build libraries based upon source code | 377 | | SCA-1 | Scan OSS for known vulnerabilities | **SP800218** : RV.1.1
    **SP800161** : SA-10, SR-3, SR-4
    **CIS SSC SG** : 1.5.5, 3.2.2
    **OWASP SCVS:** 5.4
    **CNCF SSC:** Verify third party artefacts and open source libraries, Scan software for vulnerabilities, Run software composition analysis on ingested software | 378 | | SCA-2 | Scan OSS for licenses | **CIS SSC SG** : 1.5.6, 3.2.3
    **OWASP SCVS:** 5.12
    **CNCF SSC:** Scan software for license implications | 379 | | SCA-3 | Scan OSS to determine if its end-of-life | **SP800218** : PW.4.1
    **SP800161** : SA-4, SA-5, SA-8(3), SA-10(6), SR-3, SR-4
    **OWASP SCVS:** 5.8 | 380 | | SCA-4 | Scan OSS for malware | | 381 | | SCA-5 | Perform proactive security analysis of OSS | **SP800218** : PW.4.4
    **SP800161** : SA-4, SA-8, SA-9, SA-9(3), SR-3, SR-4, SR-4(3), SR-4(4)
    **OWASP SCVS:** 5.2, 5.3, | 382 | | INV-1 | Maintain an automated inventory of all OSS used in development | **OWASP SCVS:** 1.1, 1.3, 1.8, 5.11
    **CNCF SSC:** Track dependencies between open source components | 383 | | INV-2 | Have an OSS Incident Response Plan | **SP800218** : RV.2.2
    **SP800161** : SA-5, SA-8, SA-10, SA-11, SA-15(7) | 384 | | UPD-1 | Update vulnerable OSS manually | | 385 | | UPD-2 | Enable automated OSS updates | | 386 | | UPD-3 | Display OSS vulnerabilities in developer contribution flow (i.e. Pull Requests) | | 387 | | AUD-1 | Verify the provenance of your OSS | **CIS SSC SG** : 3.2.4
    **OWASP SCVS:** 1.10, 6.1
    **SLSA v1.0:** Producing artifacts – Distribute provenance | 388 | | AUD-2 | Audit that developers are consuming OSS through the approved ingestion method | **CIS SSC SG** : 4.3.3 | 389 | | AUD-3 | Validate integrity of the OSS that you consume into your build | **CIS SSC SG** : 2.4.3
    **OWASP SCVS:** 4.12
    **CNCF SSC:** Verify third party artefacts and open source libraries | 390 | | AUD-4 | Validate SBOMs of OSS that you consume into your build | **CNCF SSC:** Require SBOM from third party supplier | 391 | | ENF-1 | Securely configure your package source files (i.e. nuget.config, .npmrc, pip.conf, pom.xml, etc.) | **SP800218** : PO.5.2
    **CIS SSC SG** : 2.4.2, 3.1.7, 4.3.4, 4.4.2 | 392 | | ENF-2 | Enforce usage of a curated OSS feed that enhances the trust of your OSS | **SP800218** : PO.5.2
    **CIS SSC SG** : 2.4.3, 3.1.1, 3.1.3 | 393 | | REB-1 | Rebuild the OSS in a trusted build environment, or validate that it is reproducibly built | **CIS SSC SG** : 2.4.4 | 394 | | REB-2 | Digitally sign the OSS you rebuild | **SP800218** : PS.2.1 | 395 | | REB-3 | Generate SBOMs for OSS that you rebuild | **SP800218** : PS.3.2
    **SP800161** : SA-8, SR-3, SR-4
    **CIS SSC SG** : 2.4.5
    **OWASP SCVS:** 1.4, 1.7
    **CNCF SSC:** Generate an immutable SBOM of the code | 396 | | REB-4 | Digitally sign the SBOMs you produce | **CIS SSC SG** : 2.4.6 | 397 | | FIX-1 | Implement a change in the code to address a zero-day vulnerability, rebuild, deploy to your organization, and confidentially contribute the fix to the upstream maintainer | | 398 | 399 | # Appendix: References 400 | 401 | Here is a list of hyperlinks for documents mentioned within this paper: 402 | 403 | - [The Free Software Definition](https://en.wikipedia.org/wiki/The_Free_Software_Definition) 404 | - [The Open Source Definition](https://opensource.org/osd) 405 | - [Supply Chain Risk Management Practices for Federal Information Systems and Organizations (nist.gov)](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-161.pdf) 406 | - [Secure Software Development Framework (SSDF) Version 1.1: Recommendations for Mitigating the Risk of Software Vulnerabilities (nist.gov)](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-218.pdf) 407 | - [CIS WorkBench / Benchmarks (cisecurity.org)](https://workbench.cisecurity.org/benchmarks/7555) 408 | - [OWASP Software Component Verification Standard | OWASP Foundation](https://owasp.org/www-project-software-component-verification-standard/) 409 | - [SLSA • Supply-chain Levels for Software Artifacts](https://slsa.dev/) 410 | - [tag-security/CNCF\_SSCP\_v1.pdf at main · cncf/tag-security (github.com)](https://github.com/cncf/tag-security/blob/main/supply-chain-security/supply-chain-security-paper/CNCF_SSCP_v1.pdf) 411 | -------------------------------------------------------------------------------- /Minutes/2022 -23 Meeting Notes.md: -------------------------------------------------------------------------------- 1 | 2 |

    S2C2F SIG Meeting

    3 | 4 | 5 |

    “Meeting Notes” Document

    6 | 7 | 8 | Please use the [2024 Meeting Notes](https://docs.google.com/document/d/1oPfzqdPb1ey5eGggU2DOwfwY0vzEAa9kWm3FieiYT90/edit?usp=sharing) 9 | 10 | [Code of Conduct](https://github.com/ossf/s2c2f/blob/main/Code%20of%20Conduct.md) 11 | 12 | Note: For OpenSSF, see the Linux Foundation [Antitrust policy](https://www.linuxfoundation.org/antitrust-policy/) 13 | 14 | 15 | --- 16 | 17 | 18 | 19 | 20 | 24 | 28 | 30 | 38 | 39 | 40 | 42 | 50 | 54 | 56 | 57 |
    We keep all our docs in our GitHub Repo 21 |

    22 | (This includes published papers, assessments, and other goodies) 23 |

    Hangout in the OpenSSF Slack 25 |

    26 | Our channel is #s2c2f 27 |

    Join our mailing list https://lists.openssf.org/g/openssf-sig-s2c2f 29 | S2C2F SIG Meeting 31 |

    32 | We meet every 3rd Tuesday of the month 33 |

    34 | at 35 |

    36 | 12 pm PT| 3 pm ET| 8 pm GMT 37 |

    41 | 43 | 44 | 45 |

    46 | Join our call live on 47 |

    48 | LFX Zoom 49 |

    Missed a meeting? 51 |

    52 | No drama - YouTube TBD 53 |

    55 |
    58 | 59 | 60 | 61 | --- 62 | 63 |

    Document conventions & history

    64 | 65 | 66 | 67 | 68 | * Template for each meeting: [Link to copy meeting notes template](https://docs.google.com/document/d/1zJHmgJDguJy0lmLv89RwkiUwv_qucqe8cSyccnd6Ryk/edit#heading=h.xuyh3ba3raf4) 69 | * Facilitators: Adrian Diglio, Jay White 70 | * Notes are in reverse chronological order. Most recent meeting at the top. 71 | 72 | 73 | [Planned Meetings](#heading=h.q3539ohya47f) 74 | 75 | 76 | **Instructions on adding agenda items to planned meetings:** 77 | 78 | 79 | 80 | * If you’d like to present during a Monthly meeting: 81 | * Submit an agenda item to [S2C2F Issues](https://github.com/ossf/s2c2f/issues) 82 | * If you’d like to add a topic of discussion for working sessions (usually ~5mins intro discussion without screen share) 83 | * Add your topic to the agenda only to WORKING SESSIONS 84 | * Contact a facilitator to inform them of the agenda item, so they can provide feedback if necessary 85 | 86 | 87 | 88 | 91 | 93 | 94 | 95 | 97 | 106 | 107 | 108 | 110 | 117 | 118 | 119 | 121 | 128 | 129 | 130 | 132 | 139 | 140 | 141 | 143 | 150 | 151 | 152 | 154 | 167 | 168 | 169 | 171 | 180 | 181 | 182 | 184 | 193 | 194 | 195 | 197 |
  • RSA Presentation on S2C2Fon Strategy for S2C2F 198 | 199 |
  • 200 | 201 | 203 | 206 | 207 | 208 | 210 | 219 | 220 | 221 | 223 | 226 | 227 | 228 | 230 | 236 | 237 | 238 | 240 | 246 | 247 | 248 | 250 | 253 | 254 | 255 | 257 | 260 | 261 | 262 | 264 | 273 | 274 | 275 | 277 | 280 | 281 | 282 | 284 | 287 | 288 | 289 | 291 | 303 | 304 | 305 | 307 | 319 | 320 | 321 | 323 | 326 | 327 | 328 | 330 | 336 | 337 | 338 | 340 | 346 | 347 | 348 | 350 | 353 | 354 | 355 | 357 | 366 | 367 | 368 | 370 | 376 | 377 |
    89 | Date 90 | Details 92 |
    8/16/2022 - Community Meeting 96 | 98 |
      99 | 100 |
    • Introductions 101 | 102 |
    • Overview of the OSS SSC Framework 103 |
    • 104 |
    105 |
    8/29/2022 - Technical Meeting 109 | 111 |
      112 | 113 |
    • First start at a reference implementation for a GitHub project 114 |
    • 115 |
    116 |
    9/20/2022 - Community Meeting 120 | 122 |
      123 | 124 |
    • Review and triage Issues 125 |
    • 126 |
    127 |
    9/26/2022 - Technical Meeting 131 | 133 |
      134 | 135 |
    • GitLab recommended implementation 136 |
    • 137 |
    138 |
    10/18/2022 142 | 144 |
      145 | 146 |
    • Initial S2C2F SIG Meeting 147 |
    • 148 |
    149 |
    11/1/2022 153 | 155 |
      156 | 157 |
    • Blog post 158 | 159 |
    • Positioning with SLSA, FRSCA, GUAC, Supply Chain Mat. Mod., etc. 160 | 161 |
    • Specification meeting breakout 162 | 163 |
    • Repo updates 164 |
    • 165 |
    166 |
    11/15/2022 170 | 172 |
      173 | 174 |
    • Review of Upcoming Blog Post 175 | 176 |
    • Share update to reference implementation directory 177 |
    • 178 |
    179 |
    12/13/2022 183 | 185 |
      186 | 187 |
    • Review Strategy for S2C2F within the OpenSSF 188 | 189 |
    • Request for a S2C2F Goose icon that looks like R2D2 190 |
    • 191 |
    192 |
    1/31/2023 196 |
    2/14/2023 202 | 204 | - Looking for contributors! 205 |
    2/28/2023 209 | 211 | Sharing S2C2F was discussed in the opensourcesecurity podcast Episode 363 – Joylynn Kirui from Microsoft on DevSecOps – Open Source Security 212 |

    213 | 214 | - Inclusion of S2C2F in the SKF?? 215 |

    216 | 217 | - Inclusion of S2C2F OSS patching tools into the Security Tooling WG Guide (Sarah Evans) 218 |

    3/14/2023 222 | 224 | - Sharing draft SKF Course Outline for S2C2F 225 |
    3/28/2023 229 | 231 | - Approval to add a new category of tools to the Guide to Security Tools. Just need to submit PR 232 |

    233 | 234 | - RSA slides complete 235 |

    4/11/2023 239 | 241 | - Review Issues, discuss potential new requirement 242 |

    243 | 244 | - Explanatory report 245 |

    5/9/2023 249 | 251 | - Looking for contributors for other CI/CD environments! s2c2f/Reference_implementation at main · ossf/s2c2f · GitHub 252 |
    6/6/2023 256 | 258 | - Melba Lopez (IBM) provided feedback on the S2C2F guide 259 |
    6/20/2023 263 | 265 | - Crosswalk with SLSA · Issue #14 · ossf/s2c2f (github.com) 266 |

    267 | 268 | - Creation of an FAQ section in the repo? 269 |

    270 | 271 | - Best way to keep repo organized when adding addendums or supplemental materials (such as a C/C++ specific guide)? 272 |

    7/18/2023 276 | 278 | - Addressing Issues in the Repo 279 |
    8/1/2023 283 | 285 | - Upcoming Hackathon project to develop an OSCAL schema and possibly a tool 286 |
    8/15/2023 290 | 292 | - Address questions about SCA-3, UPD-3, and ENF-1 from Gergely 293 |

    294 | 295 | - OSCAL overview for Hackathon 296 |

    297 | 298 | - Review JFrog article on new attack types seen on NuGet, and assess against our list of mitigations today · Issue #17 · ossf/s2c2f (github.com) 299 |

    300 | 301 | - Popular NuGet Package “Moq” Silently Exfiltrates User Data to Cloud Service | by Jossef Harush Kadouri | checkmarx-security | Aug, 2023 | Medium 302 |

    8/29/2023 306 | 308 | - Upcoming Hackathon - Apache license 309 |

    310 | 311 | - FAQ updated per last conversation 312 |

    313 | 314 | - Review JFrog article on new attack types seen on NuGet, and assess against our list of mitigations today · Issue #17 · ossf/s2c2f (github.com) 315 |

    316 | 317 | - Popular NuGet Package “Moq” Silently Exfiltrates User Data to Cloud Service | by Jossef Harush Kadouri | checkmarx-security | Aug, 2023 | Medium 318 |

    9/12/2023 322 | 324 | - Update of S2C2F OSCAL hackathon progress 325 |
    9/26/2023 329 | 331 | - Review JFrog article on new attack types seen on NuGet, and assess against our list of mitigations today · Issue #17 · ossf/s2c2f (github.com) 332 |

    333 | 334 | - Popular NuGet Package “Moq” Silently Exfiltrates User Data to Cloud Service | by Jossef Harush Kadouri | checkmarx-security | Aug, 2023 | Medium 335 |

    10/10/2023 339 | 341 | - Security Toolbelt presentation 342 |

    343 | 344 | - Security Tooling working group, and tools for S2C2F 345 |

    10/24/2023 349 | 351 | - Anything to talk about S2C2F and MITRE ATT&CK? 352 |
    11/7/2023 356 | 358 | -Spreading awareness: Cloudsmith 359 |

    360 | 361 | -GitHub Issues 362 |

    363 | 364 | -From Sarah: S2C2F and MITRE ATT&CK 365 |

    12/5/2023 369 | 371 | -S2C2F PAS update 372 |

    373 | 374 | -webinar and CloudSmith blog 375 |

    378 | 379 | 380 |

    Proposed Topics for Future Meetings

    381 | 382 | 383 | Proposed Agenda Items (anyone can propose one here for small-ish items or to discuss with the group when to schedule, and we’ll add to meetings on-the-fly as time permits) 384 | 385 | [Link to copy meeting notes template (instead of scrolling to the bottom)](https://docs.google.com/document/d/1zJHmgJDguJy0lmLv89RwkiUwv_qucqe8cSyccnd6Ryk/edit#heading=h.xuyh3ba3raf4) 386 | 387 | Facilitator intro script (to be recited at the beginning of each meeting): 388 | 389 | _“ Hello everyone, just a reminder that this meeting is being recorded, and we hope to post to YouTube in the near future. Your participation in these meetings is an agreement to abide by the Code of Conduct, which can be found in the repo. I need at least one person to volunteer as scribe to ensure all actions and primary content discussed is recorded in the written notes and may be referred to later. Who is willing? Please remember to include your organization/company along with the update.”_ 390 | 391 |

    **2024-1-16 S2C2F SIG Meeting**

    392 | 393 | 394 |

    Attendance

    395 | 396 | 397 | 398 | 399 | 400 | 402 | 404 | 406 | 407 | 408 | 410 | 412 | 414 | 415 | 416 | 418 | 420 | 422 | 423 | 424 | 426 | 428 | 430 | 431 | 432 | 434 | 436 | 438 | 439 | 440 | 442 | 444 | 446 | 447 |
    Present? 401 | Name 403 | Organization 405 |
    409 | Jay White 411 | Microsoft 413 |
    417 | Adrian Diglio 419 | Microsoft 421 |
    425 | Victor Lu 427 | independent 429 |
    433 | Patricia Tarro 435 | Dell 437 |
    441 | Brian Crooks 443 | Datalytica 445 |
    448 | 449 | 450 | Regrets: 451 | 452 | 453 | 454 | * Amanda Martin (30+min late) 455 | 456 | Facilitator(s): 457 | 458 | 459 | 460 | * Adrian Diglio 461 | * Jay White 462 | 463 | Scribe(s): 464 | 465 | 466 | 467 | * 468 | * 469 | 470 | Want to contribute to the S2C2 Framework? 471 | 472 | 473 | 474 | * 475 | 476 | Agenda: 477 | 478 | 479 | 480 | * Charter to switch to [Project Status](https://docs.google.com/document/d/1tXOhQ0GJGnh2hbioOFgMs2Fkk-2d5VTNAM_fPJssvwY/edit) - Please check and comment to change blue highlight as that was filled in by Amanda and was just a guess, and knows it is not good. 481 | * Vote to Approve all yellow and white words 482 | * Vote to Approve with modifications via listed in comments of doc. This might (or might not) require another vote here at a later date after LF legal reviews the comments. 483 | * Vote to Deny the Charter 484 | * Other topics? 485 | 486 |

    **2024-01-02 S2C2F SIG Meeting**

    487 | 488 | 489 |

    Attendance

    490 | 491 | 492 | 493 | 494 | 495 | 497 | 499 | 501 | 502 | 503 | 505 | 507 | 509 | 510 | 511 | 513 | 515 | 517 | 518 | 519 | 521 | 523 | 525 | 526 | 527 | 529 | 531 | 533 | 534 | 535 | 537 | 539 | 541 | 542 | 543 | 545 | 547 | 549 | 550 |
    Present? 496 | Name 498 | Organization 500 |
    Yes 504 | Jay White 506 | Microsoft 508 |
    512 | Adrian Diglio 514 | Microsoft 516 |
    520 | Victor Lu 522 | independent 524 |
    Yes 528 | Patricia Tarro 530 | Dell 532 |
    536 | Brian Crooks 538 | Datalytica 540 |
    Yes 544 | Tom Bedford 546 | Bloomberg 548 |
    551 | 552 | 553 | Regrets: 554 | 555 | 556 | 557 | * 558 | 559 | Facilitator(s): 560 | 561 | 562 | 563 | * 564 | 565 | Scribe(s): 566 | 567 | 568 | 569 | * 570 | * 571 | 572 | Want to contribute to the S2C2 Framework? 573 | 574 | 575 | 576 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 577 | * Also looking for tool contributions to [ossf/S2C2F-attestation-schema-and-tool: Secure Supply Chain Consumption Framework (S2C2F) OSCAL Catalog and tool (github.com)](https://github.com/ossf/S2C2F-attestation-schema-and-tool) 578 | 579 | Agenda: 580 | 581 | 582 | 583 | * 584 | 585 |

    **2023-12-5 S2C2F SIG Meeting**

    586 | 587 | 588 |

    Attendance

    589 | 590 | 591 | 592 | 593 | 594 | 596 | 598 | 600 | 601 | 602 | 604 | 606 | 608 | 609 | 610 | 612 | 614 | 616 | 617 | 618 | 620 | 622 | 624 | 625 | 626 | 628 | 630 | 632 | 633 | 634 | 636 | 638 | 640 | 641 |
    Present? 595 | Name 597 | Organization 599 |
    X 603 | Jay White 605 | Microsoft 607 |
    x 611 | Adrian Diglio 613 | Microsoft 615 |
    X 619 | Victor Lu 621 | independent 623 |
    X 627 | Patricia Tarro 629 | Dell 631 |
    X 635 | Brian Crooks 637 | Datalytica 639 |
    642 | 643 | 644 | Regrets: 645 | 646 | 647 | 648 | * 649 | 650 | Facilitator(s): 651 | 652 | 653 | 654 | * Adrian Diglio 655 | * Jay White 656 | 657 | Scribe(s): 658 | 659 | 660 | 661 | * Adrian Diglio 662 | * 663 | 664 | Want to contribute to the S2C2 Framework? 665 | 666 | 667 | 668 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 669 | * Also looking for tool contributions to [ossf/S2C2F-attestation-schema-and-tool: Secure Supply Chain Consumption Framework (S2C2F) OSCAL Catalog and tool (github.com)](https://github.com/ossf/S2C2F-attestation-schema-and-tool) 670 | 671 | Agenda: 672 | 673 | 674 | 675 | * Update on S2C2F Publicly Available Specification (PAS) process 676 | * Looking into ISO Standardization 677 | * Potential paths: leveraging Linux Foundation’s JDF. Another avenue is through the Oasis Open 678 | * Doing an Explanatory Report to enter the PAS process 679 | * Feedback: For Europe, international standardization is important 680 | * Feedback: From Gov perspective, choosing software usually comes with requirements associated around meeting a certain Standard, so standardizing this is a great step forward 681 | * Others in the industry spreading S2C2F awareness [Mastering Open Source Security: Your Guide to S2C2F | Cloudsmith](https://cloudsmith.com/blog/mastering-open-source-security-your-guide-to-s2c2f) 682 | * NSA Enduring Security Framework (ESF) update [Enduring Security Framework ESF (nsa.gov)](https://www.nsa.gov/About/Cybersecurity-Collaboration-Center/Enduring-Security-Framework/) 683 | * Potential to publish S2C2F in spanish 684 | * Victor: speak Mandarin/Chinese, and willing to translate 685 | * CFP for Linux Foundation Open Source Summit, April 16-18 in Seattle, WA 686 | * [Call For Proposals (CFP) | LF Events (linuxfoundation.org)](https://events.linuxfoundation.org/open-source-summit-north-america/program/cfp/?utm_campaign=Open%20Source%20Summit%20North%20America%202024&utm_medium=email&_hsmi=285211074&_hsenc=p2ANqtz-8lTdPxZSK0GPAJ5eFnpxcmTzoaDspYmiZvCLlaxJ6_Y5THqMW-DU-zLM_UBlIiVcMzTsCFUd0m9jZbjxONLvhMFyv47g&utm_content=285211074&utm_source=hs_email) 687 | * Other topics? 688 | * OpenSSF Minimum Viable Product? Possible overlap with S2C2F? Ensure that S2C2F is included in this. Requires follow up with Dana Wang. This is a brand new effort. 689 | 690 |

    **2023-11-7 S2C2F SIG Meeting**

    691 | 692 | 693 |

    Attendance

    694 | 695 | 696 | 697 | 698 | 699 | 701 | 703 | 705 | 706 | 707 | 709 | 711 | 713 | 714 | 715 | 717 | 719 | 721 | 722 | 723 | 725 | 727 | 729 | 730 | 731 | 733 | 735 | 737 | 738 | 739 | 741 | 743 | 745 | 746 |
    Present? 700 | Name 702 | Organization 704 |
    X 708 | Jay White 710 | Microsoft 712 |
    X 716 | Jasmine Wang 718 | Microsoft 720 |
    X 724 | Tom Bedford 726 | Bloomberg LP 728 |
    x 732 | Adrian Diglio 734 | Microsoft 736 |
    X 740 | Sarah Evans 742 | Dell 744 |
    747 | 748 | 749 | Regrets: 750 | 751 | 752 | 753 | * 754 | 755 | Facilitator(s): 756 | 757 | 758 | 759 | * Adrian Diglio 760 | * Jay White 761 | 762 | Scribe(s): 763 | 764 | 765 | 766 | * Adrian Diglio 767 | * 768 | 769 | Want to contribute to the S2C2 Framework? 770 | 771 | 772 | 773 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 774 | * Also looking for tool contributions to [ossf/S2C2F-attestation-schema-and-tool: Secure Supply Chain Consumption Framework (S2C2F) OSCAL Catalog and tool (github.com)](https://github.com/ossf/S2C2F-attestation-schema-and-tool) 775 | 776 | Agenda: 777 | 778 | 779 | 780 | * Tom Bedford (Bloomberg) shared that they are evaluating many different frameworks for internal adoption, and S2C2F is one of the big ones 781 | * Mostly in Financial services industry, lot of regulations globally. Good record of managing financial regulations that come in quite frequently. Trend they are seeing is they are starting to be more technically versed. Software supply chain is what’s on their mind. 782 | * Digital Operations Resilience Act (DORA) in Europe (won’t be final till June 2024, and won’t be implemented till Jan 2025). [https://www.digital-operational-resilience-act.com](https://www.digital-operational-resilience-act.com) 783 | * Was concern that DORA might end up like CRA, but they did make this more clear. Originally CRA described all software as software (to include open source) and they are listening to feedback and making changes. 784 | * SSDF from NIST to provide products and services to Federal agencies 785 | * Goal: want to adopt frameworks that map to the regulations. 786 | * Sent out a Call to Action to various Risk Management teams of Framework’s they’ve observed of what would help their requirements. 787 | * SLSA helps provide measuring maturity 788 | * FFIEC have IT handbooks (one for architecture and operations, specifically for Financial Institutions). How to identify security issues, how to remediate them, etc. 789 | * Most granular, and least ambiguous, is S2C2F, which provides real life examples. Love the maturity levels, so they can establish a baseline and build on it over time. S2C2F has so far been one of the more useful frameworks that they can adopt at scale everywhere. 790 | * It helps describe things in a consistent way to non-technical folks, and has proven extremely useful. 791 | * “The existence of S2C2F has made what would have been a headache for my role, much simpler” 792 | * Spreading awareness: Cloudsmith [The Dangers Lurking in Open Source Software (cloudsmith.com)](https://cloudsmith.com/blog/the-dangers-lurking-in-open-source-software/) 793 | * Question: Anything to talk about S2C2F and MITRE ATT&CK? 794 | * Question is inspired in the Security Toolbelt working group. Can we look for tooling to close gaps. Wanted to align the Security Toolbelt with how Enterprise talk about security. Talked about OSPO mapping??? And NIST SP 800-53. As soon as you talk to people outside of product/application security, they are focused on network security, identity and access management, encryption, etc. 795 | * Can S2C2F map to a broader security topic? Is this an opportunity to help participate? 796 | * S2C2F is great at talking through all the different scenarios, but the missing piece is connecting it to a Security Persona. 797 | * Don’t need to map to MITRE ATT&CK. 798 | * Idea: Anyone that’s an expert in a specific area (e.g. Identity), they should lend their expertise toward securing Open Source (similar to how PyPI adopted MFA). Need a way to tell this story 799 | * How can we make security easier? Where are the gaps? And can we do it in a respectable way to Open Source maintainers. Can we incentivize things? 800 | * GitHub Issues [Issues · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues) 801 | * 802 | 803 |

    **2023-10-10 S2C2F SIG Meeting**

    804 | 805 | 806 |

    Attendance

    807 | 808 | 809 | 810 | 811 | 812 | 814 | 816 | 818 | 819 | 820 | 822 | 824 | 826 | 827 | 828 | 830 | 832 | 834 | 835 | 836 | 838 | 840 | 842 | 843 | 844 | 846 | 848 | 850 | 851 | 852 | 854 | 856 | 858 | 859 |
    Present? 813 | Name 815 | Organization 817 |
    X 821 | Jay White 823 | Microsoft 825 |
    x 829 | Mike Lieberman 831 | Kusari 833 |
    x 837 | Adrian Diglio 839 | Microsoft 841 |
    x 845 | Sarah Evans 847 | Dell 849 |
    X 853 | Patricia Tarro 855 | Dell 857 |
    860 | 861 | 862 | Regrets: 863 | 864 | 865 | 866 | * 867 | 868 | Facilitator(s): 869 | 870 | 871 | 872 | * Adrian Diglio 873 | * Jay White 874 | 875 | Scribe(s): 876 | 877 | 878 | 879 | * Adrian Diglio 880 | * 881 | 882 | Want to contribute to the S2C2 Framework? 883 | 884 | 885 | 886 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 887 | 888 | Agenda: 889 | 890 | 891 | 892 | * Security Toolbelt Presentation 893 | * [daniel:// stenberg://: "The next #curl release will sh…" - Mastodon](https://mastodon.social/@bagder/111167662713737288) CURL vulnerability announced 9 days before a patch is available. This violates the confidential disclosure procedures. 894 | * Also the [https://www.sonatype.com/hubfs/9th-Annual-SSSC-Report.pdf](https://www.sonatype.com/hubfs/9th-Annual-SSSC-Report.pdf) report came out, with 245,000 malicious OSS discovered last year. 895 | * Question: Anything to talk about S2C2F and MITRE ATT&CK? 896 | 897 |

    **2023-09-12 S2C2F SIG Meeting**

    898 | 899 | 900 |

    Attendance

    901 | 902 | 903 | 904 | 905 | 906 | 908 | 910 | 912 | 913 | 914 | 916 | 918 | 920 | 921 | 922 | 924 | 926 | 928 | 929 | 930 | 932 | 934 | 936 | 937 | 938 | 940 | 942 | 944 | 945 |
    Present? 907 | Name 909 | Organization 911 |
    X 915 | Jay White 917 | Microsoft 919 |
    x 923 | Mike Lieberman 925 | Kusari 927 |
    X 931 | Adrian Diglio 933 | Microsoft 935 |
    X 939 | Patricia Tarro 941 | Dell 943 |
    946 | 947 | 948 | Regrets: 949 | 950 | 951 | 952 | * 953 | 954 | Facilitator(s): 955 | 956 | 957 | 958 | * Adrian Diglio 959 | * Jay White 960 | 961 | Scribe(s): 962 | 963 | 964 | 965 | * Adrian Diglio 966 | 967 | Want to contribute to the S2C2 Framework? 968 | 969 | 970 | 971 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 972 | 973 | Agenda: 974 | 975 | 976 | 977 | * Completed creating S2C2F requirements as an OSCAL Catalog in JSON [S2C2F-attestation-schema-and-tool/oscal_json/s2c2f_oscal_catalog_1.6.json at main · ossf/S2C2F-attestation-schema-and-tool (github.com)](https://github.com/ossf/S2C2F-attestation-schema-and-tool/blob/main/oscal_json/s2c2f_oscal_catalog_1.6.json) 978 | * - [Review JFrog article on new attack types seen on NuGet, and assess against our list of mitigations today · Issue #17 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/17) 979 | * - [Popular NuGet Package “Moq” Silently Exfiltrates User Data to Cloud Service | by Jossef Harush Kadouri | checkmarx-security | Aug, 2023 | Medium](https://medium.com/checkmarx-security/popular-nuget-package-moq-silently-exfiltrates-user-data-to-cloud-service-d1888867406d) 980 | * [Lazarus Group Launches First Open Source Supply Chain Attacks Targeting Crypto Sector | by Yehuda Gelb | checkmarx-security | Aug, 2023 | Medium](https://medium.com/checkmarx-security/lazarus-group-launches-first-open-source-supply-chain-attacks-targeting-crypto-sector-cabc626e404e) 981 | 982 |

    **2023-09-12 S2C2F SIG Meeting**

    983 | 984 | 985 |

    Attendance

    986 | 987 | 988 | 989 | 990 | 991 | 993 | 995 | 997 | 998 | 999 | 1001 | 1003 | 1005 | 1006 | 1007 | 1009 | 1011 | 1013 | 1014 | 1015 | 1017 | 1019 | 1021 | 1022 | 1023 | 1025 | 1027 | 1029 | 1030 | 1031 | 1033 | 1035 | 1037 | 1038 | 1039 | 1041 | 1043 | 1045 | 1046 |
    Present? 992 | Name 994 | Organization 996 |
    x 1000 | Jay White 1002 | Microsoft 1004 |
    x 1008 | Mike Lieberman 1010 | Kusari 1012 |
    x 1016 | Tom Bedford 1018 | Bloomberg LP 1020 |
    x 1024 | Adrian Diglio 1026 | Microsoft 1028 |
    x 1032 | Nisha Kumar 1034 | Oracle 1036 |
    x 1040 | Andres Orbe 1042 | independent 1044 |
    1047 | 1048 | 1049 | Regrets: 1050 | 1051 | 1052 | 1053 | * 1054 | 1055 | Facilitator(s): 1056 | 1057 | 1058 | 1059 | * Adrian Diglio 1060 | * Jay White 1061 | 1062 | Scribe(s): 1063 | 1064 | 1065 | 1066 | * Adrian Diglio 1067 | * 1068 | 1069 | Want to contribute to the S2C2 Framework? 1070 | 1071 | 1072 | 1073 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1074 | 1075 | Agenda: 1076 | 1077 | 1078 | 1079 | * Hackathon update [https://github.com/ossf/S2C2F-attestation-schema-and-tool/tree/main](https://github.com/ossf/S2C2F-attestation-schema-and-tool/tree/main) 1080 | * MIT License used 1081 | * GUAC 1082 | 1083 |

    **2023-08-29 S2C2F SIG Meeting**

    1084 | 1085 | 1086 |

    Attendance

    1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1094 | 1096 | 1098 | 1099 | 1100 | 1102 | 1104 | 1106 | 1107 | 1108 | 1110 | 1112 | 1114 | 1115 | 1116 | 1118 | 1120 | 1122 | 1123 | 1124 | 1126 | 1128 | 1130 | 1131 | 1132 | 1134 | 1136 | 1138 | 1139 | 1140 | 1142 | 1144 | 1146 | 1147 | 1148 | 1150 | 1152 | 1154 | 1155 | 1156 | 1158 | 1160 | 1162 | 1163 | 1164 | 1166 | 1168 | 1170 | 1171 | 1172 | 1174 | 1176 | 1178 | 1179 | 1180 | 1182 | 1184 | 1186 | 1187 |
    Present? 1093 | Name 1095 | Organization 1097 |
    X 1101 | Jay White 1103 | Microsoft 1105 |
    X 1109 | Jasmine Wang 1111 | Microsoft 1113 |
    X 1117 | Mike Lieberman 1119 | Kusari 1121 |
    X 1125 | Tom Bedford 1127 | Bloomberg LP 1129 |
    X 1133 | Adrian Diglio 1135 | Microsoft 1137 |
    X 1141 | Sarah Evans 1143 | Dell 1145 |
    X 1149 | Victor Lu 1151 | independent 1153 |
    X 1157 | Tabatha DiDomenico 1159 | G-Research 1161 |
    X 1165 | Aeva Black 1167 | CISA 1169 |
    X 1173 | Eddie Knight 1175 | Sonatype 1177 |
    X 1181 | Colin Griffin 1183 | Krumware 1185 |
    1188 | 1189 | 1190 | Regrets: 1191 | 1192 | 1193 | 1194 | * 1195 | 1196 | Facilitator(s): 1197 | 1198 | 1199 | 1200 | * Adrian Diglio 1201 | * Jay White 1202 | 1203 | Scribe(s): 1204 | 1205 | 1206 | 1207 | * Adrian Diglio 1208 | * 1209 | 1210 | Want to contribute to the S2C2 Framework? 1211 | 1212 | 1213 | 1214 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1215 | 1216 | Agenda: 1217 | 1218 | 1219 | 1220 | * FAQ Updated: [New FAQs from 2023-08-15 by jasminewang0 · Pull Request #29 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/pull/29) 1221 | * Is there a standard way to flag that there are gaps in tooling, there are WIP in tooling, or that we are putting forward suggestions in tooling? 1222 | * More info about participating in Hackathon: [ossf/S2C2F-attestation-schema-and-tool: Secure Supply Chain Consumption Framework (S2C2F) attestation schema and tool (github.com)](https://github.com/ossf/S2C2F-attestation-schema-and-tool) repo has Apache license 1223 | * Issue re-review: [Review JFrog article on new attack types seen on NuGet, and assess against our list of mitigations today · Issue #17 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/17) 1224 | * The threat here is “maintainer-squatting” 1225 | * Discussed the sustainability of adding new requirements… it would cause lots of scope creep over time 1226 | * Suggest a way to establish trust helps with scope creep. Helps make security stronger for an enterprise. 1227 | * Not all were concerned about scope creep, but do believe that this is a high bar, and not many organizations will be able to meet it. Large development groups such as LF, Eclipse Foundation, and others meet that bar. 1228 | * Is there a way to call out “Nice to Haves” within the S2C2F? 1229 | * Maintainer squatting, or hypocrite commits. Can potentially correlate that identity across multiple projects/repos. 1230 | * github.com/mitre/hipcheck - helps with known-compromise key correlation 1231 | * When receiving packages from someone you trust, developers sometimes default to expecting that the package is free of malice and free of defects. 1232 | * Sometimes packages will swap hands, maintainers swap over. And when this happens, sometimes not a whole lot of due diligence is done, and the new maintainer may have malicious intent, and abuse their new role as maintainer of this well established package. What are the indicators that are important to look at that are indicators of explicit trust? 1233 | * What is my risk appetite? If I pull something from RedHat, I have more trust that RedHat won’t do anything malicious. 1234 | * What logic the package performs also lends to its criticality, and what level of scrutiny you put on packages. 1235 | * New threat review: [Popular NuGet Package “Moq” Silently Exfiltrates User Data to Cloud Service | by Jossef Harush Kadouri | checkmarx-security | Aug, 2023 | Medium](https://medium.com/checkmarx-security/popular-nuget-package-moq-silently-exfiltrates-user-data-to-cloud-service-d1888867406d) 1236 | 1237 |

    **2023-08-15 S2C2F SIG Meeting**

    1238 | 1239 | 1240 |

    Attendance

    1241 | 1242 | 1243 | 1244 | 1245 | 1246 | 1248 | 1250 | 1252 | 1253 | 1254 | 1256 | 1258 | 1260 | 1261 | 1262 | 1264 | 1266 | 1268 | 1269 | 1270 | 1272 | 1274 | 1276 | 1277 | 1278 | 1280 | 1282 | 1284 | 1285 | 1286 | 1288 | 1290 | 1292 | 1293 |
    Present? 1247 | Name 1249 | Organization 1251 |
    X 1255 | Jay White 1257 | Microsoft 1259 |
    X 1263 | Tom Bedford 1265 | Bloomberg LP 1267 |
    X 1271 | Adrian Diglio 1273 | Microsoft 1275 |
    X 1279 | Sarah Evans 1281 | Dell 1283 |
    X 1287 | Nisha Kumar 1289 | Oracle 1291 |
    1294 | 1295 | 1296 | Regrets: 1297 | 1298 | 1299 | 1300 | * 1301 | 1302 | Facilitator(s): 1303 | 1304 | 1305 | 1306 | * Adrian Diglio 1307 | * Jay White 1308 | 1309 | Scribe(s): 1310 | 1311 | 1312 | 1313 | * Adrian Diglio 1314 | * 1315 | 1316 | Want to contribute to the S2C2 Framework? 1317 | 1318 | 1319 | 1320 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1321 | 1322 | Agenda: 1323 | 1324 | 1325 | 1326 | * Questions about S2C2F controls from Gergely Csatari: 1327 | * Is [SCA-3](https://github.com/ossf/s2c2f/blob/main/specification/framework.md?plain=1#L315) only about the end of life of an open source project or it is also about the end of support of a branch in the project used by a product? 1328 | * [UPD-3](https://github.com/ossf/s2c2f/blob/main/specification/framework.md?plain=1#L322) is not really clear. Is the requirement to add a reference to the known vulnerabilities in the PR-s intending to fix these vulnerabilities? I do not think that the pre-requisite is valid. Even if there is only one review-er of the pr, they can have concerns about vulnerabilities. 1329 | * [ENF-1](https://github.com/ossf/s2c2f/blob/main/specification/framework.md?plain=1#L327) would need some more generic example, than a NuGet one. Is this about properly configuring the allowed repos into package managers? 1330 | * **ACTION ITEM**: Update FAQ with answers to these 3 questions, and try to update the requirement text appropriately to ensure readers understand the intent of the requirement 1331 | * Example Text from Sarah for UPD-3: Prevents vulnerabilities from being unknowingly introduced earlier in the DevOps lifecycle through education/hygiene and peer review when developers are introducing new dependencies at pull request time 1332 | * Example text from Sarah for ENF-1: By using either a single upstream feed, or a package source mapping (e.g. Nuget)…... 1333 | * 1334 | * Issue re-review: [Review JFrog article on new attack types seen on NuGet, and assess against our list of mitigations today · Issue #17 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/17) 1335 | * New threat review: [Popular NuGet Package “Moq” Silently Exfiltrates User Data to Cloud Service | by Jossef Harush Kadouri | checkmarx-security | Aug, 2023 | Medium](https://medium.com/checkmarx-security/popular-nuget-package-moq-silently-exfiltrates-user-data-to-cloud-service-d1888867406d) 1336 | 1337 |

    **2023-08-1 S2C2F SIG Meeting**

    1338 | 1339 | 1340 |

    Attendance

    1341 | 1342 | 1343 | 1344 | 1345 | 1346 | 1348 | 1350 | 1352 | 1353 | 1354 | 1356 | 1358 | 1360 | 1361 | 1362 | 1364 | 1366 | 1368 | 1369 | 1370 | 1372 | 1374 | 1376 | 1377 | 1378 | 1380 | 1382 | 1384 | 1385 | 1386 | 1388 | 1390 | 1392 | 1393 | 1394 | 1396 | 1398 | 1400 | 1401 | 1402 | 1404 | 1406 | 1408 | 1409 | 1410 | 1412 | 1414 | 1416 | 1417 |
    Present? 1347 | Name 1349 | Organization 1351 |
    X 1355 | Jay White 1357 | Microsoft 1359 |
    X 1363 | Jasmine Wang 1365 | Microsoft 1367 |
    X 1371 | David A. Wheeler 1373 | Linux Foundation 1375 |
    X 1379 | Mike Lieberman 1381 | Kusari 1383 |
    X 1387 | Tom Bedford 1389 | Bloomberg LP 1391 |
    X 1395 | Adrian Diglio 1397 | Microsoft 1399 |
    X 1403 | Sarah Evans 1405 | Dell 1407 |
    X 1411 | Victor Lu 1413 | independent 1415 |
    1418 | 1419 | 1420 | Regrets: 1421 | 1422 | 1423 | 1424 | * 1425 | 1426 | Facilitator(s): 1427 | 1428 | 1429 | 1430 | * Adrian Diglio 1431 | * Jasmine Wang 1432 | 1433 | Scribe(s): 1434 | 1435 | 1436 | 1437 | * Adrian Diglio 1438 | * 1439 | 1440 | Want to contribute to the S2C2 Framework? 1441 | 1442 | 1443 | 1444 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1445 | 1446 | Agenda: 1447 | 1448 | 1449 | 1450 | * New attendees 1451 | * Hackathon project Week of Sept 11 to develop a schema in OSCAL to generate an attestation file and potentially a tool that can output them 1452 | * This aligns with S2C2F Strategy [Strategy for S2C2F within the OpenSSF - Google Docs](https://docs.google.com/document/d/1Cp7TOVx7hWwxKGebWWPn4sGVIIbYSwR0-mWdwBO45po/edit#heading=h.y37mdlsrg0tq) of Driving Tooling Innovation, and would also help us achieve Adoption, by giving us a way to potentially measure adoption in the future. 1453 | * OSCAL format is from NIST and used by the Government 1454 | * Was first introduced to us by a community member prior to S2C2F being contributed to OpenSSF [OSCAL Support · Issue #8 · microsoft/oss-ssc-framework (github.com)](https://github.com/microsoft/oss-ssc-framework/issues/8) 1455 | * Will create a new OpenSSF repo, so this POC/prototype will be created within the OpenSSF, and will be OpenSSF IP from the start 1456 | * Discussion of building a tool as part of a Corporation and contributing it to the OpenSSF vs. having a OpenSSF repo (where’s the motivation to contribute?) 1457 | * Idea: Should have a place to recognize Corporations that have contributed 1458 | * This Hackathon is a great opportunity to go present to the End Users WG. Also get devs from GUAC to provide input into how GUAC could better ingest an S2C2F attestation 1459 | * Write a Guest Blog: Call for people that might be interested in this Hackathon. 1460 | * [Blog Guidelines - Open Source Security Foundation (openssf.org)](https://openssf.org/community/blog-guidelines/) 1461 | 1462 |

    **2023-07-18 S2C2F SIG Meeting**

    1463 | 1464 | 1465 |

    Attendance

    1466 | 1467 | 1468 | 1469 | 1470 | 1471 | 1473 | 1475 | 1477 | 1478 | 1479 | 1481 | 1483 | 1485 | 1486 | 1487 | 1489 | 1491 | 1493 | 1494 | 1495 | 1497 | 1499 | 1501 | 1502 | 1503 | 1505 | 1507 | 1509 | 1510 | 1511 | 1513 | 1515 | 1517 | 1518 | 1519 | 1521 | 1523 | 1525 | 1526 | 1527 | 1529 | 1531 | 1533 | 1534 | 1535 | 1537 | 1539 | 1541 | 1542 |
    Present? 1472 | Name 1474 | Organization 1476 |
    X 1480 | Jasmine Wang 1482 | Microsoft 1484 |
    X 1488 | David A. Wheeler 1490 | Linux Foundation 1492 |
    X 1496 | Melba-Lopez 1498 | IBM 1500 |
    X 1504 | Mike Lieberman 1506 | Kusari 1508 |
    X 1512 | Tom Bedford 1514 | Bloomberg LP 1516 |
    X 1520 | Adrian Diglio 1522 | Microsoft 1524 |
    X 1528 | Sarah Evans 1530 | Dell 1532 |
    X 1536 | Josh Clements 1538 | ADI 1540 |
    1543 | 1544 | 1545 | Regrets: 1546 | 1547 | 1548 | 1549 | * 1550 | 1551 | Facilitator(s): 1552 | 1553 | 1554 | 1555 | * Adrian Diglio 1556 | * Jasmine Wang 1557 | 1558 | Scribe(s): 1559 | 1560 | 1561 | 1562 | * Adrian Diglio 1563 | * 1564 | 1565 | Want to contribute to the S2C2 Framework? 1566 | 1567 | 1568 | 1569 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1570 | 1571 | Agenda: 1572 | 1573 | 1574 | 1575 | * Addressing repo Issues 1576 | * [What is the difference between SCA-5 and FIX-1? · Issue #12 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/12) 1577 | * [Crosswalk with SLSA · Issue #14 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/14) 1578 | * [Crosswalk with "Taxonomy of Attacks on OSS Supply Chains" by Ladisa et al · Issue #15 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/15) 1579 | * [The phpMyAdmin example seems misclassified. · Issue #16 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/16) 1580 | * [Review marked-up review from Melba Lopez · Issue #22 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/22) 1581 | * Review crosswalk of threats with Taxonomy 1582 | * Sterling Toolbelt (Security toolbox) - diagramming different OSS projects 1583 | * S2C2F is there under Secure Ingestion 1584 | * Going to do a threat model around OSS. End Users working group has already started this, but there’s an opportunity to plug into the threat model 1585 | * Across the OpenSSF, there are teams working on some sort of supply chain topic, and would be great for us to tie them together 1586 | * End of Life/ Out of Support - GitHub can mark a repo as Archived. But this doesn’t handle the case for 1.X is out of Support, but 1.9 isn’t 1587 | * TUF 1588 | * In-Toto - structured signed attestations. Could they produce an attestation that something is end-of-life 1589 | * GUAC would love to support S2C2F to ingest the metadata needed. 1590 | * Trying to come up with an overall merge-set of use cases across all OpenSSF, and come back to identify what projects are working 1591 | 1592 |

    **2023-06-20 S2C2F SIG Meeting**

    1593 | 1594 | 1595 |

    Attendance

    1596 | 1597 | 1598 | 1599 | 1600 | 1601 | 1603 | 1605 | 1607 | 1608 | 1609 | 1611 | 1613 | 1615 | 1616 | 1617 | 1619 | 1621 | 1623 | 1624 | 1625 | 1627 | 1629 | 1631 | 1632 | 1633 | 1635 | 1637 | 1639 | 1640 | 1641 | 1643 | 1645 | 1647 | 1648 | 1649 | 1651 | 1653 | 1655 | 1656 |
    Present? 1602 | Name 1604 | Organization 1606 |
    X 1610 | Jay White 1612 | Microsoft 1614 |
    X 1618 | Jasmine Wang 1620 | Microsoft 1622 |
    X 1626 | David A. Wheeler 1628 | Linux Foundation 1630 |
    X 1634 | Melba-Lopez 1636 | IBM 1638 |
    X 1642 | Tom Bedford 1644 | Bloomberg LP 1646 |
    X 1650 | Adrian Diglio 1652 | 1654 |
    1657 | 1658 | 1659 | Regrets: 1660 | 1661 | 1662 | 1663 | * 1664 | 1665 | Facilitator(s): 1666 | 1667 | 1668 | 1669 | * Adrian Diglio 1670 | * Jay White 1671 | 1672 | Scribe(s): 1673 | 1674 | 1675 | 1676 | * Adrian Diglio 1677 | * 1678 | 1679 | Want to contribute to the S2C2 Framework? 1680 | 1681 | 1682 | 1683 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1684 | 1685 | Agenda: 1686 | 1687 | 1688 | 1689 | * New Friends! 1690 | * Chris Hughes & Alan Friedmann included `7 pages about S2C2F in their book! 1691 | * [https://www.wiley.com/en-us/Software+Transparency%3A+Supply+Chain+Security+in+an+Era+of+a+Software+Driven+Society-p-9781394158492](https://www.wiley.com/en-us/Software+Transparency%3A+Supply+Chain+Security+in+an+Era+of+a+Software+Driven+Society-p-9781394158492) - in chapter 7, “existing and emerging commercial guidance” 1692 | * - [Crosswalk with SLSA · Issue #14 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues/14) 1693 | * Great touch-point of SLSA 1.0 requiring people to generate and distribute provenance, and S2C2F AUD-1 requirement asking to validate OSS provenance. 1694 | * Remarkably, the 2 overlaps in SLSA have been removed in SLSA verison 1.0. There appears to be no direct overlaps. We probably should look for ways to S2C2F to ingest information from SLSA. 1695 | * - Creation of an FAQ section in the repo? 1696 | * Problem is there are so many ways it can be done, we could spend forever analyzing the options 1697 | * If creating a simple markdown page that does the job, let’s stick with simple 1698 | * Proposed the “Simplest Possible Process” (SPP) to TAC: [https://github.com/ossf/tac/issues/176](https://github.com/ossf/tac/issues/176) 1699 | * Best Practices WG is using SPP, the question is whether or not we want to emulate that elsewhere. Example: [https://best.openssf.org/Concise-Guide-for-Developing-More-Secure-Software](https://best.openssf.org/Concise-Guide-for-Developing-More-Secure-Software) 1700 | * Example to replicate if we like it: [Concise Guide for Developing More Secure Software | OpenSSF Best Practices Working Group](https://best.openssf.org/Concise-Guide-for-Developing-More-Secure-Software) 1701 | * - Best way to keep repo organized when adding addendums or supplemental materials (such as a C/C++ specific guide)? 1702 | * Is there an example where you’re stuck in S2C2F with C/C++? 1703 | * pURLs could be used, but you have to use its options for general URLs 1704 | * There are probably nuances here. 1705 | * You could identify with a cryptographic hash 1706 | * They use VCPKG tool for consuming C/C++. They maintain a list of recipes on how to build those components. Every time you use the tool, it grabs the source you need & brings that into your system. Need to cache the software locally. With hjhjkVCPKG they could point to their internal clone. 1707 | * Left-pad was literally removed. Npm has changed their policy, after X days they won’t delete (unless legally required), which reduces the risks from “loss of package” 1708 | * Best to BOTH reduce likelihood of problems upstream AND for larger organizations to have local caches to prevent loss of access 1709 | * Melba presentation 1710 | * Issue: Tampered “after build but before consumption” - maybe there’s a small overlap with SLSA? There’s a small gap between SLSA & S2C2F, need to make sure there’s a “handshake” 1711 | * Fun Fact: S2C2F has a 6-7 page review in [Software Transparency: Supply Chain Security in an Era of a Software-Driven Society | Wiley](https://www.wiley.com/en-us/Software+Transparency%3A+Supply+Chain+Security+in+an+Era+of+a+Software+Driven+Society-p-9781394158492) 1712 | * *if we have time* S2C2F Feedback part 2 (melba) 1713 | 1714 |

    **2023-06-06 S2C2F SIG Meeting**

    1715 | 1716 | 1717 |

    Attendance

    1718 | 1719 | 1720 | _Include org_ 1721 | 1722 | 1723 | 1724 | * Adrian Diglio (Microsoft) 1725 | * Jay White (Microsoft) 1726 | * David A. Wheeler (Linux Foundation) 1727 | * Victor Lu (Independent) 1728 | * Yoad Fekete (BlindSpot Security) 1729 | * Melba Lopez (IBM) 1730 | 1731 | Regrets: 1732 | 1733 | 1734 | 1735 | * 1736 | 1737 | Facilitator(s): 1738 | 1739 | 1740 | 1741 | * Adrian Diglio 1742 | * Jay White 1743 | 1744 | Scribe(s): 1745 | 1746 | 1747 | 1748 | * David A. Wheeler (please help!) 1749 | 1750 | Want to contribute to the S2C2 Framework? 1751 | 1752 | 1753 | 1754 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1755 | 1756 | Agenda: 1757 | 1758 | 1759 | 1760 | * New Friends! 1761 | * Worked out binary patch issue [https://github.com/ossf/s2c2f/issues/13](https://github.com/ossf/s2c2f/issues/13) 1762 | * Problem: binary diffs might produce different result than “full” download. This risks mysterious failures/problems. 1763 | * One solution: Run a test to verify that you can reconstitute the full version. Not all clients need to do it, you just need to test it. 1764 | * Melba read out (Redlined everything) 1765 | * Need a “handshake” between SLSA & S2C2F 1766 | * What if package stops being available? 1767 | * Some repos have a policy of not allowing packages to be removed after some time (e.g., npm, to prevent a recurrence of the left-pad problem). Could prefer using repos with such policies, could encourage repo systems to implement such policies 1768 | * End-of-life: It’s important that this be *mechanically* detectable. Perhaps encourage projects to follow some process. E.g., GitHub has “archived” mechanism, I think GitLab does too. 1769 | * “2-line packages” are really common in npm/JavaScript.Around half of all npm packages have 0 or 1 function. That’s unique to npm, other ecosystems aren’t like that. 1770 | * What should we do with less common packages? 1771 | * When a security fix sent, project may reject or not reply 1772 | * Trying to fork it all seems inappropriate 1773 | * Need to find a better way 1774 | * It’ll take time to go through it all. 1775 | * “Don’t ignore security vulnerability fixes!!” - we see this often as a big problem. Often crickets or won’t implement it. 1776 | * One solution: Fork the non-responsive project. 1777 | * Another solution: Get major users (dependors) to switch 1778 | * Vulnerability not fixed by upstream maintainer in desired timeframe 1779 | * Admin of repo have huge number of powers. You can uncheck box to change processes, etc. 1780 | * How do you check if admins are making process exceptions? 1781 | * Can’t catch without logging. 1782 | * Issue: is admin trusted or not? What’s the trust model? Untrusted user vs. subverted account vs. trusted 1783 | * David: Let’s separate “subverted admin account” from “admin account user does bad things”. The former (subverted account) has a VERY strong countermeasure: MFAs. Let’s require MFA for trusted situations, that’s the most likely problem. The latter is a challenge to deal with, we don’t have to solve that today (indeed, maybe you just shouldn’t use that project in that case). 1784 | * Adnan: We might want to consider insider threats outside of scope of this model, those are hard, perhaps should be their own thing. 1785 | * How do we estimate trust? 1786 | * In many ways, “what do others say about it” and “past behavior”. If it’s done well & nothing significant has changed, it’s probably lower risk than others. 1787 | * Microsoft doesn’t have a centralized repo where it gets all OSS, and there’s no org that identifies “pre-approved” OSS. We do recommend that they store artifacts, e.g., in JFrog registration, to mitigate against left-pad attacks. 1788 | * You can clone to internal 1789 | * C/C++ registries: VCPKG & Conan. You can clone to internal location 1790 | * There’s a big advantage of having a copy, stays available. 1791 | * Note: We want this to be a universal document! C, C++, others. Local repo or not. Etc, 1792 | * Can you share this redlined version? 1793 | * Will upload PDF as-is to Slack. 1794 | * David: I’ll create an issue that adds this PDF, so we can continue walking. Issue created here: https://github.com/ossf/s2c2f/issues/22 1795 | 1796 |

    **2023-05-23 S2C2F SIG Meeting**

    1797 | 1798 | 1799 |

    Attendance

    1800 | 1801 | 1802 | _Include org_ 1803 | 1804 | 1805 | 1806 | * Jay White (Microsoft) 1807 | * Mike Lieberman (Kusari) 1808 | * David A. Wheeler (Linux Foundation) 1809 | * Tom Bedford (Bloomberg LP) - this seems to speak to our needs for a consumer-oriented framework 1810 | * Victor Lu (Independent) 1811 | 1812 | Regrets: 1813 | 1814 | 1815 | 1816 | * Adrian (at Microsoft Build conference) 1817 | 1818 | Facilitator(s): 1819 | 1820 | 1821 | 1822 | * Adrian Diglio 1823 | * Jay White 1824 | 1825 | Scribe(s): 1826 | 1827 | 1828 | 1829 | * David A. Wheeler (please help!) 1830 | 1831 | Want to contribute to the S2C2 Framework? 1832 | 1833 | 1834 | 1835 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1836 | 1837 | Agenda: 1838 | 1839 | 1840 | 1841 | * New Friends! 1842 | * Victor Lu 1843 | * Tom Bedford 1844 | * Post OSSNA summary 1845 | * We received some questions about the threat matrix. Are they highlighted enough? 1846 | * Had questions about S2C2F & SLSA. “S2C2F is a security framework - if that’s not clear, need to make it clear” 1847 | * David: Now that we have SLSA 1.0, how can we do the crosswalk to ensure no conflict (none expected) & address unnecessary differences. Perhaps where there’s overlap, make in clear that “this S2C2F requirement Y is met by SLSA 1.0 requirement X” or something like that. This is being tracked by issue 14: [https://github.com/ossf/s2c2f/issues/14](https://github.com/ossf/s2c2f/issues/14) 1848 | * In the future, do we want to discuss other issues, e.g., [https://github.com/ossf/s2c2f/issues](https://github.com/ossf/s2c2f/issues) 1849 | * Issue 16 - [https://github.com/ossf/s2c2f/issues/16](https://github.com/ossf/s2c2f/issues/16) - commenter is concerned the mitigation doesn’t seem to counter the claimed problem 1850 | 1851 |

    **2023-05-09 S2C2F SIG Meeting**

    1852 | 1853 | 1854 |

    Attendance

    1855 | 1856 | 1857 | _Include org_ 1858 | 1859 | 1860 | 1861 | * Adrian Diglio (Microsoft) 1862 | * Jay White (Microsoft) 1863 | * Jasmine Wang (Microsoft) 1864 | * 1865 | 1866 | Regrets: 1867 | 1868 | 1869 | 1870 | * 1871 | 1872 | Facilitator(s): 1873 | 1874 | 1875 | 1876 | * Adrian Diglio 1877 | * Jay White 1878 | 1879 | Scribe(s): 1880 | 1881 | 1882 | 1883 | * Adrian Diglio 1884 | * 1885 | 1886 | Want to contribute to the S2C2 Framework? 1887 | 1888 | 1889 | 1890 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1891 | 1892 | Agenda: 1893 | 1894 | 1895 | 1896 | * Post RSA summary 1897 | * Slides: 1898 | * Submitted PR to Guide to Security Tools 1899 | * [Update guide.md by adriandiglio · Pull Request #52 · ossf/wg-security-tooling (github.com)](https://github.com/ossf/wg-security-tooling/pull/52) 1900 | * Submitted PR to add new requirement to address author impersonation [Attackers are starting to target .NET developers with malicious-code NuGet packages | JFrog](https://jfrog.com/blog/attackers-are-starting-to-target-net-developers-with-malicious-code-nuget-packages/) 1901 | * [Update framework.md by adriandiglio · Pull Request #20 · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/pull/20) 1902 | 1903 |

    **2023-04-11 S2C2F SIG Meeting**

    1904 | 1905 | 1906 |

    Attendance

    1907 | 1908 | 1909 | _Include org_ 1910 | 1911 | 1912 | 1913 | * Jay White (Microsoft) 1914 | * David A. Wheeler (Linux Foundation) 1915 | * Jasmine Wang (Microsoft) 1916 | * Adrian Diglio (Microsoft) 1917 | 1918 | Regrets: 1919 | 1920 | 1921 | 1922 | * 1923 | 1924 | Facilitator(s): 1925 | 1926 | 1927 | 1928 | * Adrian Diglio 1929 | * Jay White 1930 | 1931 | Scribe(s): 1932 | 1933 | 1934 | 1935 | * Adrian Diglio 1936 | * 1937 | 1938 | Want to contribute to the S2C2 Framework? 1939 | 1940 | 1941 | 1942 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 1943 | 1944 | Agenda: 1945 | 1946 | 1947 | 1948 | * Positioning meeting this morning - things are wrapping up with first sprint of SLSA 1949 | * FYI: SLSA version 1.0 is about to be released (expected April 19, build track only levels 1-3). This will make it easier to coordinate SLSA & S2C2F, since we’ll have a 1.0 version to compare to. 1950 | * Have agreed on a shift to S2C2F, so those people will shift over to S2C2F for a bit to get this moving along. 1951 | * S2C2F Explanatory Report, ISO submission 1952 | * In full swing. Will have some working meetings. 1953 | * We have a very early draft, rough, thanks to Jasmine for getting that started. Let’s slide it over to a Google doc. 1954 | * [S2C2F Explanatory Report ISO Submission - Google Docs](https://docs.google.com/document/d/10zaReabMvX_Zw90hOW2TIXrOGEkBvLzniPAT3VUalcg/edit) 1955 | * RSA - very close 1956 | * Canceling S2C2F SIG meeting on April 25th 1957 | * Also Microsoft Build in May - sharing S2C2F 1958 | * Also, Open Summit North America 1959 | * [Issues · ossf/s2c2f (github.com)](https://github.com/ossf/s2c2f/issues) 1960 | * JFrog: [https://github.com/ossf/s2c2f/issues/17](https://github.com/ossf/s2c2f/issues/17) , JFrog article on new attack types seen on NuGet, and assess against our list of mitigations today 1961 | * After discussion, this should be a SEPARATE requirement (at least for audit). Using “and” in a requirement is generally bad practice per Adrian & David A. Wheeler - if it’s important, it’s easy to forget checking the “and” 1962 | * Counter name confusion of origin (author and/or organization) 1963 | * Could be an “audit” entry check. 1964 | * How do we do that check? 1965 | * Start with the “safe” version, then verify that the “others” are the same. E.g., go to the website of the author/organization first where you know it’s the right one. Otherwise the “others” can fool people by looking the same. 1966 | * How do we scale? David: I think this is one-short per added dependency. 1967 | * 1968 | * Also: Training stuff - governing board is reviewing training proposal funding (Stream 1 of mobilization plan) - not clear if that has anything S2C2F specific, but related 1969 | * S2C2F training 1970 | * Can embed in existing material (SKF/Foundations) or create own. If it’s small, consider embedding in existing. 1971 | * LF Training & Certification can do things, you don’t *have* to use them but it often helps. 1972 | * Training probably after formal release 1973 | * Rough draft outline for putting together a S2C2F training course on SKF https://docs.google.com/document/d/1TftXxcDenkTeAdvBbCgTNF3NXP0VNyAT0c3vG8JZ7qU/edit#heading=h.v71dl8nz8wi4 1974 | * 1975 | 1976 |

    **2023-03-28 S2C2F SIG Meeting**

    1977 | 1978 | 1979 |

    Attendance

    1980 | 1981 | 1982 | _Include org_ 1983 | 1984 | 1985 | 1986 | * Jay White (Microsoft) 1987 | 1988 | Regrets: 1989 | 1990 | 1991 | 1992 | * 1993 | 1994 | Facilitator(s): 1995 | 1996 | 1997 | 1998 | * Adrian Diglio 1999 | * Jay White 2000 | 2001 | Scribe(s): 2002 | 2003 | 2004 | 2005 | * Adrian Diglio 2006 | * 2007 | 2008 | Want to contribute to the S2C2 Framework? 2009 | 2010 | 2011 | 2012 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2013 | 2014 | Agenda: 2015 | 2016 | 2017 | 2018 | * Explanatory Report 2019 | * RSA 2020 | * OS Summit 2021 | 2022 |

    **2023-03-28 S2C2F SIG Meeting**

    2023 | 2024 | 2025 |

    Attendance

    2026 | 2027 | 2028 | _Include org_ 2029 | 2030 | 2031 | 2032 | * Adrian Diglio (Microsoft) 2033 | * Jay White (Microsoft) 2034 | * Tim Pepper (VMware) 2035 | * John Kjell (VMware) 2036 | * Sanket Naik (Palosade) 2037 | * Jasmine Wang (Microsoft) 2038 | 2039 | Regrets: 2040 | 2041 | 2042 | 2043 | * 2044 | 2045 | Facilitator(s): 2046 | 2047 | 2048 | 2049 | * Adrian Diglio 2050 | * Jay White 2051 | 2052 | Scribe(s): 2053 | 2054 | 2055 | 2056 | * Adrian Diglio 2057 | 2058 | Want to contribute to the S2C2 Framework? 2059 | 2060 | 2061 | 2062 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2063 | 2064 | Agenda: 2065 | 2066 | 2067 | 2068 | * Security Tools WG approved request to add a new category of tool to the Guide for Security Tools [Suggestion: Add a new section to the "Guide to Security Tools" to cover tools that improve MTTR for OSS vulnerabilities · Issue #48 · ossf/wg-security-tooling (github.com)](https://github.com/ossf/wg-security-tooling/issues/48) 2069 | * RSA slides are final today 2070 | * Have positive reviewer feedback 2071 | * Conf is Mon, Apr 24, 2023 – Thu, Apr 27, 2023 2072 | * Issue triage: 2073 | * New [https://github.com/ossf/s2c2f/issues/16](https://github.com/ossf/s2c2f/issues/16) 2074 | * Recent article [https://medium.com/checkmarx-security/new-attack-vector-observed-targeting-net-developers-in-a-software-supply-chain-attack-c28bfe4decd2](https://medium.com/checkmarx-security/new-attack-vector-observed-targeting-net-developers-in-a-software-supply-chain-attack-c28bfe4decd2) highlights a new-ish type of threat, which might not be fully addressed in s2c2f. Instead of typo-squating a project or package, they’re typo-squating a human maintainer. New [issue](https://github.com/ossf/s2c2f/issues/17) to track. 2075 | 2076 |

    **2023-03-14 S2C2F SIG Meeting**

    2077 | 2078 | 2079 |

    Attendance

    2080 | 2081 | 2082 | _Include org_ 2083 | 2084 | 2085 | 2086 | * Jay White (Microsoft) 2087 | * Randall T. Vasquez (SKF/Gentoo) 2088 | * Glenn ten Cate (SKF) 2089 | * Jasmine Wang (Microsoft) 2090 | * David A. Wheeler (Linux Foundation) 2091 | * Kris K (Google) 2092 | * Jonathan Leitschuh 2093 | 2094 | Regrets: 2095 | 2096 | 2097 | 2098 | * 2099 | 2100 | Facilitator(s): 2101 | 2102 | 2103 | 2104 | * Adrian Diglio 2105 | * Jay White 2106 | 2107 | Scribe(s): 2108 | 2109 | 2110 | 2111 | * Adrian Diglio 2112 | 2113 | Want to contribute to the S2C2 Framework? 2114 | 2115 | 2116 | 2117 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2118 | 2119 | Agenda: 2120 | 2121 | 2122 | 2123 | * S2C2F Course Outline for SKF [S2C2F Course Outline for SKF - Google Docs](https://docs.google.com/document/d/1TftXxcDenkTeAdvBbCgTNF3NXP0VNyAT0c3vG8JZ7qU/edit#) 2124 | * We now have a folder on the OpenSSF Google Drive [S2C2F Sig - Google Drive](https://drive.google.com/drive/folders/1asz0ZlUPnp7lMXjxO4v5dDBSTJr0IQtI) 2125 | * Outstanding Issues [https://github.com/ossf/s2c2f/issues](https://github.com/ossf/s2c2f/issues) 2126 | 2127 |

    **2023-02-28 S2C2F SIG Meeting**

    2128 | 2129 | 2130 |

    Attendance

    2131 | 2132 | 2133 | _Include org_ 2134 | 2135 | 2136 | 2137 | * Jay White (Microsoft) 2138 | * David A. Wheeler (Linux Foundation) 2139 | 2140 | Regrets: 2141 | 2142 | 2143 | 2144 | * Adrian Diglio 2145 | 2146 | Facilitator(s): 2147 | 2148 | 2149 | 2150 | * Adrian Diglio 2151 | * Jay White 2152 | 2153 | Scribe(s): 2154 | 2155 | 2156 | 2157 | * 2158 | * 2159 | 2160 | Want to contribute to the S2C2 Framework? 2161 | 2162 | 2163 | 2164 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2165 | 2166 | Agenda: 2167 | 2168 | 2169 | 2170 | * New spec format - Propose funding for ISO format edits 2171 | * Should double-check that the format is (or similar to) ISO format 2172 | * Could ask for funding from TAC/GB 2173 | * SCI Positioning SIG - Formerly SLSA Positioning to include S2C2F and FRSCA 2174 | * Broadening, how they’re working together. 2175 | * Sharing S2C2F was discussed in the opensourcesecurity podcast [Episode 363 – Joylynn Kirui from Microsoft on DevSecOps – Open Source Security](https://opensourcesecurity.io/2023/02/19/episode-363-joylynn-kirui-from-microsoft-on-devsecops/) 2176 | * - Inclusion of S2C2F in the SKF?? 2177 | * Discussing creating training modules for S2C2F. Maybe 8 hours? Talked with Tim S. 2178 | * David: Let’s cross-compare with SLSA first (build part levels 1-3 draft 1.0 out) 2179 | * - Inclusion of S2C2F OSS patching tools into the Security Tooling WG Guide (Sarah Evans) 2180 | * Maybe get time around OpenSSF Day. Perhaps 8 hour training time. 2181 | 2182 |

    **2023-02-14 S2C2F SIG Meeting**

    2183 | 2184 | 2185 |

    Attendance

    2186 | 2187 | 2188 | _Include org_ 2189 | 2190 | 2191 | 2192 | * Adrian Diglio (Microsoft) 2193 | * Jay White (Microsoft) 2194 | * Arnaud J Le Hors (IBM) 2195 | * Jasmine Wang (Microsoft) 2196 | * Eric Tice (Wipro) 2197 | * Avishay Balter (Microsoft) 2198 | * David A. Wheeler (Linux Foundation) 2199 | 2200 | Regrets: 2201 | 2202 | 2203 | 2204 | * 2205 | 2206 | Facilitator(s): 2207 | 2208 | 2209 | 2210 | * Adrian Diglio 2211 | * Jay White 2212 | 2213 | Scribe(s): 2214 | 2215 | 2216 | 2217 | * Adrian Diglio 2218 | * 2219 | 2220 | Want to contribute to the S2C2 Framework? 2221 | 2222 | 2223 | 2224 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2225 | 2226 | Agenda: 2227 | 2228 | 2229 | 2230 | * New spec format 2231 | * Making it adopt a proper format for eventual industry standard adoption 2232 | * ISO format, to make ISO happy 2233 | * It’s harder to do from one to another. 2234 | * Current plan: Want to merge inside the GitHub repo. We’ll try to create any issues, etc., in markdown. If it’s too hard, then we’ll have to start maintaining in parallel. We want to maximize the opportunity to discuss & propose changes to it. 2235 | * The ISO specification needs to not include names of specific tools, etc. The ISO spec needs to be “side by side”. Maybe have 2 documents? 2236 | * David: Try to avoid parallel maintenance. If you must, it works if if it is JUST formatting, don’t have CONTENT difference. Different content can go into a different appendix or different document. 2237 | * Arnaud: One must win. 2238 | * Basically, the typical result is an “ISO formatted” specification and another spec that has exactly the same contents. This was done by SPDX, Ada programming language, Common Criteria, etc. 2239 | * For now, we’re going to move to making the Google docs version the official version. 2240 | * [S2C2F - Google Docs](https://docs.google.com/document/d/1AxY5e9kNRwFYbxT3969gO8BYjXBLJWGOLqGlP3LUEn4/edit) - this is where we’ll work on it for now. We’ll need to take steps to make it look more like an ISO document. Need to ensure there are ties/bridges to other things, e.g., OpenSSF. 2241 | * Terms & definitions: They need to be uniform across OpenSSF & really common in industry. Let’s discuss things when definitions disagree. One language (where we can). 2242 | * David: Let’s move stuff that doesn’t belong in an ISO spec but DOES belong into an appendix. Then the information isn’t lost. 2243 | * Adrian to follow up with Jennifer Bly ([jbly@linuxfoundation.org](mailto:jbly@linuxfoundation.org)) to get OpenSSF branding/logos to include in RSA talk 2244 | * Panel Discussion at upcoming conference with SLSA, S2C2F 2245 | * OpenSSF Day and Town Hall is coming up. We can submit a CFP 2246 | * Opportunity to highlight what we’re doing across the entire Supply Chain Integrity WG. 2247 | * Looking for adopters! 2248 | * Eric is at Wipro (a consultant company), and would be mostly recommending these to their clients and internal development teams to help improve our products and solutions security posture. 2249 | * David: We need to do a cross-comparison with SLSA. I’ve asked someone else (Jordan Harband) to try to do that. It’s okay if one says something that the other doesn’t, but if there’s a _conflict_ we should know & discuss. 2250 | * Can/Should OpenSSF host a landing page for “Supply Chain Security” all-up, so that it shows how SLSA, S2C2F, and FRSCA fit together? 2251 | 2252 |

    **2023-01-31 S2C2F SIG Meeting**

    2253 | 2254 | Type: Working Session 2255 | 2256 | 2257 | Join:[https://zoom.us/j/99498377871](https://zoom.us/j/99498377871) 2258 | 2259 | 2260 | : [S2C2F SIG Meeting](https://zoom.us/j/99498377871) 2261 | 2262 | Materials: [https://github.com/ossf/s2c2f](https://github.com/ossf/s2c2f) 2263 | 2264 |

    General Notes

    2265 | 2266 | 2267 | 2268 | 2269 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2270 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2271 | * E.g. Jane Doe. 2272 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2273 | * E.g. John Doe (no update). 2274 | 2275 |

    Attendance

    2276 | 2277 | 2278 | _Include org_ 2279 | 2280 | 2281 | 2282 | * Adrian Diglio (Microsoft) 2283 | * Jay White (Microsoft) 2284 | * Alexandre Nicastro (Nikas) 2285 | * Rusydy Muhiddin (KoinworksSoftware engineer) 2286 | * Jasmine Wang (Microsoft) 2287 | 2288 | Regrets: 2289 | 2290 | 2291 | 2292 | * 2293 | 2294 | Facilitator(s): 2295 | 2296 | 2297 | 2298 | * Adrian Diglio 2299 | * Jay White 2300 | 2301 | Scribe(s): 2302 | 2303 | 2304 | 2305 | * Adrian Diglio 2306 | 2307 | Want to contribute to the S2C2 Framework? 2308 | 2309 | 2310 | 2311 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2312 | 2313 | Agenda: 2314 | 2315 | 2316 | 2317 | * Announcing RSA session in April to share the S2C2F 2318 | * April 26th at 8:30 am. 50 minute session. 2319 | * Checking with RSA liaison about changing the title of the S2C2F session 2320 | * Great opportunity for us to spread awareness about how the S2C2F can be adopted by any team or organization to secure how they consume dependencies into the development workflow 2321 | * Review Strategy for S2C2F within the OpenSSF 2322 | * 2323 | * Spec reformatting 2324 | * Did initial formatting in MS Word. Will convert over to Markdown. 2325 | * Will show up as an Issue and Pull Request in the near future 2326 | * CISA primer 2327 | * 10 minute presentation, takes place before RSA session 2328 | * They are looking for potential things to adopt 2329 | * Government visibility 2330 | * Engaged and working with NSA Enduring Security Framework 2331 | * [Enduring Security Framework ESF (nsa.gov)](https://www.nsa.gov/About/Cybersecurity-Collaboration-Center/Cybersecurity-Partnerships/ESF/) Will eventually be available here 2332 | * Open Topics? 2333 | 2334 |

    **2022-12-13 S2C2F SIG Meeting**

    2335 | 2336 | Type: Working Session 2337 | 2338 | 2339 | Join:[https://zoom.us/j/99498377871](https://zoom.us/j/99498377871) 2340 | 2341 | 2342 | : [S2C2F SIG Meeting](https://zoom.us/j/99498377871) 2343 | 2344 | Materials: [https://github.com/ossf/s2c2f](https://github.com/ossf/s2c2f) 2345 | 2346 |

    General Notes

    2347 | 2348 | 2349 | 2350 | 2351 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2352 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2353 | * E.g. Jane Doe. 2354 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2355 | * E.g. John Doe (no update). 2356 | 2357 |

    Attendance

    2358 | 2359 | 2360 | _Include org_ 2361 | 2362 | 2363 | 2364 | * Adrian Diglio (Microsoft) 2365 | * Jay White (Microsoft) 2366 | * Jeff (Sonatype) 2367 | * Issac Hepworth (Google) 2368 | * Jay White (Microsoft) 2369 | * William (Bill) Tworek (IBM) 2370 | * Brian Fox (Sonatype, GB) 2371 | 2372 | Regrets: 2373 | 2374 | 2375 | 2376 | * 2377 | 2378 | Facilitator(s): 2379 | 2380 | 2381 | 2382 | * Adrian Diglio 2383 | * Jay White 2384 | 2385 | Scribe(s): 2386 | 2387 | 2388 | 2389 | * Adrian Diglio 2390 | * 2391 | 2392 | Want to contribute to the S2C2 Framework? 2393 | 2394 | 2395 | 2396 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2397 | 2398 | Agenda: 2399 | 2400 | 2401 | 2402 | * Review Strategy for S2C2F within the OpenSSF 2403 | * 2404 | * Request for a S2C2F Goose icon that looks like R2D2 2405 | * Open Topics? 2406 | 2407 |

    **2022-11-29 S2C2F SIG Meeting**

    2408 | 2409 | Type: Working Session 2410 | 2411 | 2412 | Join:[https://zoom.us/j/99498377871](https://zoom.us/j/99498377871) 2413 | 2414 | 2415 | : [S2C2F SIG Meeting](https://zoom.us/j/99498377871) 2416 | 2417 | Materials: [https://github.com/ossf/s2c2f](https://github.com/ossf/s2c2f) 2418 | 2419 |

    General Notes

    2420 | 2421 | 2422 | 2423 | 2424 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2425 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2426 | * E.g. Jane Doe. 2427 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2428 | * E.g. John Doe (no update). 2429 | 2430 |

    Attendance

    2431 | 2432 | 2433 | _Include org_ 2434 | 2435 | 2436 | 2437 | * X 2438 | * Y 2439 | 2440 | Regrets: 2441 | 2442 | 2443 | 2444 | * 2445 | 2446 | Facilitator(s): 2447 | 2448 | 2449 | 2450 | * Adrian Diglio 2451 | * Jay White 2452 | 2453 | Scribe(s): 2454 | 2455 | 2456 | 2457 | * Adrian Diglio 2458 | * 2459 | 2460 | Want to contribute to the S2C2 Framework? 2461 | 2462 | 2463 | 2464 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2465 | 2466 | Agenda: 2467 | 2468 | 2469 | 2470 | * Blog Post went on Nov 16, as planned 2471 | * [https://openssf.org/blog/2022/11/16/openssf-expands-supply-chain-integrity-efforts-with-s2c2f/](https://openssf.org/blog/2022/11/16/openssf-expands-supply-chain-integrity-efforts-with-s2c2f/) 2472 | * 2473 | 2474 |

    **2022-11-15 S2C2F SIG Meeting**

    2475 | 2476 | Type: Working Session 2477 | 2478 | 2479 | Join:[https://zoom.us/j/99498377871](https://zoom.us/j/99498377871) 2480 | 2481 | 2482 | : [S2C2F SIG Meeting](https://zoom.us/j/99498377871) 2483 | 2484 | Materials: [https://github.com/ossf/s2c2f](https://github.com/ossf/s2c2f) 2485 | 2486 |

    General Notes

    2487 | 2488 | 2489 | 2490 | 2491 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2492 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2493 | * E.g. Jane Doe. 2494 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2495 | * E.g. John Doe (no update). 2496 | 2497 |

    Attendance

    2498 | 2499 | 2500 | _Include org_ 2501 | 2502 | 2503 | 2504 | * Adrian Diglio (Microsoft) - leads secure software supply chain team, main contributors to this framework that we’ve published that we use to secure ourselves 2505 | * David A. Wheeler (Linux Foundation) 2506 | * Brian Fox (Sonatype) 2507 | * Avishay Balter (Microsoft) 2508 | * Randall 2509 | * Michael Scovetta (Microsoft) 2510 | * Isaac Hepworth (Google) 2511 | * Alfred Tom (Lumian/SunSpec) 2512 | 2513 | Regrets: 2514 | 2515 | 2516 | 2517 | * 2518 | 2519 | Facilitator(s): 2520 | 2521 | 2522 | 2523 | * Adrian Diglio 2524 | * Jay White 2525 | 2526 | Scribe(s): 2527 | 2528 | 2529 | 2530 | * Adrian Diglio 2531 | * 2532 | 2533 | Want to contribute to the S2C2 Framework? 2534 | 2535 | 2536 | 2537 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2538 | 2539 |

    Agenda

    2540 | 2541 | 2542 | Agenda: 2543 | 2544 | 2545 | 2546 | * Blog Post - alignment on timing (Nov 16) 2547 | * David: Jay needs to approve the final draft blog post. I think it’s ready for release tomorrow! 2548 | * Goal is to let people know about S2C2F, which may add more participants too. 2549 | * We walked through the blog post & resolves all changes. 2550 | * There were some small governance tweaks, etc. 2551 | * Added reference implementations [s2c2f/README.md at main · ossf/s2c2f · GitHub](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2552 | * [PDF vs. Markdown?](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2553 | * [Currently the PDF isn’t auto-generated, so it goes out of date](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2554 | * [Currently we update the markdown, and eventually update the PDF](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2555 | * [Randall: Some groups create PDFs as “releases”. I do know how to generate PDFs from markdown using GitHub Actions. I’ll fork and play around.](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2556 | * [David: It’s not an OpenSSF project requirement, but OpenSSF Scorecards encourages the use of protected branches. Can we enable protected branches in ](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2557 | * [All agreed & gave David permission to do it](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2558 | * [David implemented it - now it has protected branches](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2559 | * [Operational issues? Email: operations@openssf.org](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2560 | * [Randall: I know it’s premature, but what about distributing this with the rest of our educational materials?](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2561 | * [Large markdown files are difficult to ingest if some sections are really large with no subsections](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2562 | * [Create many named sections/subsections with names](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2563 | * [David: If page doesn’t have a section name, consider adding one. That helps create signposts so readers “know where they are” in a complicated technical document.](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2564 | * [David: Generally we modify educational materials after they reach “1.0” - that way people can refine, update, etc.](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2565 | * [SKF, Fundamentals](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2566 | * [What about conectino to “Guide to Evaluating OSS” https://github.com/ossf/wg-best-practices-os-developers/blob/main/docs/Concise-Guide-for-Evaluating-Open-Source-Software.md#readme](https://github.com/ossf/s2c2f/blob/main/Reference_implementation/README.md) 2567 | 2568 |

    **2022-11-01 S2C2F SIG Meeting**

    2569 | 2570 | Type: Working Session 2571 | 2572 | 2573 | Join:[https://zoom.us/j/99498377871](https://zoom.us/j/99498377871) 2574 | 2575 | : [S2C2F SIG Meeting](https://zoom.us/j/99498377871) 2576 | 2577 | Materials: [https://github.com/ossf/s2c2f](https://github.com/ossf/s2c2f) 2578 | 2579 |

    General Notes

    2580 | 2581 | 2582 | 2583 | 2584 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2585 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2586 | * E.g. Jane Doe. 2587 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2588 | * E.g. John Doe (no update). 2589 | 2590 |

    Attendance

    2591 | 2592 | 2593 | _Include org_ 2594 | 2595 | 2596 | 2597 | * Adrian Diglio (Microsoft) - leads secure software supply chain team, main contributors to this framework that we’ve published that we use to secure ourselves 2598 | * Jay White (Microsoft) 2599 | * Isaac Hepworth (Google) 2600 | * Randall T. Vasquez (Gentoo) 2601 | * Avishay Balterr (Microsoft) 2602 | * Alasdair Nottingham (IBM) 2603 | * David A. Wheeler (Linux Foundation) 2604 | 2605 | Regrets: 2606 | 2607 | 2608 | 2609 | * 2610 | 2611 | Facilitator(s): 2612 | 2613 | 2614 | 2615 | * Adrian Diglio 2616 | * Jay White 2617 | 2618 | Scribe(s): 2619 | 2620 | 2621 | 2622 | * Adrian Diglio 2623 | * David A. Wheeler 2624 | 2625 | Want to contribute to the S2C2 Framework? 2626 | 2627 | 2628 | 2629 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2630 | 2631 |

    Agenda

    2632 | 2633 | 2634 | Agenda: 2635 | 2636 | 2637 | 2638 | * Blog Post - alignment on timing (Nov 16) 2639 | * David: I suggest talking with Jennifer Bly [jbly@linuxfoundation.org](mailto:jbly@linuxfoundation.org). We need a final draft we can send to at least the TAC before release so they can respond if there’s an issue. (They typically don’t object to proposed posts, since we try to give them good stuff to start with, but we need to make sure that they can review & have an opportunity to raise an issue.) 2640 | * Jay: Will do, with planned release date of Nov 16. 2641 | * Specification meeting breakout 2642 | * David: We might want to discuss positioning more first, to address that & then it’ll be easier to specify 2643 | * Jay: We’ve been interacting with the SLSA Positioning WG, so we’ve already had good meetings & made progress. 2644 | * Jay: There are other things we’ll need to do, e.g., review licensing to make sure we’re going the right way. I can see focusing meetings on one and then the other. 2645 | * David: Should I try to have someone give a presentation on the LF processes for creating standards? 2646 | * Jay: We’re already talking with Jory Burson (VP Standards), it might be good to have a presentation but we’re already working together on this. 2647 | * E.g., there are some cleanup activities we need to do to work out the Community Specification work. 2648 | * Repo updates 2649 | * Spec review 2650 | * Jay: I know some people have reviewed it. 2651 | * David: I reviewed, I could send individually, but if I send them as issues then people can comment 2652 | * Jay: Issues sound great. 2653 | * David: Okay, I’ll send my comments as GitHub issues. 2654 | 2655 |

    **2022-10-18 S2C2F SIG Meeting**

    2656 | 2657 | Type: Working Session 2658 | 2659 | 2660 | Join:[https://zoom.us/j/99498377871](https://zoom.us/j/99498377871) 2661 | 2662 | 2663 | : [S2C2F SIG Meeting](https://zoom.us/j/99498377871) 2664 | 2665 | Materials: [https://github.com/ossf/s2c2f](https://github.com/ossf/s2c2f) 2666 | 2667 |

    General Notes

    2668 | 2669 | 2670 | 2671 | 2672 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2673 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2674 | * E.g. Jane Doe. 2675 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2676 | * E.g. John Doe (no update). 2677 | 2678 |

    Attendance

    2679 | 2680 | 2681 | _Include org_ 2682 | 2683 | 2684 | 2685 | * Adrian Diglio (Microsoft) - leads secure software supply chain team, main contributors to this framework that we’ve published that we use to secure ourselves 2686 | * Jay White (Microsoft) 2687 | * Jasmine Wang (Microsoft) 2688 | * Isaac Hepworth (Google) 2689 | * Jason Lutz (Chainguard) 2690 | * Michael Scovetta (Microsoft) 2691 | * Avishay Balter (Microsoft) 2692 | * B. Ganti (Microsoft) 2693 | * Azeem () 2694 | * David Tesar (Microsoft) 2695 | * Avishay Balter (Microsoft) 2696 | * Aeva Black (Microsoft) 2697 | * Toddy (Microsoft) 2698 | * 2699 | 2700 | Regrets: 2701 | 2702 | 2703 | 2704 | * 2705 | 2706 | Facilitator(s): 2707 | 2708 | 2709 | 2710 | * Adrian Diglio 2711 | * Jay White 2712 | 2713 | Scribe(s): 2714 | 2715 | 2716 | 2717 | * Adrian Diglio 2718 | * 2719 | 2720 | Want to contribute to the S2C2 Framework? 2721 | 2722 | 2723 | 2724 | * See [Maintaining the S2C2F Specification](https://github.com/ossf/s2c2f/blob/main/specification/README.md) 2725 | 2726 |

    Agenda

    2727 | 2728 | 2729 | Agenda: 2730 | 2731 | 2732 | 2733 | * Secure Supply Chain Consumption Framework (S2C2F) SIG Initiation 2734 | * Meeting cadence (proposing 2x / month) 2735 | * Agreed on doing bi-weekly on Tuesdays at 12:00 Pacific 2736 | * Blog announcement 2737 | * SLSA and S2C2F within OpenSSF 2738 | * Working on bridging the two frameworks while they serve their clear intended purposes 2739 | * Vision: Have a -1, -2, and -3 single ISO standard for securing the supply chain 2740 | * What to name this conjoined framework? Let’s have a discussion with the larger conglomerate (not within this meeting) 2741 | * Suggestion: Have SLSA Positioning meeting be renamed and up-leveled to be Supply Chain Integrity/Security Positioning meeting. 2742 | * Pursuing ISO Standardization 2743 | * Maintaining the most current version of the specification within OpenSSF 2744 | * There will be another name/number under ISO 2745 | * Another parallel/example is SPDX. There is a path to get approval to make this available as a Standard 2746 | * Having conversations with the precursor to pursue ISO standardization 2747 | * Changes merged to address multiple previous Issues 2748 | * Issue #11 2749 | * No objections, moving forward with making the change. 2750 | * Need to reach out to OpenSSF Ops on logistics of moving the repo into OpenSSF 2751 | * Other topics? 2752 | 2753 |

    **2022-09-26 OSS SSC Framework Technical Meeting**

    2754 | 2755 | Type: Working Session 2756 | 2757 | 2758 | Join: [https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09](https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09) 2759 | 2760 | 2761 | : [OSS SSC Framework Community Meeting](https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09) 2762 | 2763 | Materials: [https://github.com/microsoft/oss-ssc-framework](https://github.com/microsoft/oss-ssc-framework) 2764 | 2765 |

    General Notes

    2766 | 2767 | 2768 | 2769 | 2770 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2771 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2772 | * E.g. Jane Doe. 2773 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2774 | * E.g. John Doe (no update). 2775 | 2776 |

    Attendance

    2777 | 2778 | 2779 | _Include org_ 2780 | 2781 | 2782 | 2783 | * Adrian Diglio (Microsoft) - leads secure software supply chain team, main contributors to this framework that we’ve published that we use to secure ourselves 2784 | * Jay White (Microsoft) 2785 | * Mike Lieberman (Kusari) 2786 | * David Tesar (Microsoft) 2787 | * Randall T. Vasquez (Gentoo) 2788 | * Roy Williams (Microsoft) 2789 | * Jasmine Wang (Microsoft) 2790 | 2791 | Regrets: 2792 | 2793 | 2794 | 2795 | * 2796 | 2797 | Facilitator(s): 2798 | 2799 | 2800 | 2801 | * Adrian Diglio 2802 | * Jay White 2803 | 2804 | Scribe(s): 2805 | 2806 | 2807 | 2808 | * Adrian Diglio 2809 | * 2810 | 2811 | Want to contribute to the OSS SSC Framework? 2812 | 2813 | 2814 | 2815 | * See [Maintaining the OSS SSC Framework Specification](https://github.com/microsoft/oss-ssc-framework/blob/main/specification/README.md) 2816 | 2817 |

    Agenda

    2818 | 2819 | 2820 | Agenda: 2821 | 2822 | 2823 | 2824 | * Look at the GitLab Recommended Implementation Guide 2825 | * Discussed the nuances of language packages vs. Linux system packages vs. containers 2826 | * 2827 | 2828 |

    **2022-09-20 OSS SSC Framework Community Meeting**

    2829 | 2830 | Type: Working Session 2831 | 2832 | 2833 | Join: [https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09](https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09) 2834 | 2835 | 2836 | : [OSS SSC Framework Community Meeting](https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09) 2837 | 2838 | Materials: [https://github.com/microsoft/oss-ssc-framework](https://github.com/microsoft/oss-ssc-framework) 2839 | 2840 |

    General Notes

    2841 | 2842 | 2843 | 2844 | 2845 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2846 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2847 | * E.g. Jane Doe. 2848 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2849 | * E.g. John Doe (no update). 2850 | 2851 |

    Attendance

    2852 | 2853 | 2854 | _Include org_ 2855 | 2856 | 2857 | 2858 | * Adrian Diglio (Microsoft) - leads secure software supply chain team, main contributors to this framework that we’ve published that we use to secure ourselves 2859 | * Jay White (Microsoft) 2860 | * Avishay Balter (Microsoft) 2861 | * B. Ganti (Microsoft) 2862 | * Aaron Bacchi (Verizon) 2863 | * Michael Scovetta (Microsoft) 2864 | * Jasmine Wang (Microsoft) 2865 | * David Tesar (Microsoft) 2866 | * Isaac Hepworth (Google) 2867 | * Alasdair Nottingham (IBM) 2868 | * David A. Wheeler (Linux Foundation) 2869 | * Joe Bussell (Microsoft) 2870 | 2871 | Regrets: 2872 | 2873 | 2874 | 2875 | * Crob (Intel) 2876 | 2877 | Facilitator(s): 2878 | 2879 | 2880 | 2881 | * Adrian Diglio 2882 | * Jay White 2883 | 2884 | Scribe(s): 2885 | 2886 | 2887 | 2888 | * Adrian Diglio 2889 | * 2890 | 2891 | Want to contribute to the OSS SSC Framework? 2892 | 2893 | 2894 | 2895 | * See [Maintaining the OSS SSC Framework Specification](https://github.com/microsoft/oss-ssc-framework/blob/main/specification/README.md) 2896 | 2897 |

    Agenda

    2898 | 2899 | 2900 | Agenda: 2901 | 2902 | 2903 | 2904 | * Opening Statements by Jay about potential/upcoming contribution to OpenSSF 2905 | * Where in the OpenSSF shall this go? We have presented this to Best Practices WG, Supply Chain Integrity WG, and End Users WG. 2906 | * TAC can adjudicate things, but would like us to first work through it on our own, and only escalate if there is an issue. 2907 | * David: Suggests the Supply Chain Integrity WG, keeps it with SLSA & that might help ensure they integrate together better. 2908 | * Idea of an “enterprise” WG? Does any WG have other activities that align with this customer base? Restructure of WG is being discussed in the TAC, but we shouldn’t delay the OSS SSC Framework’s contribution here. 2909 | * Vote within meeting: majority believed SSC should first propose to be part of the Supply Chain Integrity WG. That said, End Users is quite plausible, & there’s an argument for Best Practices 2910 | * “I think it will thrive wherever it ends up” 2911 | * Access Control of Google Doc - provide a comment link (instead of edit link). Create a group and add people to group 2912 | * Proposal: Ensure that it’s clear that not all projects will want to be the top level & you may want a mix of levels (e.g., level 2 for some criteria, 3 for others). Potentially add more clarification around Level 4 being aspirational in most cases 2913 | * [https://github.com/microsoft/oss-ssc-framework/issues/9](https://github.com/microsoft/oss-ssc-framework/issues/9) 2914 | * Review and Triage Issues: [Issues · microsoft/oss-ssc-framework (github.com)](https://github.com/microsoft/oss-ssc-framework/issues) 2915 | * OSCAL - note relationship with SLSA too: [https://github.com/slsa-framework/slsa/issues/478](https://github.com/slsa-framework/slsa/issues/478) 2916 | * Currently they edit in markdown & then occasionally generate PDF 2917 | * They could auto-generated 2918 | * Feedback from NIST NCCoE presentation was to map it to [Software Security Framework | BSIMM](https://www.bsimm.com/framework.html) 2919 | * Would the OSS SSC Framework create example “attestations” of conformance? 2920 | * Let’s look into OSCAL, and request OSCAL member to come present 2921 | * Other topics? 2922 | 2923 |

    **2022-08-29 OSS SSC Framework Technical Meeting**

    2924 | 2925 | Type: Working Session 2926 | 2927 | 2928 | Join: [https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09](https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09) 2929 | 2930 | 2931 | : [OSS SSC Framework Community Meeting](https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09) 2932 | 2933 | Materials: [https://github.com/microsoft/oss-ssc-framework](https://github.com/microsoft/oss-ssc-framework) 2934 | 2935 |

    General Notes

    2936 | 2937 | 2938 | 2939 | 2940 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 2941 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 2942 | * E.g. Jane Doe. 2943 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 2944 | * E.g. John Doe (no update). 2945 | 2946 |

    Attendance

    2947 | 2948 | 2949 | _Include org_ 2950 | 2951 | 2952 | 2953 | * Adrian Diglio (Microsoft) - leads secure software supply chain team, main contributors to this framework that we’ve published that we use to secure ourselves 2954 | * Crob (Intel) 2955 | * Joe Bussell (Microsoft) - Lead in Windows Engineering System 2956 | * Jasmine Wang (Microsoft) 2957 | * Michael Scovetta (Microsoft) 2958 | * B. Ganti - 2959 | * Toddy 2960 | 2961 | Regrets: 2962 | 2963 | 2964 | 2965 | * 2966 | 2967 | Facilitator(s): 2968 | 2969 | 2970 | 2971 | * Adrian Diglio 2972 | * Jay White 2973 | 2974 | Scribe(s): 2975 | 2976 | 2977 | 2978 | * 2979 | * 2980 | 2981 | Want to contribute to the OSS SSC Framework? 2982 | 2983 | 2984 | 2985 | * See [Maintaining the OSS SSC Framework Specification](https://github.com/microsoft/oss-ssc-framework/blob/main/specification/README.md) 2986 | 2987 |

    Agenda

    2988 | 2989 | 2990 | Agenda: 2991 | 2992 | 2993 | 2994 | * First pass at a Reference implementation on GitHub [Reference Implementation of OSS SSC Framework - Google Docs](https://docs.google.com/document/d/1De8elgq5EC1bG8DIIbISnCv12zrPDyPcBudurvCbjOI/edit#) 2995 | 2996 |

    **2022-08-16 OSS SSC Framework Community Meeting**

    2997 | 2998 | Type: Working Session 2999 | 3000 | 3001 | Join: [https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09](https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09) 3002 | 3003 | : [OSS SSC Framework Community Meeting](https://zoom.us/j/98482103886?pwd=cENwUmxGcWJOY0VMTTc4NUlHVDlXdz09) 3004 | 3005 | Materials: [https://github.com/microsoft/oss-ssc-framework](https://github.com/microsoft/oss-ssc-framework) 3006 | 3007 |

    General Notes

    3008 | 3009 | 3010 | 3011 | 3012 | * **Please add yourself to the attendance list (below) if you plan to attend, or have just joined the meeting.** 3013 | * If you’re a new member or if you have an update, please just provide your name. The facilitator will invite you to speak during the check-in phase of the meeting. 3014 | * E.g. Jane Doe. 3015 | * If you do not wish to be called on during the check-in, please put “(no update)”, minus the quotes, to the right of your name. 3016 | * E.g. John Doe (no update). 3017 | 3018 |

    Attendance

    3019 | 3020 | 3021 | _Include org_ 3022 | 3023 | 3024 | 3025 | * Adrian Diglio (Microsoft) - leads secure software supply chain team, main contributors to this framework that we’ve published that we use to secure ourselves 3026 | * Jay White (Microsoft) - working to bring this into the open. 3027 | * VM (Vicky) Brasseur (Wipro) - Director of Open Source Strategy at Wipro. 3028 | * Randall T. Vasquez (Gentoo/Homebrew) 3029 | * CRob (Intel, OpenSSF TAC, OpenSSF Best Practices WG co-lead) 3030 | * Sarah Novotny (Microsoft, LF Board Member, leads OSS strategy for Microsoft) 3031 | * Steven Murawski (Microsoft) - Cloud Native advocacy team, in OpenSSF best practices WG 3032 | * David A. Wheeler (Linux Foundation) - Director of Open Source Supply Chain Security 3033 | * Aeva Black (Microsoft, OpenSSF TAC) 3034 | * Peter Singh (“Fuzzy”) (AstroTech) 3035 | * B. Ganti (Microsoft - CISO representative securing Azure / Azure DevOps) 3036 | * David Tesar (Microsoft - Product Manager OSS - Secure supply chain) 3037 | * Toddy Mladenov (Microsoft - secure supply chain for Containers for 1P services) 3038 | * Varun Badhwar - Founder of Endor Labs 3039 | * Johnson Shi - (Microsoft Azure Container Registry - Secure Supply Chain for Containers) 3040 | * Michael Scovetta (Microsoft - OpenSSF) 3041 | * Jasmine Wang (Microsoft - Secure Supply Chain Team) 3042 | * Isaac Hepworth (Google) - software supply chain and OpenSSF 3043 | 3044 | Regrets: 3045 | 3046 | 3047 | 3048 | * 3049 | 3050 | Facilitator(s): 3051 | 3052 | 3053 | 3054 | * Adrian Diglio 3055 | * Jay White 3056 | 3057 | Scribe(s): 3058 | 3059 | 3060 | 3061 | * 3062 | * 3063 | 3064 | Want to contribute to the OSS SSC Framework? 3065 | 3066 | 3067 | 3068 | * See [Maintaining the OSS SSC Framework Specification](https://github.com/microsoft/oss-ssc-framework/blob/main/specification/README.md) 3069 | 3070 |

    Agenda

    3071 | 3072 | 3073 | Agenda: 3074 | 3075 | 3076 | 3077 | * First meeting, intros + welcome! 3078 | * Overview 3079 | * The current spec is available in Markdown format 3080 | * Overall: [https://github.com/microsoft/oss-ssc-framework](https://github.com/microsoft/oss-ssc-framework) 3081 | * Markdown - [https://github.com/microsoft/oss-ssc-framework/blob/main/specification/framework.md](https://github.com/microsoft/oss-ssc-framework/blob/main/specification/framework.md) 3082 | * 3083 | * Bookkeeping 3084 | * Meeting Cadence (monthly) 3085 | * Community meeting is to provide a forum to share news and listen to feedback from the community about the spec 3086 | * Technical meetings are to discuss inclusion of recommended tools and technical nature of the spec 3087 | * Is this meeting open? 3088 | * **Yes, open to all** 3089 | * Technical Vision for the OSS SSC Framework 3090 | * What is the best home for this? Encourage us to present to the best practices working group in a single meeting with multiple stakeholders from different OpenSSF working groups 3091 | * Vicky is responsible for a working group on end-user-focused consumption of open source. There is prior art in CNCF and OpenStack 3092 | * CRob will help setup 1 meeting to present framework to multiple WGs 3093 | * Send spec and RFR to Best Practices WG for their review 3094 | --------------------------------------------------------------------------------