[software-development-practices:nist-ssdf] github/gh-aw-mcpg repository guidance
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 25/100
调研方向
Start by reading .golangci.yml:13-19, .github/workflows/ci.yml:59-84, and CONTRIBUTING.md to understand the current lint setup and contributor commands. The issue asks for a required pull request job running pinned gosec and govulncheck, plus a harmless regression fixture and local instructions. Done means the fixture is detected, clean code passes, suppressions are narrowly documented, and existing CI checks remain green.
由索引模型根据 Issue 内容生成。
描述
The repository shows a strong release and testing foundation, but its required CI does not run a security-focused Go analyzer or dependency-vulnerability scanner: gosec and errcheck are explicitly disabled, and no govulncheck invocation is present. Release checksums and SBOMs are valuable controls, but release and container workflows do not show an artifact-attestation step. The highest-value next move is to add a small, required security-analysis job, then close the release-provenance gap.
Action: MCP Gateway maintainers should assign the first backlog item to Copilot, require the new checks on pull requests, and accept it when a deliberately vulnerable test fixture is detected while the existing CI and release paths remain green.
Advisory only: This repository-only review is non-binding and does not prove security, compliance, certification, endorsement, or SSDF conformance. NIST SSDF is risk-based and organization-wide; all conclusions require human review.
Critical findings:
- PW.7.2 — GAP_FOUND:
.golangci.yml:13-19explicitly disablesgosecanderrcheck;.github/workflows/ci.yml:59-84runs general linting but the snapshot contains no required security-focused Go analysis. - RV.1.2 — PARTIAL: Dependabot covers Go modules and Actions weekly, but repository-observable CI does not show
govulncheckor an equivalent Go vulnerability test. - PS.2.1 / PS.3.2 — PARTIAL: releases publish SHA-256 checksums and SPDX/CycloneDX SBOMs, while
.github/workflows/release.mdandcontainer.ymlshow no attestation-generation step. - Strengths to preserve include pinned third-party Actions,
go mod verify, unit/integration/race testing, a documented threat model, coordinated vulnerability reporting, release SBOMs, and digest/checksum pinning for downloaded build inputs.
<b>Agent prompt</b>
Implement the first item in this issue for github/gh-aw-mcpg. Add a required, least-privilege GitHub Actions job that runs a pinned gosec release and govulncheck against the relevant Go packages. Keep findings actionable, document narrowly justified suppressions, and avoid uploading sensitive source or findings to third parties. Add a harmless regression fixture or focused test that proves the checks fail on representative unsafe code without weakening existing tests. Update contributor documentation with local commands. Run the existing lint, unit, integration, Rust-guard, and race checks that are practical in CI. Do not change release permissions or unrelated workflows.
Acceptance check: pull requests run both tools; a known fixture is detected; the clean tree passes; suppressions are specific and documented; existing CI remains green.
<b>Assessment scope and baseline</b>
- Target:
github/gh-aw-mcpg - Analyzed commit:
575559468c82f8e83740b6bcaff4bd8bfdbf86e6 - Verification date: 2026-10-22 UTC
- Current final baseline: NIST SP 800-218, SSDF Version 1.1
- Official project page checked on this run: https://csrc.nist.gov/projects/ssdf
- Final publication: https://csrc.nist.gov/pubs/sp/800/218/final
- DOI: https://doi.org/10.6028/NIST.SP.800-218
- Publication PDF: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-218.pdf
The NIST project page also identifies SP 800-218A, a generative-AI and dual-use foundation-model community profile. It is not a newer revision of the general SSDF baseline, so this review remains against final SP 800-218 Version 1.1. Draft material was not scored.
Evidence was limited to the supplied target snapshot and bounded repository metadata. Organization policy, personnel, training, private operational evidence, private alert contents, incident records, deployment configuration, and control effectiveness were not assessed. An active repository ruleset surface was observable, but detailed organization-level enforcement was not used to claim conformance. No open GitHub Well-Architected issue for this target was found in the review repository, so no remediation was omitted as duplicate.
<b>Complete practice-level evidence matrix</b>
| Practice and task provenance | Status | Repository evidence, limitation, and proportionate improvement |
|---|---|---|
| PO.1 (PO.1.1-PO.1.3), define and communicate security requirements | PARTIAL | docs/aw-security.md:3-40 defines a threat model and layered controls. A complete organization requirement inventory and communication process are not repository-verifiable. Human review should map product security requirements to tests and owners. |
| PO.2 (PO.2.1-PO.2.3), roles, training, and management commitment | NOT_ASSESSED | Maintainer roles, training, and management commitment are organization evidence unavailable in the snapshot. Confirm accountable security roles and training outside this issue. |
| PO.3 (PO.3.1-PO.3.3), toolchain selection, deployment, and configuration | PARTIAL | Pinned Actions, pinned Go/linter versions, CI, Dependabot, and .golangci.yml provide a managed toolchain. Security analyzers are disabled; add required gosec and govulncheck checks. |
| PO.4 (PO.4.1-PO.4.2), criteria and processes for security checks | PARTIAL | .github/workflows/ci.yml defines test, lint, integration, Rust guard, and race gates. Explicit pass/fail criteria for security findings and exceptions are not documented; define severity and suppression policy with the new job. |
| PO.5 (PO.5.1-PO.5.2), secure development environments and endpoints | NOT_ASSESSED | Hosted-runner and developer-endpoint hardening are not established by repository files. Organization owners should verify environment separation and endpoint controls. |
| PS.1 (PS.1.1), protect all forms of code from unauthorized access and tampering | PARTIAL | Workflows generally use scoped permissions, pinned Actions, and active rulesets are observable. Exact access grants and enforcement effectiveness are inaccessible; maintain least privilege and review rule coverage. |
| PS.2 (PS.2.1), provide release-integrity verification information | PARTIAL | scripts/build-release.sh:47-61 emits SHA-256 checksums and release assets include them. Add cryptographic artifact/container attestations and verification instructions. |
| PS.3 (PS.3.1-PS.3.2), archive releases and provenance | PARTIAL | GitHub releases, checksums, and SPDX/CycloneDX SBOMs are produced by .github/workflows/release.md:312-360. Provenance attestation is not generated in the inspected workflows; add and retain it with releases. |
| PW.1 (PW.1.1-PW.1.3), design to meet security requirements and mitigate risk | PARTIAL | docs/aw-security.md documents adversaries, trust layers, assumptions, and failure boundaries. Traceability from requirements/threats to implementation tests is not explicit; add links for high-risk controls. |
| PW.2 (PW.2.1), review designs against security requirements and risk | HUMAN_REVIEW_REQUIRED | Architecture/security documentation exists, and automated review rules are observable, but qualified design-review evidence and decisions are not available. Confirm human security review for material trust-boundary changes. |
| PW.4 (PW.4.1-PW.4.3), acquire and maintain well-secured components | PARTIAL | go.mod, go.sum, weekly Dependabot, go mod verify, pinned Actions, and Docker download checksums provide solid controls. Add vulnerability-aware Go analysis to complement update automation. |
| PW.5 (PW.5.1-PW.5.2), create source using secure coding practices | PARTIAL | CONTRIBUTING.md documents build/test/lint flows and CI checks formatting and general static analysis. Security-specific coding checks are disabled; establish narrowly scoped secure-code rules. |
| PW.6 (PW.6.1-PW.6.2), configure compilation and build for security | PARTIAL | Toolchains and container bases are version/digest pinned; release builds use -trimpath and stripped binaries. Build provenance and a documented obfuscation decision are absent; attest release builds and record the risk decision. |
| PW.7 (PW.7.1-PW.7.2), review/analyze code for vulnerabilities and requirements | GAP_FOUND | .golangci.yml:13-19 explicitly disables gosec and errcheck; required CI only invokes general make lint. Add required security-focused static analysis with regression evidence and controlled suppressions. |
| PW.8 (PW.8.1-PW.8.3), test executable code for vulnerabilities | PARTIAL | CI runs unit, integration, Rust guard, and race tests (ci.yml:39-196). DAST/fuzz/security-test scope and results are not fully repository-observable; risk-assess exposed parsers and trust boundaries and add focused fuzz/security tests where justified. |
| PW.9 (PW.9.1-PW.9.2), define and implement secure defaults | PARTIAL | Configuration schemas, guard tests, sample configuration, and the documented layered security model are evidence of deliberate defaults. Deployment-specific default validation remains a human review item. |
| RV.1 (RV.1.1-RV.1.3), identify and confirm vulnerabilities | PARTIAL | SECURITY.md:9-29 defines coordinated reporting and Dependabot monitors two ecosystems. Add govulncheck and define triage ownership; private reports and alert contents were intentionally not inspected or disclosed. |
| RV.2 (RV.2.1-RV.2.2), assess, prioritize, and remediate vulnerabilities | HUMAN_REVIEW_REQUIRED | Public reporting intake exists, but severity methodology, remediation SLAs, exception handling, and confidential case records are not repository-verifiable. Security owners should confirm these controls. |
| RV.3 (RV.3.1-RV.3.4), analyze root causes and improve the SDLC | HUMAN_REVIEW_REQUIRED | No repository-level root-cause and recurrence-review contract was identified, but absence of private incident evidence is not a failure. Define a lightweight trigger and template for qualifying security incidents. |
GAP_FOUND is limited to PW.7 because the applicable task and explicit contradictory configuration are both observable. Organization-only uncertainty is marked NOT_ASSESSED or HUMAN_REVIEW_REQUIRED, not scored as failure.
<b>Prioritized improvement backlog</b>
- Require Go security analysis — PW.7.2, RV.1.2 (high risk reduction, high confidence, low/medium effort). Evidence:
gosecanderrcheckare disabled and nogovulncheckinvocation is present. Owner surface: maintainers with security reviewer. Dependencies: agree on severity threshold and narrow suppression policy. Acceptance: required PR job runs pinnedgosecandgovulncheck; a regression fixture proves detection; clean code passes; suppressions include rationale and scope. - Attest release binaries and container images — PS.2.1, PS.3.2, PW.6.1 (high risk reduction, high confidence, medium effort). Evidence: checksums and SBOMs exist, but no attestation-generation step is present; declared release
id-token/attestationspermissions are not used for an attestation. Owner surface: release engineering and security. Dependencies: choose supported GitHub artifact/container attestation and verification path. Acceptance: every tagged binary and image digest has verifiable provenance bound to the workflow, commit, and subject digest; verification commands are documented; least-privilege permissions are retained. - Define security-check and recurrence criteria — PO.4.1-PO.4.2, RV.3.1-RV.3.4 (medium risk reduction, medium confidence, low effort). Evidence: broad CI and coordinated disclosure exist, but security severity/suppression and root-cause triggers are not documented. Owner surface: security owner and maintainers. Dependencies: human decision on thresholds and confidential record location. Acceptance: a short policy identifies blocking levels, exception approver/expiry, root-cause trigger, recurrence search, and how resulting tests or tool changes are tracked without exposing confidential vulnerability details.
These are alternatives-compatible outcomes, not a prescribed SDLC. Recommendation 1 should precede 2 and 3 because it closes the only verified practice-level gap with the smallest implementation surface.
<b>Strengths and human-review questions</b>
Strengths worth preserving:
- SHA-pinned Actions in CI and digest/checksum-pinned build inputs.
- Unit, integration, race, and Rust guard tests with read-scoped CI permissions.
- Explicit threat assumptions and layered trust boundaries in
docs/aw-security.md. - Coordinated vulnerability reporting, weekly dependency updates, and dual-format release SBOMs.
- Release checksums and multiple immutable release/container identifiers.
Human reviewers should decide:
- Which security finding severities block merge, and who can approve a time-bounded exception?
- Which trust-boundary changes require a qualified security design review?
- Are release artifacts and container images already attested by an external organization-level system not visible here?
- Where are confidential triage, remediation SLA, training, and root-cause records maintained, and how is completion evidenced without disclosing sensitive details?
cao: githubnext/gh-cao, correlation: 39769937507-871
Generated by 🛡️ Dev Practices / NIST SSDF · pi · gpt56 · 63.4 AIC · ⌖ 13.3 AIC · ⊞ 12.9K · ◷
- expires on Nov 21, 2026, 11:33 AM UTC
- 主要语言
- JavaScript
- 星标
- 8
- 派生
- 5
- 平均合并
- 2 小时 7 分钟
- 30 天内合并 PR
- 847
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
githubnext/gh-cao 的其他 Issue
-
repo-assist repo-assist:issue-triage
难度 2/5 1-3 小时 新手友好度 66/100
githubnext/gh-cao#19642 ·
维护者通常 1 天内回复
-
agentic-workflows self-care self-care:reactive-ui-expert
难度 1/5 1 小时以内 新手友好度 65/100
githubnext/gh-cao#19591 ·
维护者通常 1 天内回复
-
software-development-practices software-development-practices:nist-ssdf
难度 2/5 1-3 小时 新手友好度 70/100
githubnext/gh-cao#19534 ·
维护者通常 1 天内回复
-
cao-evolution cao-evolution:compiler-security
难度 2/5 1-3 小时 新手友好度 65/100
githubnext/gh-cao#19373 ·
维护者通常 1 天内回复
-
self-care self-care:dashboard-review
难度 2/5 1-3 小时 新手友好度 82/100
githubnext/gh-cao#18518 ·
维护者通常 1 天内回复
查看 githubnext/gh-cao 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
awesome-dsh-plugin/awesome-dsh-plugin#9184 ·
维护者通常 1 天内回复
-
Cloudredirect未关闭
难度 1/5 1 小时以内 新手友好度 70/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
NanmiCoder/dsh-agent-teams#277 ·
维护者通常 1 天内回复
-
[ordering-review] workshop order graph: 1 confirmed ordering problem, 3 cycles are false positives未关闭
难度 2/5 1-3 小时 新手友好度 78/100
githubnext/gh-aw-workshop#4943 ·
维护者通常 1 天内回复