[cao-evolution:compiler-security] Compiler security scan: one control.md shellcheck fix; all other findings upstream-owned (gh-aw, container images)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 1/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 62/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- github-actions, javascript, shell
調査の方向性
.github/workflows/shared/control.mdを読み、3行の出力によってshellcheck SC2129が発生するcao_target_read_scopeステップを見つけてください。issueの説明に従って、1つのリダイレクトの下に各行をまとめ、その後workflowをコンパイルし、対象に割り当てられた指摘が解消されたことを確認してください。issueでは、生成されたロックファイルの差分を確認し、マージ前に完全な検証とセキュリティスキャンを再実行することが求められています。
索引モデルが issue の本文から書いたものです。
説明
githubnext/gh-aw-cao compiled cleanly for structure (70/70 workflow sources → 70/70 lock files) but the full gh-aw validation/security suite exited non-zero (exit code 1). Of the ~50,000 lines of tool output, every supported finding traces to the upstream github/gh-aw compiler (generated boilerplate shared by all 70 workflows, including unresolved daily_ai_credits_*/safe-outputs-app-token template properties and compiler-selected container images/CLI installs) or to third-party base images (alpine:latest, Ubuntu/bind9/Python packages in gh-aw-firewall images, golang.org/x/net/Go stdlib CVEs, npm tar/http-cache-semantics advisories) and their licenses. Exactly one target-owned actionable finding exists: a trivial shellcheck style note (SC2129, not a security issue) in the repeated cao_target_read_scope step defined in .github/workflows/shared/control.md, which all 70 workflows import. Grant license-policy evidence is available (.grant.yaml present) and flags upstream image package licenses only — no target license-policy gap. Highest severity among supported tool output is Critical (Go stdlib/golang.org/x/net CVEs in the gh-aw-firewall/agent image), but it is entirely upstream-owned. Recommended next action: apply the one-line shellcheck style cleanup in control.md; no other target remediation is warranted from this run.
Action: Assign this issue to Copilot using Agent prompt below; review its pull request and merge only after rerunning the full compiler and security scan confirms that the target-owned actionable findings are resolved.
Failure details
- Target repository:
githubnext/gh-aw-cao - Compiler exit code:
1 - Workflow sources checked:
70 - Generated lock files checked:
70 - Result:
findings - Grant license-policy evidence:
available - Target-owned actionable findings:
1 - Upstream-owned context findings:
many (deduplicated below)
Findings table
| Tool | Workflow/Image | Owning component/repository | Ownership | Severity | Finding | Target remediation |
|---|---|---|---|---|---|---|
| shellcheck (actionlint) | shared/control.md → all 70 .lock.yml |
githubnext/gh-aw-cao (control.md) |
target-owned actionable | style (SC2129) | cao_target_read_scope step uses 3 sequential >> "$GITHUB_OUTPUT" redirects instead of a single grouped block |
Combine the three echo ... >> "$GITHUB_OUTPUT" lines into { ... } >> "$GITHUB_OUTPUT" in control.md |
| actionlint (expression) | all 70 .lock.yml |
github/gh-aw compiler | upstream-owned context | error | needs.activation.outputs.daily_ai_credits_total/threshold/guardrail_status/exceeded/estimated referenced in env blocks but never declared in the activation job's outputs: map (compiler template/output-wiring bug) |
None — report to github/gh-aw |
| actionlint (expression) | self-care-dashboard-performance.lock.yml, self-care-pages-health.lock.yml |
github/gh-aw compiler | upstream-owned context | error | steps.safe-outputs-app-token.outputs.token referenced but that step id is absent from the generated job |
None — report to github/gh-aw |
| zizmor | all 70 .lock.yml |
github/gh-aw compiler (control.md import + Pi/Copilot engine templates) |
upstream-owned context | Medium | secrets-outside-env (4006), overprovisioned-secrets (862) — compiler-generated auth-fallback expressions in every workflow |
None — report to github/gh-aw |
| zizmor | all 70 .lock.yml |
github/gh-aw compiler | upstream-owned context | Low | undocumented-permissions (416), template-injection (46, Pi/Copilot CLI invocation steps), obfuscation (1058), adhoc-packages (26, compiler-chosen npm install -g @earendil-works/pi-coding-agent / @playwright/cli) |
None — report to github/gh-aw |
| zizmor | several .lock.yml (e.g. dashboard-authoring-corpus, design-decision-gate) |
github/gh-aw compiler (safe-outputs checkout template) | upstream-owned context | Medium | artipacked — generated "Checkout repository (gh-aw default)" step after artifact download |
None — report to github/gh-aw |
| runner-guard | self-care-hosted-health.lock.yml |
githubnext/gh-aw-cao (self-care-hosted-health.md) checking the already-authorized hosted CAO service |
target-owned, but not actionable as a vulnerability | high (RGS-012) | Flags the documented, intentional health-check curl to (cao.githubnext.com/redacted) (an explicitly declared, trusted hosted CAO endpoint) carrying a masked OIDC/read token for a read-only smoke test |
None — expected behavior for this self-care workflow; no change needed |
| runner-guard | self-care-hosted-health.lock.yml |
github/gh-aw compiler (MCP Gateway template) | upstream-owned context | medium (RGS-019) | Generated "Start MCP Gateway" step interpolates a step output in a run: block |
None — report to github/gh-aw |
| runner-guard | agentic_commands.yml |
github/gh-aw compiler (slash-command router codegen) | upstream-owned context | medium (RGS-005) | Generated router file grants write permissions under issue_comment/pull_request_review_comment triggers |
None — report to github/gh-aw |
| grype | alpine:latest, ghcr.io/github/gh-aw-firewall/agent:0.28.44, and 7 other compiler-selected images |
Image publishers / github/gh-aw-firewall / github/gh-aw-mcpg / github/github-mcp-server | upstream-owned context | Critical/High/Medium/Low (277 unique CVE/GHSA IDs; highest: GO-2026-6612, GO-2026-6604 Critical in Go stdlib/golang.org/x/net) |
OS packages, Go stdlib, and npm (tar, http-cache-semantics) vulnerabilities in compiler-pinned runtime/firewall images |
None — report to owning image/component repository |
| grant | same 9 images | Image publishers | upstream-owned context | n/a (license policy) | 178 license-policy findings (e.g. GPL-2.0-only busybox/alpine-baselayout, MPL-2.0 ca-certificates-bundle) against target .grant.yaml's permissive baseline |
None — target's .grant.yaml policy already exists; any policy change is a separate reviewed decision, not an image fix |
Agent prompt
- Assign this issue to Copilot.
- Configure its MCP client to launch
gh aw mcp-serverover stdio from the target repository, then give it the prompt below. Require the server'sfixandcompiletools; never allow direct edits to generated.lock.ymlfiles. - Review the resulting pull request and rerun the same full compiler and security scan before merge. Require the target-owned actionable findings to be resolved; separately retained upstream-owned or unavailable evidence does not authorize target changes. If a target-owned finding needs human action, require the agent to stop and explain it.
Agent prompt
Fix only the target-owned actionable gh-aw compiler and security findings identified in this issue. Change only .github/workflows/*.md sources and directly related target-owned files; never edit generated .lock.yml files. Use the gh-aw MCP server's fix and compile tools, rerunning compilation with strict validation, model checks, actionlint, shellcheck, yamllint, zizmor, poutine, runner-guard, grant, grype, and syft until the target-owned findings are resolved. Review generated lock-file diffs and preserve existing behavior. Do not add or change .grant.yaml unless a separately reviewed target license-policy decision already requires it. Do not rebuild, modify, or make dependency decisions for upstream images or components; leave upstream-owned context unchanged and stop with a concise ownership explanation if the remaining finding cannot be fixed safely in this repository.
Specifically: in .github/workflows/shared/control.md, locate the cao_target_read_scope step (and any other steps matching the same pattern) whose run: block uses three sequential echo "..." >> "$GITHUB_OUTPUT" lines, and combine them into a single grouped redirect, e.g. { echo "owner=$owner"; echo "repository=$repository"; echo "full_name=$owner/$repository"; } >> "$GITHUB_OUTPUT", to resolve shellcheck SC2129 across all 70 compiled workflows.
Raw evidence
- Compiler summary:
Checked 70 workflow(s),Found 486 issue(s) (486 error(s))— 139 shellcheck, 347 expression (alldaily_ai_credits_*/safe-outputs-app-tokentemplate-wiring gaps). - zizmor:
secrets-outside-env×4006,obfuscation×1058,overprovisioned-secrets×862,undocumented-permissions×416,artipacked×49,template-injection×46,adhoc-packages×26 — all Low/Medium, spanning all 70 generated lock files identically (compiler-template origin confirmed: patterns are absent from every checked.mdsource and only appear in generated.lock.yml/agentic_commands.yml). - poutine: no findings (clean).
- runner-guard: 3 findings total —
RGS-012(self-care-hosted-health, expected hosted-CAO health check),RGS-019(self-care-hosted-health MCP Gateway template),RGS-005(agentic_commands.yml router template). - syft: scanned 9 compiler-selected container images (alpine:latest; gh-aw-firewall agent/api-proxy/squid/cli-proxy 0.28.44; gh-aw-mcpg v0.4.29; gh-aw-node; github-mcp-server v1.12.2; node:lts-alpine).
- grype: 277 unique CVE/advisory IDs across those 9 images (19 Critical, 177 High, 515 Medium-weighted rows, 119 Low).
- grant: 178 license-policy violations, entirely within the same 9 upstream images, evaluated against the target's existing
.grant.yaml. - No token-like or credential-like values were present in the reviewed tool output.
Control plane context
- Correlation ID:
38184403022-444 - Central repository:
githubnext/gh-aw-cao - Control plane run: https://github.com/githubnext/gh-aw-cao/actions/runs/38184403022
Generated by 🛡️ CAO Evolution / AW Compiler Security · copilot · auto · 271.6 AIC · ⌖ 12.6 AIC · ⊞ 16.2K · ◷
- expires on Oct 26, 2026, 12:10 AM UTC
- 主要言語
- JavaScript
- スター
- 8
- フォーク
- 5
- 平均マージ
- 2時間 50分
- マージ済み PR(30日)
- 814
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
githubnext/gh-cao のほかの issue
-
agentic-workflows
難易度 1/5 1時間未満 初心者へのやさしさ 68/100
githubnext/gh-cao#20168 ·
メンテナーはふだん 1 日以内に返信
-
agentic-workflows
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
githubnext/gh-cao#20156 ·
メンテナーはふだん 1 日以内に返信
-
agentic-workflows
難易度 1/5 1〜3時間 初心者へのやさしさ 75/100
githubnext/gh-cao#20155 ·
メンテナーはふだん 1 日以内に返信
-
agentic-workflows
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
githubnext/gh-cao#20154 ·
メンテナーはふだん 1 日以内に返信
-
agentic-workflows
難易度 1/5 1〜3時間 初心者へのやさしさ 80/100
githubnext/gh-cao#20153 ·
メンテナーはふだん 1 日以内に返信
githubnext/gh-cao の issue をすべて見る
似ている issue
-
Handle HTTP errors when downloading release binaries対応中かも @mugenkyou が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
neutralinojs/neutralinojs-cli#468 ·
メンテナーはふだん 1 日以内に返信
-
area:ci priority:p0 type:chore
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
lucacasanova/homedeck#2 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
terser/html-minifier-terser#242 ·
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
MustacheCase/zanadir#516 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
stylelint-scss/stylelint-config-standard-scss#297 · コメント 1 件 ·