Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracker: Adoptium Secure Software Development Framework (SSDF) #120

Open
jiekang opened this issue Feb 28, 2022 · 7 comments
Open

Tracker: Adoptium Secure Software Development Framework (SSDF) #120

jiekang opened this issue Feb 28, 2022 · 7 comments
Labels

Comments

@jiekang
Copy link

jiekang commented Feb 28, 2022

Security is of critical importance to Adoptium in order to maintain the trust of its community in the integrity of the work that it does. There are evolving market requirements for software providers to meet for using secure development practices. The Adoptium SSDF, based directly on the NIST SSDF [1], represents a commitment to meet these requirements.

[1]
https://csrc.nist.gov/Projects/ssdf
https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-218.pdf

This issue tracks the work to be done against the SSDF framework. The intention is for individual points of the framework to be investigated, documented, and completed, to then arrive at an overall Adoptium SSDF that can be maintained into the future. I intend to create an epic issue for each point that will serve as a tracker for relevant issues across the Adoptium organization’s repositories.

Epics are split into areas following the table in [1] (page 14 onwards). A subset of entries in [1] are proposed for work here, based on relevance to the Adoptium project. Discussion and debate is open for the entire process, as well as the reference framework Adoptium chooses to follow.

Other resources of interest include:
CNCF Paper on Secure Supply Chain:
https://github.com/cncf/tag-security/blob/main/supply-chain-security/supply-chain-security-paper/CNCF_SSCP_v1.pdf
Supply Chain Levels for Software Artifacts:
https://slsa.dev/

I believe the underlying work will be similar regardless of the framework it is organized under, and am proposing to follow the NIST SSDF, at least to drive the initial work towards secure Adoptium releases. The work is open for any willing contributors, and Red Hat contributors will participate.

Epics:

