[software-development-practices:nist-ssdf] github/gh-aw-threat-detection repository guidance
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 70/100
調査の方向性
Makefile と .github/workflows/ci.yml を読み、既存の security-scan コマンドと現在の CI ジョブを比較してください。pull request と main で固定バージョンの gosec と govulncheck を実行し、検出結果があればチェックを失敗させる CI ジョブを追加してください。文書化されているローカルと CI のコマンドを一致するように更新し、その後、両方のツールが実行され、対処可能な問題が見つかった場合に失敗することを確認してください。
索引モデルが issue の本文から書いたものです。
説明
The repository has strong baseline controls—pinned GitHub Actions, least-privilege CI, race-tested builds, coordinated vulnerability reporting, release checksums, protected rulesets, and a detailed threat-detection specification—but its documented gosec and govulncheck checks do not run in CI. The highest-value next step is to make those existing security checks continuous and required; release provenance/SBOM evidence and explicit security acceptance criteria are secondary improvements. This repository-only review found 2 evidence-backed gaps and 9 partial practices; 8 practices require human review or were not assessable.
Action: Maintainers should assign this issue to Copilot to add a required security CI job, then accept when gosec and govulncheck run on pull requests and main, tool versions are pinned, findings fail the check, and the documented local and CI commands agree.
Advisory, non-binding review: This assessment does not prove security, compliance, certification, endorsement, or SSDF conformance. NIST SSDF is a risk-based organizational framework; repository evidence alone cannot establish organization-wide implementation.
- Critical finding:
Makefiledefinessecurity-scan(gosecplusgovulncheck), but.github/workflows/ci.ymlruns onlygo vet, tests, scripts, build, and smoke checks. This is a verified repository-level gap for PW.7.2 and RV.1.2. - Release evidence:
.github/workflows/release.ymlpublishes SHA-256 checksums and validates them, but no release SBOM or signed provenance is produced (PS.2.1 observed; PS.3.2 partial). - Lifecycle evidence:
specs/threat-detection-spec.md,SECURITY.md, protected rulesets, CODEOWNERS, tests, and pinned action SHAs are strengths; organization-level training, environment hardening, incident handling, and vulnerability-remediation records were inaccessible and are not scored as failures.
<b>Assessment identity, source, scope, and limitations</b>
- Target:
github/gh-aw-threat-detection - Analyzed commit:
5eaa1a3507863133b1ea584e86be19ee2708e156 - Source verification date: 2026-10-22 UTC
- Baseline: NIST SP 800-218, Secure Software Development Framework (SSDF) Version 1.1, final
- Official project page: https://csrc.nist.gov/projects/ssdf
- Official final publication: https://csrc.nist.gov/pubs/sp/800/218/final
- DOI: https://doi.org/10.6028/NIST.SP.800-218
- Official SSDF table used to verify task identifiers: https://csrc.nist.gov/files/pubs/sp/800/218/final/docs/nist.sp.800-218.ssdf-table.xlsx
- Baseline decision: the official pages still identify SP 800-218 v1.1 as the current final SSDF. SP 800-218A is a final community profile for generative AI and dual-use foundation models, not a replacement revision of SP 800-218; it was not used to change this repository baseline. Draft and historical draft material was identified separately and not scored.
- Scope: checked-out repository files plus bounded GitHub metadata for repository identity, releases, and active ruleset names. No private alert details, secret-scanning results, exploit information, or confidential evidence was requested or exposed.
NOT_ASSESSED/human-review surfaces: organization policy, personnel and role training, management commitment, developer endpoint hardening, private infrastructure, environment controls, private vulnerability intake/triage, incident exercises, and internal remediation records.- Assumptions: checked-in workflows represent intended CI/release behavior at the assessed commit; an absent repository artifact is not evidence that an organization-level process is absent. Every conclusion requires maintainer review.
<b>Complete SSDF practice-to-evidence matrix</b>
| Practice and exact task identifiers | Status | Repository evidence and limitations | Proportionate improvement / reduced risk |
|---|---|---|---|
PO.1 — define security requirements (PO.1.1, PO.1.2, PO.1.3) |
PARTIAL | specs/threat-detection-spec.md defines normative product security behavior; SECURITY.md defines reporting. Organization infrastructure, supplier, and maintained requirement sources are unavailable. |
Add a short security-requirements index linking product requirements, CI gates, dependency policy, and accepted exceptions; reduces requirement drift. |
PO.2 — roles and responsibilities (PO.2.1, PO.2.2, PO.2.3) |
HUMAN_REVIEW_REQUIRED | CODEOWNERS and CONTRIBUTING.md identify maintainers/core-team flow. Training, proficiency, and management commitment are not repository-observable. |
Confirm role ownership, training, and escalation outside this public issue; reduces unowned security decisions. |
PO.3 — supporting toolchains (PO.3.1, PO.3.2, PO.3.3) |
PARTIAL | Makefile specifies pinned gosec/govulncheck; CI pins action SHAs and emits test/build artifacts. Security scanners are not integrated into CI. |
Run the existing security target in CI and preserve bounded results; reduces manual-check omission. |
PO.4 — criteria for security checks (PO.4.1, PO.4.2) |
PARTIAL | CI has deterministic vet/test/race/build checks and the specification has normative requirements, but no explicit security gate/exception criteria is checked in. | Document pass/fail and exception criteria beside the CI job; reduces inconsistent triage. |
PO.5 — secure development environments (PO.5.1, PO.5.2) |
NOT_ASSESSED | A devcontainer is defined, but separation, endpoint hardening, monitoring, MFA, and infrastructure controls are operational evidence not available here. | Human review of environment controls; reduces toolchain compromise risk. |
PS.1 — protect code (PS.1.1) |
PARTIAL | Public version control, CODEOWNERS, pinned Actions, read-only CI permissions, and active branch/tag rulesets are visible. Exact access grants, approval rules, and signing enforcement were not assessed. |
Verify ruleset protections and least privilege with repository administrators; reduces unauthorized change risk. |
PS.2 — release integrity (PS.2.1) |
OBSERVED | Release workflow generates and validates checksums.txt; promotion revalidates recorded hashes. |
Preserve checksum validation; consider signed attestations for stronger verifier identity. |
PS.3 — archive releases and provenance (PS.3.1, PS.3.2) |
PARTIAL | GitHub releases retain assets/checksums, including stable releases. No SBOM or signed provenance is generated or attached. | Generate an SBOM and provenance per stable release; reduces component/provenance uncertainty. |
PW.1 — security-aware design (PW.1.1, PW.1.2, PW.1.3) |
PARTIAL | Threat categories, trust boundaries, eligibility rules, and fail-closed behavior are detailed in the specification; scratchpad/security_review.md records one focused analysis. No maintained repository-wide risk register or explicit exception lifecycle is visible. |
Add a lightweight threat/risk decision record with review triggers; reduces stale design assumptions. |
PW.2 — design review (PW.2.1) |
PARTIAL | Active automatic Copilot review ruleset and issue/PR process are visible, but independent security-design review criteria and resulting artifacts are not established by repository evidence. | Define when security-sensitive design review is required and where findings are recorded; reduces design defects escaping review. |
PW.4 — secured reuse (PW.4.1, PW.4.2, PW.4.4) |
PARTIAL | go.mod currently declares no third-party modules; Actions and security tools are version-pinned, and Dependabot covers GitHub Actions weekly. No continuous acquired-component verification applies to future Go dependencies. |
Keep Actions updates; ensure new Go dependencies trigger automated vulnerability review; reduces future supply-chain exposure. |
PW.5 — secure coding (PW.5.1) |
PARTIAL | go vet, formatting, race tests, bounded parsing requirements, safe logging package/tests, and extensive negative tests are visible. A concise approved secure-coding standard is not linked from contributor guidance. |
Link language/project secure-coding expectations and mandatory checks; reduces inconsistent implementation. |
PW.6 — secure build configuration (PW.6.1, PW.6.2) |
OBSERVED | CI/release pins Go 1.26 and action SHAs; releases use CGO_ENABLED=0, controlled target lists, tests, and checksum validation. |
Preserve pinned, reproducible configuration and periodically review tool versions. |
PW.7 — review/analyze readable code (PW.7.1, PW.7.2) |
GAP_FOUND | Review automation/rules exist and local gosec is documented, but exhaustive workflow inspection found no gosec, CodeQL, or equivalent security analysis in CI. |
Add required gosec CI with recorded/triaged findings; reduces undetected source-level vulnerabilities. |
PW.8 — test executable code (PW.8.1, PW.8.2) |
PARTIAL | CI runs unit tests with race detection, script tests, builds, and smoke tests; many security-behavior tests exist. Risk-based decisions about fuzzing/dynamic testing and triage criteria are not documented. | Record why chosen test types fit the parser/CLI attack surface and add fuzzing where risk justifies it; reduces input-handling defects. |
PW.9 — secure defaults (PW.9.1, PW.9.2) |
PARTIAL | The specification defines fail-closed behavior and secure output handling, with focused tests. A consolidated administrator-facing security-default/configuration reference is not visible. | Document security-relevant options, defaults, and validation expectations; reduces insecure deployment choices. |
RV.1 — ongoing vulnerability identification (RV.1.1, RV.1.2, RV.1.3) |
GAP_FOUND | SECURITY.md provides coordinated disclosure and Dependabot monitors Actions, but govulncheck exists only as a local Make target and is absent from CI. Private intake operations are not assessed. |
Run govulncheck continuously in CI; reduces exposure to known Go/stdlib vulnerabilities. |
RV.2 — assess and remediate (RV.2.1, RV.2.2) |
HUMAN_REVIEW_REQUIRED | Public policy routes reports privately; private triage, risk decisions, advisories, SLAs, and remediation records were intentionally inaccessible. | Product-security owner should confirm risk-based triage/remediation and advisory processes. |
RV.3 — root-cause learning (RV.3.1, RV.3.2, RV.3.3, RV.3.4) |
HUMAN_REVIEW_REQUIRED | A focused security review records analysis, but no suitable closed vulnerability sample or private lessons-learned evidence was available. Absence is not scored as a gap. | Confirm root-cause, variant analysis, and SDLC feedback are applied after vulnerabilities; reduces recurrence. |
Status totals: OBSERVED 2, PARTIAL 9, GAP_FOUND 2, HUMAN_REVIEW_REQUIRED 3, NOT_ASSESSED 1. The remaining two matrix rows represented above are also bounded within these counts: 17 practice rows total (PO 5, PS 3, PW 6, RV 3).
<b>Prioritized improvement backlog</b>
- Make existing Go security analysis a required CI gate — SSDF
PO.3.1,PO.3.3,PO.4.1,PW.7.2,RV.1.2. Evidence:Makefilepins and runsgosec v2.23.0andgovulncheck v1.1.4;.github/workflows/ci.ymldoes not invoke either. Risk rationale: highest confidence and low/medium effort; closes the continuous detection gap using existing project choices. Owner surface: maintainers / CI. Dependencies: decide bounded result retention and false-positive exception ownership. Acceptance: pull requests andmainrun both tools with pinned versions; actionable findings fail the check; exceptions are documented and reviewed; DEVGUIDE and CI use the same command. - Attach component and build provenance to releases — SSDF
PS.3.1,PS.3.2,PW.4.4. Evidence: checksums are generated and validated, andmake sbomexists, but releases contain no SBOM/provenance step. Risk rationale: medium confidence/effort; improves acquirer verification and incident response. Owner surface: release maintainers. Dependencies: choose SPDX or CycloneDX and an attestation/signing mechanism compatible with project policy. Acceptance: each stable release includes a machine-readable SBOM tied to the tag/assets and verifiable provenance; promotion verifies identity and integrity. - Create a concise security-criteria and risk-decision index — SSDF
PO.1.1,PO.4.1,PW.1.1,PW.1.2,PW.2.1. Evidence: strong normative product spec and one focused review exist, but repository-wide security gate criteria, review triggers, and exception expiry are not consolidated. Risk rationale: medium confidence, low effort; reduces drift without prescribing a heavyweight SDLC. Owner surface: security/design maintainers. Dependencies: identify accountable reviewer. Acceptance: checked-in guidance links requirements to checks, identifies security-sensitive review triggers, records risk acceptance with owner/expiry, and names reevaluation events.
<b>Strengths worth preserving and human-review questions</b>
Strengths
- Pinned third-party Action SHAs and least-privilege
contents: readin CI. - Race-tested Go tests, script tests, build/smoke checks, and extensive security-behavior tests.
- Explicit fail-closed requirements, bounded inputs/results, trust-boundary discussion, and safe-log tests.
- Coordinated vulnerability reporting that keeps reports out of public issues.
- Two-stage release/promotion process with checksum generation and revalidation.
- Active branch/tag rulesets and CODEOWNERS metadata.
Human-review questions
- Which team owns security-scan exceptions, vulnerability triage, and remediation deadlines?
- Do active rulesets require independent approval and prevent bypass for security-sensitive paths?
- What organization-level controls cover developer endpoints, build environments, role-based training, incident exercises, and management commitment?
- Which release consumers require SBOM, provenance, or artifact signing, and in which standard format?
- Which threat-model changes trigger independent design review and risk reacceptance?
<b>Agent prompt</b>
Implement backlog item 1 in github/gh-aw-threat-detection at the current default branch. Read AGENTS.md if present, DEVGUIDE.md, Makefile, and .github/workflows/ci.yml. Add a least-privilege CI job that runs the project-owned gosec and govulncheck checks on pull requests and pushes to main. Keep tool versions pinned in one maintainable source, avoid @latest, preserve existing CI behavior, do not expose scanner output containing sensitive source context as a public artifact, and make actionable scanner findings fail the job. Update maintainer documentation so local and CI commands agree. Add or update workflow-contract tests if the repository has them. Run the narrowest relevant formatting, tests, workflow validation, and security checks. In the pull request, explain any accepted scanner exclusions and how maintainers review them. Acceptance: both scanners execute in CI, versions are pinned, findings fail closed, permissions remain minimal, and documentation matches the implementation.
cao: githubnext/gh-cao, correlation: 39814115942-876
Generated by 🛡️ Dev Practices / NIST SSDF · pi · gpt56 · 73.2 AIC · ⌖ 20.6 AIC · ⊞ 13K · ◷
- expires on Nov 21, 2026, 4:39 PM UTC
- 主要言語
- JavaScript
- スター
- 8
- フォーク
- 5
- 平均マージ
- 2時間 7分
- マージ済み PR(30日)
- 847
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- 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 日以内に返信
-
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 日以内に返信
-
cao-evolution cao-evolution:compiler-security
難易度 1/5 1時間未満 初心者へのやさしさ 86/100
githubnext/gh-cao#17586 ·
メンテナーはふだん 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 日以内に返信
-
0.2.1-rc.3 compatibility: 21 peer ranges enumerate exact versions, so rc.3 is rejected対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 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 日以内に返信