Skip to content

Latest commit

 

History

History
33 lines (30 loc) · 4.79 KB

GitHub.md

File metadata and controls

33 lines (30 loc) · 4.79 KB

Suggested Reference Implementation for GitHub open source projects

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).

The community helps maintain these suggested methods of implementing the requirements, and will be updated over time.

Requirement ID Requirement Title Maturity Level Reference Implementation in GitHub
ING-1 Use public package managers trusted by your organization L1 Ex. npmjs.org, DockerHub
ING-2 Use an OSS binary repository manager solution L1 GitHub Packages
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. 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.
ING-4 Mirror a copy of all OSS source code to an internal location L3 Duplicate a repository
SCA-1 Scan OSS for known vulnerabilities L1 Recommend using GitHub dependency graph for your repo for scanning vulns
SCA-2 Scan OSS for licenses L1 Recommend configuring Dependency Review for license management
SCA-3 Scan OSS to determine if its end-of-life L2 OpenSSF Scorecard - actively maintained (inactivity for X years). Security Insights (Luigi)
SCA-4 Scan OSS for malware L3 OpenSSF Package Analysis
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
INV-1 Maintain an automated inventory of all OSS used in development L1 GitHub Dependency Graph
INV-2 Have an OSS Incident Response Plan L2 Write one - be focused on how to roll back versions of OSS
UPD-1 Update vulnerable OSS manually L1
UPD-2 Enable automated OSS updates L2 Dependabot
UPD-3 Display OSS vulnerabilities as comments in Pull Requests (PRs) L2 Dependency Review via GHAS
AUD-1 Verify the provenance of your OSS L3 Repo it came from and commit hash from where it came. GitBOM? SBOM?
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
AUD-3 Validate integrity of the OSS that you consume into your build L2 This is usually performed by the language package client
AUD-4 Validate SBOMs of OSS that you consume into your build L4
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/
ENF-2 Enforce usage of a curated OSS feed that enhances the trust of your OSS L3 Enforce a branch protection rule to enforce that “OpenSSF Package Analysis” was run
REB-1 Rebuild the OSS in a trusted build environment, or validate that it is reproducibly built L4
REB-2 Digitally sign the OSS you rebuild L4
REB-3 Generate SBOMs for OSS that you rebuild L4
REB-4 Digitally sign the SBOMs you produce L4
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