PO: Prepare the organization (#122)

  • PO.1.1: Identify and document all security requirements for Adoptium's software development infrastructures and processes, and maintain the requirements over time.
  • PO.2.1: Create new roles and alter responsibilities for existing roles as needed to encompass all parts of the SSDF. Periodically review and maintain the defined roles and responsibilities, updating them as needed.
  • PO.2.3: Obtain leadership commitment to secure development and convey that commitment to all with development related roles and responsibilities
  • PO.3.1 Specify which tools or tool types must or should be included in each toolchain to mitigate identified risks, as well as how the toolchain components are to be integrated with each other
  • PO.3.2 Follow recommended security practices to deploy, operate, and maintain tools and toolchains
  • PO.4.1 Define criteria for software security checks

PS: Protect software (#123)

  • PS.1.1: Store all forms of code, including source code, executable code, and configuration-as-code, based on the principle of least privilege so that only authorized personnel, tools, services, etc. have access
  • PS.2.1: Make software integrity verification information available to all users
  • PS.3.1: Securely archive the necessary files and supporting data (e.g., integrity verification information, provenance data) to be retained for each software release.
  • PS.3.2: Collect, safeguard, maintain, and share provenance data for all components of each software release via a software bill of materials [SBOM]

PW: Produce well secured software (#124)

  • PW.1.1: Use forms of risk modeling, such as threat modeling, attack modeling, or attack surface mapping, to help assess the security risks for Adoptium
  • PW.1.3: Use standardized security features and services instead of creating proprietary implementations
  • PW.2.1: Review the security architecture
  • PW.4.1: Acquire and maintain well-secured software components
  • PW.4.2: Create and maintain well-secured software components
  • PW.5.1: Follow secure coding practices that are appropriate to the development languages and environment
  • PW.6.1: Use securely configured compilers and build tools
  • PW.7.1: Conduct peer code reviews
  • PW.8.1: Determine executable code testing needs
  • PW.8.2: Scope the testing, design the tests, perform the testing, and document the results

RV: Assess, prioritize and remediate vulnerabilities (#125)

  • RV.1.1: Gather information on potential vulnerabilities
  • RV.1.3: Have a team and process in place to manage vulnerability reports and incidents
  • RV.2.1: Analyze each vulnerability
  • RV.2.2: Plan and implement risk responses for vulnerabilities
  • RV.3.1: Conduct root cause analysis
  • RV.3.2: Mitigate root causes
  • RV.3.3: Proactively check for similar vulnerability instances

As well as the areas above that directly follow the NIST SSDF, I propose an area for additional items for Adoptium

A: Secure Adoptium (#126)

  • A.1.1: Defined support & lifecycle maintenance plan
  • A.1.2: Monitor and ensure the integrity of customer-facing repositories
  • A.2.1: Identify layered dependencies
  • A.2.2: Track Provenance and Pedigree
  • A.3.1: Data lifecycle management
  • A.3.2: Data lifecycle validation
  • A.4.1: Conduct code scanning
@tellison
Copy link
Contributor

Thank you for kicking off this initiative @jiekang. It has already been discussed at the PMC, where there was enthusiastic support for this work.

I see you have already got some good level of detail with the approach and areas for Adoptium to address. I think it would be helpful to spend a short time introducing this topic to the community and ensuring an understanding for the direction proposed. As you wrote above:

Discussion and debate is open for the entire process, as well as the reference framework Adoptium chooses to follow.

Would you like to introduce this in the #general channel as a starting point? Once underway it may well warrant a specific channel for SSDF discussions, but let's start there.

@smlambert
Copy link
Contributor

smlambert commented Mar 10, 2022

Adding this comment, based on discussions in the March 10, 2022 Steering Committee call, and as a reminder and invitation for members to provide input and feedback.

Most of our expected activities will be documenting what we already do at the project, using the NIST SSDF outline as a guide. We have selected the US government based NIST framework as a model to follow in this exercise as it seems thorough and rigorous. We recognize there may be other models and are open to input if there are other references that we should consider as part of this work (especially if they are more rigorous, though an initial scan indicated that the NIST SSDF to be satisfyingly thorough, we did look at BSA and SLSA v0.1).

The checklist provided by the SSDF framework encompasses many activities that we already do, or have initiated at the project, so much of the effort related to this issue will take the form of assessment, documentation and identifying whether there are any gaps that the technical teams should try to fill. We believe this effort will help to further stabilize the project and is a step along our path of continuously improving how we build, test, and deliver software. Hopefully, as we identify and clearly articulate areas of improvement, we can engage experts from our community to join this effort.

As a personal observation, I also believe that this effort is not just of value to Adoptium, but to the ecosystem at large and I will be happy to see and share the progress more broadly.

EDIT SL/Nov23: To clarify, we are using SSDF and SLSA as frameworks that guide us in our mission to ensure secure software development. In most cases, the criteria of each framework overlaps. If there are unique criteria in one or the other framework, we will attempt to achieve them, but first focussing on the overlap criteria present in both.

@sxa
Copy link
Member

sxa commented Nov 9, 2022

Important documentation for initial compliance - this information should ultimately be put under version control in this repository.

@sxa
Copy link
Member

sxa commented Nov 28, 2022

For reference, we have recently published two blog posts on the secure development processes:

@sxa
Copy link
Member

sxa commented Feb 24, 2023

Plan of attack for some of the more important parts of SSDF during 2023. Note that I've tentatively planned in two months for each phase of this, so the estimated target dates against each plan reflect that:

Done

Phase 1 (2023-05)

Phase 2

Phase 3

Phase 4

  • PS4.1 (bld) Provenance (SBOM) for all dependencies. Store blessed versions in local repo for availability?
  • PW8 - Penetration testing
  • PW9 - Secure, non-exploitable options by default.
  • PO4.2 - Implement security checks defined in PO4.1 in previous phase
  • PO5.2 - Isolate development and production build systems based on analysis in previous phase

@tellison
Copy link
Contributor

tellison commented Mar 3, 2023

Plan of attack for some of the more important parts of SSDF:

Done

Maybe point to the approved project plan? I've just uploaded the latest version via the WG mailing list.

  • PW7.1/7.2 - Code review policy (GitHub reviewers - 2 on critical repos implemented. Find reference)

Will be helpful when the EF declarative policies and permissions code is rolled out for repos. In the meantime perhaps we can list our critical repos and point to the OSSF scorecard reports.

Phase 1

+1 to all those.

Phase 2

+1 again.

Phase 3

  • PO5.2 (infra) Deployment of MFA where possible for all parts of infrastructure (including ssh keys) and document exceptions

Consider moving to earlier phase?

Phase 4

  • PS4.1 (bld) Provenance (SBOM) for all dependencies. Store blessed versions in local repo for availability?
  • PW8 - Penetration testing
  • PW9 - Secure, non-exploitable options by default.
  • PO4.2 - Implement security checks defined in PO4.1 in previous phase
  • PO5.2 - Isolate development and production build systems based on analysis in previous phase

Happy with those. Lots of work!

@sxa
Copy link
Member

sxa commented Mar 3, 2023

@tellison The MFA one for infra was mostly in phase 3 because there was quite a lot in 2 and I didn't want to take anything out, but I'm shifting it up to phase 2 so that it is at least started earlier. This will mean it can be more swiftly included in the documentation of onboarding/offboarding which is part of Phase 1.

Added link to the plan now that it's available :-)

On the OSSF scorecards is there a specific artefact produced from those or are you'd like to point at or would it just be the executions of the actions workflows?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants