Repository navigation
docs: add security guidelines and SECURITY.md template - #7
Conversation
|
Should we also move the Operational Security aspects from here: https://github.com/neonephos/guidelines-development/blob/main/project-guidelines/project-guidelines.md#153-security-and-compliance into this document? |
|
I think it would be a lot easier to just adopt using the OpenSSF Scorecard, which will do checks to align with best practices. |
I created a section |
I copied the content over from §15.3 and reworked with conformance tables, cross-references to §8, and proper MUST/SHOULD language |
|
@morri-son Good question. Generally we see projects adopt the OpenSSF Best Practices Badge ( https://www.bestpractices.dev/ ) and map to the various tiers ( for example, Passing Badge for Incubation, Gold for Graduated ). The Scorecard could be then a tool to manage ongoing alignment, just in the same way LFX Insights is used for measuring contributions. Let me know your thoughts... |
I added https://github.com/neonephos/guidelines-development/pull/7/changes#diff-1c57ac02b0e896c0a58ee0a4467770159c4a4c5b0e2c6c0e7b2ad989c4d73cd0R353-R364. Pls check if this fits your idea. |
Restructure Section 5.1 from GitHub-only "Private Vulnerability Reporting" to platform-agnostic "Private Vulnerability Intake Channel" with subsections for GitHub, GitLab, and other/self-hosted platforms. Update all downstream references in Sections 6, 7, 9, and 11 that previously hard-coded GitHub Security Advisories to use platform-agnostic language with platform-specific guidance blocks. Update SECURITY.md template with reporting options for GitHub (Private Vulnerability Reporting), GitLab (confidential issues), and email/ security.txt fallback. Addresses review feedback from fmui noting that not all projects may be hosted on GitHub (PR neonephos#7, comment r3064032552). Signed-off-by: Gerald Morrison <gerald.gm.morrison@gmail.com>
|
Hi @morri-son I still think we are just restating things already covered in existing materials. Take a look at the TAC site in progress ( https://special-couscous-6qv9rv3.pages.github.io/best_practices/repo.html ) and let me know your thoughts. |
link gives 404. But apart from anything proposed there, I guess we can keep best-practices in topic specific repos instead of always linking them to a central best practices doc, or? I would vote for keeping it in the SECURITY.md for the time being, getting it merged and evolve it over time. |
|
@morri-son Sorry - changed the URL to https://neonephos.github.io/tac/. LMK if that doesn't work for you. |
OpenSSF Security Baseline Alignment (commit d7b21b0)Cross-referenced the security guidelines against the OpenSSF Security Baseline (OSPS), the OpenSSF Concise Guide, and the OpenSSF SCM Best Practices. Added the following based on identified gaps: New sections
Strengthened existing sections
Design decisions
|
|
@jmertic yes, that was a working link :-) And yes, you're right, the doc mentions things that are available at various other places. I took over many things from OpenSSF docs. But I'm not sure, what an enduser should do with https://neonephos.github.io/tac/best_practices/documentation.html#security or with looking at the mentioned OpenSSF docs when it comes to understand what needs to be done to onboard to Neonephos. I'm fine with cross referencing docs, either in the NeoNephos repo and external ones like OpenSSF, whenever possible we should deduplicate docs. But if I would be an enduser that needs to secure his repo(s) for joining the NeoNephos foundation, then I would like to have one central security guide that I can follow start to end. |
|
I'd advise against "NeoNephos" specific security guidance; this world is fast moving, and leaning on a group with expertise in this space is best advised versus doing work in silo. What I have seen done, which could be helpful, is showcasing a few projects who have done this well that could be an inspiration to others. But overindexing on specific requirements is going to be a neverending cycle, and most projects I work with tend to yield that to expert guidance and focus more on the domain expertise they have. |
|
@jmertic, sorry for the longer answer, but there are quite some things to explain :-) Adopted from your feedback:
What remains NeoNephos-specific are things OpenSSF explicitly delegates to adopting organizations: severity-based response SLAs (§7, benchmarked against Envoy/GitLab/Chainguard), a conformance model tied to lifecycle stages, and platform-specific guidance (GitHub/GitLab/other) that abstract standards can't provide. Why not the TAC site today: Most of the 13 NeoNephos projects have no SECURITY.md or use vendor boilerplate. The TAC site's security section lists three badge links with no actionable path for maintainers. Happy to revisit when that evolves — today, projects need a self-contained guide to actually get this done. |
|
@jmertic I tried to incorporate your feedback again and cut the doc by a lot (from ~500 to ~300 lines) 🙂 The guidelines now state what NeoNephos requires and link to OpenSSF for the how — no more restating existing materials. Removed: all platform-specific subsections (deferred to SECURITY.md template), Data Retention (no OpenSSF precedent), 13 inline conformance tables (single matrix appendix) Added: Quick-Start Checklist with 12 MUSTs deep-linked to exact subsections — a team can scan it in 30 seconds. Conformance table that sums up all requirements at the end, moving them from tables scattered inline throughout each section. On strictness: Audited all MUSTs against OpenSSF. 20 of 24 align directly. The 4 that are stricter (SECURITY.md file, CVSS in advisories, non-author review, 90-day embargo ceiling) are things OpenSSF delegates to adopting organizations. They are best practices from other large OS project like Google's Project Zero. On Scorecard: Referenced in Section 9.7 as a SHOULD. It covers repo config checks; the guidelines cover process (response SLAs, disclosure). Complementary, not alternatives. Pls check if this now comes closer to what you envisioned. I still stand to my point that especially for security requirements teams and projects should have a single entry point/doc with an easy to copy template that they can adopt. |
Skarlso
left a comment
There was a problem hiding this comment.
I would like to clarify a couple of things here. The more pressing one is the timeline, the templating with italic and the discrepancies between MUST and SHOULD for CVEs. The rest if UX.
- Replace cryptic version placeholder table in SECURITY.md template with flexible options (single branch vs. multiple releases) - Clarify SLA targets are calendar days, add transparency-over-speed guidance - Add practical notes to security-guidelines.md: incremental supply chain adoption, CVE deferral for early-stage projects, communication over deadlines - Mark Past Security Advisories section as optional for new projects Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Change resolution for artifact signing, SLSA provenance, and SBOM from 'By next minor release' to 'When publishing artifacts to external consumers' — avoids artificial pressure on early-stage projects that do not yet distribute artifacts externally. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
…SSF Scorecard, and template improvements - Relax SECURITY.md link requirement to support org-level .github repos (nexus49) - Clarify supported versions as a version support policy, not branch names (nexus49) - Add §10 Operational Security Controls reworked from Project Guidelines §15.3: authentication, CI/CD security, access governance, code scanning, data retention - Frame maintainer vetting criteria as supply-chain trust controls (§10.3) - Add §10.6 OpenSSF Scorecard recommendation (jmertic) - Update scope, introduction, and TOC; renumber Acknowledgements to §11 - Add org-level SECURITY.md guidance note to template Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Restructure Section 5.1 from GitHub-only "Private Vulnerability Reporting" to platform-agnostic "Private Vulnerability Intake Channel" with subsections for GitHub, GitLab, and other/self-hosted platforms. Update all downstream references in Sections 6, 7, 9, and 11 that previously hard-coded GitHub Security Advisories to use platform-agnostic language with platform-specific guidance blocks. Update SECURITY.md template with reporting options for GitHub (Private Vulnerability Reporting), GitLab (confidential issues), and email/ security.txt fallback. Addresses review feedback from fmui noting that not all projects may be hosted on GitHub (PR neonephos#7, comment r3064032552). Signed-off-by: Gerald Morrison <gerald.gm.morrison@gmail.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
…ctions Add §8.5 and §8.6 to supply chain security guidelines, aligned with OpenSSF Security Baseline controls (OSPS-VM-05.01–05.03, OSPS-LE-02). Recommends Trivy, Grype, OSV-Scanner for image scanning and Trivy, Anchore Grant, REUSE for license compliance. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Add branch protection (MUST), secret scanning (MUST), CI/CD input sanitization, action pinning, SAST thresholds, security assessment, and provenance verification guidance. Strengthen existing sections with OpenSSF Baseline control references (OSPS-AC-03, BR-01, BR-07, VM-06, SA-03, DO-03, BR-04). All additions link to upstream docs rather than duplicating content. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
…oject references - Add paragraph in introduction clarifying relationship to OpenSSF standards - Add industry rationale for SLAs (benchmarked against Envoy, GitLab, Chainguard) - Trim §8.2 (SLSA), §8.5 (container scanning), §8.6 (license scanning): replace verbose tool/implementation details with concise requirements + OpenSSF references - Condense §10.6 (SAST) from 9 lines to 3, keeping requirement and threshold concept - Add exemplary project references: Gardener (SECURITY.md), OCM (CI/CD, Scorecard) Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
…nSSF Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Signed-off-by: Gerald Morrison <gerald.gm.morrison@gmail.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Major restructuring to make the guidelines actionable and easy to adopt: - Add Quick-Start Checklist (Section 4) with deep-links to exact MUSTs - Go platform-agnostic: remove GitHub/GitLab/Other subsections, defer to SECURITY.md template for platform-specific setup - Merge Conformance Model into Introduction, Security Transparency into Vulnerability Response Process (Section 6) - Drop Data Retention section (no OpenSSF precedent) - Replace 13 inline conformance tables with single Conformance Matrix - Add 60-day dependency remediation SLA (OpenSSF Best Practices) - Add explicit low-severity (<4.0) informal tracking clause - Soften maintainer vetting from fixed "6 months" to "sustained history" - Drop fixed ">=2 security contacts" requirement (delegate to project) - Remove all "Related sections" footers, "Exemplary implementation" callouts, and "Practical note" boxes - Update SECURITY.md template: add link-adjustment note, default "Past Security Advisories" to present Signed-off-by: Gerald Morrison <gerald.gm.morrison@gmail.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
- Resolve CVE MUST/SHOULD contradiction: advisory links MUST be in release notes, CVE identifier MUST only when assigned (Section 6.4 stays SHOULD) - Align all timelines to report receipt (Day 0), matching Google Project Zero practice; remove "from triage completion" phrasing - Clarify embargo starts from report receipt, not acknowledgement - Fix conformance matrix: split secret scanning (MUST) from push protection (SHOULD) into separate rows - Make CI/CD section platform-neutral: generic requirements with "On GitHub:"/"On GitLab:" implementation guidance - Quick-start checklist: fix item neonephos#10 (secret scanning only, push protection is SHOULD) and neonephos#12 (platform-neutral wording) - Template: convert italic instructions to HTML comments - Template: add PVR enablement reminder before GitHub section - Template: use absolute URLs for cross-repo portability - Template: add "What to Include" section for reporters - Template: make security contacts table platform-neutral - Template: clarify attribution (OpenSSF vs NeoNephos) per item - Template: add footnote explaining 90-day ceiling vs fix targets Signed-off-by: Gerald Morrison <gerald.gm.morrison@gmail.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Co-authored-by: Johannes Scheerer <johannes.scheerer@sap.com> Signed-off-by: Gerald Morrison <67469729+morri-son@users.noreply.github.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on §3 (PR neonephos#7): "operational security controls" was ambiguous. Adds an explicit sentence stating the doc covers the development, build, and release lifecycle, and that runtime security of services deployed by consumers is out of scope. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on §7 (PR neonephos#7). Replaces vague "maintainers MAY exercise judgment" with concrete examples (mitigating default configurations, evidence of active exploitation) and requires any deviation from the raw CVSS score to be documented in the published advisory together with the original score and rationale. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on §8.4 (PR neonephos#7). The previous "projects MUST scan dependencies" did not specify frequency or whether results have to be visible. Aligns with OpenSSF Baseline OSPS-VM-05.03 (per-change evaluation against a documented threshold, with blocking on violations) instead of inventing a calendar cadence. Adds a SHOULD that scan results are surfaced via the platform's native mechanism (Dependabot alerts, GitLab Security dashboard) so conformance is externally verifiable. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on §8.4 (PR neonephos#7). Each TSC defines its own allowlist, but the allowlist must be compatible with the project's own license and Project Guidelines §6. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comments on §9.1 (PR neonephos#7). "Organization members" and "organization level" were too generic. Restricts both controls to the project's source-control, CI/CD, and artifact-publishing accounts (GitHub/GitLab organizations, container and package registries) — i.e., the systems where unauthorized access could lead to malicious code or artifacts being shipped. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on §9.2 (PR neonephos#7). SHA pinning is compatible with automated update tooling — Dependabot updates the SHA and keeps a version comment, Renovate has pinDigests. Adds links to both so it's clear automation is not lost. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comments on §9.5 (PR neonephos#7). "Small number" and "limit admin permissions" were not actionable. - Organization owners: anchored to a concrete range (2-5), required to be human named accounts with 2FA enforced. - Repository admin: reframed around intent — admin is for repository configuration (branch protection, secrets, releases); routine review/merge work belongs in the maintain or write role. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on §9.5 (PR neonephos#7) which suggested upgrading SHOULD to SHALL. Priority kept at SHOULD: OpenSSF Scorecard has no maintainer-vetting check, the OpenSSF Vulnerability Disclosure maintainer guide only says "select trusted maintainers" without normative wording, and OpenSSF Baseline access controls (OSPS-AC-*) are at the organization level rather than individual onboarding. There is no upstream MUST/SHALL for this control today, so the priority is not upgraded ahead of OpenSSF or peer foundations. Restructured the three criteria (sustained contributions, vouching, identity verification) into a numbered list so each is auditable, and allowed video-call verification against a previously verified identity as an equivalent to in-person verification. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on §9.7 (PR neonephos#7). Lists STRIDE, the OWASP Threat Modeling Process, and the CNCF Cloud Native Security Whitepaper as accepted methodologies, and points to the OpenSSF security-reviews repository for example reviews. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on §10 (PR neonephos#7). The Resolution timeline is measured from the latest of: the requirement's effective date, the project's onboarding date, or the lifecycle stage at which the requirement applies. Effective dates for new or amended requirements are set by the TAC. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
Addresses ScheererJ review comment on templates/SECURITY.md (PR neonephos#7): "Is a single SECURITY.md on the organisation level enough for a multi-repo project or not?" On GitHub, a SECURITY.md in the organization's .github repository is automatically used by every repository without its own — this satisfies the per-repository requirement, except where a repository needs its own intake link or contacts. GitLab has no equivalent fall-through, so each GitLab project needs its own SECURITY.md. Spelled out in both the security guidelines (§5.2) and the templates/SECURITY.md comment block. Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
- Add §11 explaining CRA stewardship framework and NeoNephos responsibilities - Include simplified CRA stewardship statement per LF guidance - Document escalation procedure for actively exploited vulns/severe incidents - Update Quick-Start Checklist and Conformance Matrix with CRA tasks - Add CRA section to SECURITY.md template Per guidance from John Mertic (jmertic@linuxfoundation.org): - LF steward email: steward@linuxfoundation.org - Stewardship statement is standardized across all LF projects - LF handles regulatory reporting; projects document commercial intent - See https://www.linuxfoundation.org/security for details Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com> On-behalf-of: Gerald Morrison (SAP) <gerald.morrison@sap.com> Signed-off-by: Gerald Morrison (SAP) <gerald.morrison@sap.com>
5985975 to
09b7980
Compare
Initial proposal for security guidelines and SECURITY.md template to be used in every repository.