Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[software-development-practices:nist-ssdf] github/gh-aw-threat-detection repository guidance

オープン 初心者向け
#19,534 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
70/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
github-actions, go
領域
ci-cd, security

調査の方向性

Makefile と .github/workflows/ci.yml を読み、既存の security-scan コマンドと現在の CI ジョブを比較してください。pull request と main で固定バージョンの gosec と govulncheck を実行し、検出結果があればチェックを失敗させる CI ジョブを追加してください。文書化されているローカルと CI のコマンドを一致するように更新し、その後、両方のツールが実行され、対処可能な問題が見つかった場合に失敗することを確認してください。

索引モデルが issue の本文から書いたものです。

説明

software-development-practices software-development-practices:nist-ssdf

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: Makefile defines security-scan (gosec plus govulncheck), but .github/workflows/ci.yml runs only go 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.yml publishes 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>
  1. 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: Makefile pins and runs gosec v2.23.0 and govulncheck v1.1.4; .github/workflows/ci.yml does 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 and main run both tools with pinned versions; actionable findings fail the check; exceptions are documented and reviewed; DEVGUIDE and CI use the same command.
  2. Attach component and build provenance to releases — SSDF PS.3.1, PS.3.2, PW.4.4. Evidence: checksums are generated and validated, and make sbom exists, 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.
  3. 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: read in 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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

githubnext/gh-cao のほかの issue

githubnext/gh-cao の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。