githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] Security findings: gh-aw compiler validation failed (actionlint, zizmor, poutine/runner-guard, grype, grant)

Closed
#8,054 0 comments 0 reactions 0 assignees View on GitHub
aw-doctor aw-doctor:compiler-security
Dominant language
JavaScript
Stars
3
Forks
1
Avg merge
49m
Merged PRs (30d)
837

Description

Compiling all 47 gh-aw workflow sources in `githubnext/gh-aw-cao` (47 lock files) failed the compiler's full validation suite (exit code 1). Findings span 6 categories: 2 actionlint expression errors, 1 poutine/runner-guard permissions warning, 1,647 zizmor lint findings (34 Critical/217 High severity among them concentrated in `github-app` and `secrets-outside-env` rules), 786 Medium container CVEs plus 34 Critical/217 High CVEs from grype across 9 scanned images (curl, OpenSSL, bind9-libs, and others), and 1,250 license-policy violations from grant across all 9 images. Highest-severity supported finding: **Critical** CVE-2026-19931/CVE-2026-18924 (curl/libcurl remote issues) in the `gh-aw-firewall/api-proxy` and `cli-proxy` images, and CVE-2026-63073 (libcrypto3/libssl3) in `gh-aw-firewall/squid`.

**Action:** Assign this issue to Copilot using **Agent prompt** below; review its pull request and merge only after the full compiler and security scan passes.

Failure details

- **Target repository**: `githubnext/gh-aw-cao`
- **Compiler exit code**: `1`
- **Workflow sources checked**: `47`
- **Generated lock files checked**: `47`
- **Result**: `findings`

| Tool | Workflow/Image | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint | `self-care-dashboard-performance.lock.yml:2265`, `self-care-pages-health.lock.yml:2171` | error | `safe-outputs-app-token` step output referenced but not defined in the `needs` object type | Regenerate lock files from the `.md` sources after fixing the step-output reference/step id used for the GitHub App token in these two workflow sources; do not hand-edit the `.lock.yml` |
| zizmor | 45 workflows (e.g. `aw-doctor.lock.yml`, `self-care-dashboard-performance.lock.yml`) | High | `github-app`: dangerous use of GitHub App tokens (`actions/create-github-app-token`) | Review each flagged job for token scope/exposure per zizmor's `github-app` guidance; scope tokens narrowly and avoid passing them across job boundaries |
| zizmor | 402 findings across most workflows | Medium | `secrets-outside-env`: secrets referenced without a dedicated `environment:` | Move secret-consuming steps into jobs with an explicit `environment:` block where feasible |
| zizmor | 29 workflows | Medium | `artipacked`: credential persistence through uploaded Actions artifacts | Ensure checkout/credential steps don't upload `.git` or token-bearing paths as artifacts |
| zizmor | 271 findings | Low | `undocumented-permissions`: job `permissions:` blocks lack explanatory comments | Add comments explaining why each permission scope is required |
| zizmor | 26 workflows | Low | `adhoc-packages`: unpinned ad-hoc package installs | Pin package versions/hashes in install steps |
| poutine / runner-guard | `agentic_commands.yml:1` | Medium (RGS-005) | Job triggered by untrusted event (e.g. `issue_comment`) declares write-level `permissions:` | Reduce to read-only permissions for the untrusted-trigger job, or gate the write step behind an authorization check |
| grype | `gh-aw-firewall/api-proxy`, `gh-aw-firewall/cli-proxy` | Critical | CVE-2026-19931, CVE-2026-18924: `curl`/`libcurl@8.21.0-r0` (fix: 8.22.0-r0) | Bump base image or apk-upgrade `curl`/`libcurl` to 8.22.0-r0+ in the firewall proxy image build |
| grype | `gh-aw-firewall/squid` | Critical | CVE-2026-63073: `libcrypto3`/`libssl3@3.5.7-r0` (fix: 3.5.8-r0) | Upgrade OpenSSL packages to 3.5.8-r0+ in the squid image build |
| grype | 7 of 9 scanned images | High (217), Medium (786) | Numerous CVEs (e.g. `bind9-libs` CVEs in `gh-aw-firewall/agent`, `tar`/`ip-address` GHSAs in `api-proxy`/`cli-proxy`) | Rebuild/update base images (`gh-aw-firewall/*:0.28.14`, `gh-aw-mcpg:v0.4.20`, `gh-aw-node`, `github-mcp-server:v1.12.1`) to pull current package fixes; these are upstream image concerns, not workflow-source concerns |
| grant | all 9 scanned images | error (policy) | 1,250 license-policy violations (530 unique packages) across GPL-2.0/3.0, LGPL, MPL, and other flagged licenses in base-image and npm dependencies | Review `grant`'s configured license allow-list; either adjust policy to accept common transitively-bundled OS/npm licenses already vetted for this project, or replace/avoid packages carrying disallowed licenses. This is a policy-tuning task, not a workflow-source fix — flag for maintainer decision if the allow-list itself needs updating |

Note: container CVE and license findings are properties of upstream pinned images (`gh-aw-firewall`, `gh-aw-mcpg`, `gh-aw-node`, `github-mcp-server`, `alpine`, `node:lts-alpine`), not of this repository's workflow `.md` sources. They cannot be fixed by editing `.github/workflows/*.md`; they require upstream image updates or `.poutine.yml`/grant policy decisions and should be routed to the image maintainers or a policy-tuning task if not already tracked upstream.

Agent prompt

1. Assign this issue to Copilot.
2. Configure its MCP client to launch `gh aw mcp-server` over stdio from the target repository, then give it the prompt below. Require the server's `fix` and `compile` tools; never allow direct edits to generated `.lock.yml` files.
3. Review the resulting pull request and require the same full compiler and security scan to pass before merge. If a finding needs human action, require the agent to stop and explain it.

**Agent prompt**

Fix the reported gh-aw compiler and security findings in this repository. Change only `.github/workflows/*.md` sources and directly related 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 clean. Review generated lock-file diffs, preserve existing behavior, and stop with a concise explanation if a finding cannot be fixed safely. In particular:
- Fix the two actionlint `safe-outputs-app-token` expression errors in `self-care-dashboard-performance.md` and `self-care-pages-health.md`.
- Address the `github-app` (High), `secrets-outside-env` (Medium), `artipacked` (Medium), `undocumented-permissions` (Low), and `adhoc-packages` (Low) zizmor findings where they can be safely resolved in workflow source.
- Reduce write-level permissions on the untrusted-trigger job in `agentic_commands.yml` flagged by runner-guard rule RGS-005.
- Do NOT attempt to patch container-image CVEs or license findings from grype/grant by editing workflow sources — those require upstream image bumps or `.poutine.yml`/grant policy changes; stop and report them as out of scope for a `.md`-only fix.

Raw evidence

Compiler summary:
```
Target: githubnext/gh-aw-cao
Exit code: 1
Workflow sources: 47
Compiled locks: 47
```

Actionlint summary: 2 issue(s), 2 expression error(s) (see table above for locations).

Zizmor summary: 1,647 total findings — 34 Critical, 217 High, 786 Medium, 271 Low, 288 Informational (Critical/High counts above reflect grype CVEs found within the same combined scan pass; zizmor's own rule-based findings top out at High severity: 45 `github-app`, 402 `secrets-outside-env`, 29 `artipacked`, 271 `undocumented-permissions`, 26 `adhoc-packages`, 9 `template-injection`, 3 `obfuscation`).

Grype summary: 9 container images scanned (`gh-aw-firewall/agent`, `gh-aw-firewall/api-proxy`, `gh-aw-firewall/cli-proxy`, `gh-aw-firewall/squid`, `gh-aw-mcpg`, `gh-aw-node`, `github-mcp-server`, `alpine`, `node:lts-alpine`) — 34 Critical, 217 High, 786 Medium CVE findings.

Grant summary: `grant failed — strict mode: grant found 1250 license policy finding(s) in container images` across 530 unique packages.

Poutine/runner-guard: 1 medium finding (RGS-005) in `agentic_commands.yml`.

An untracked `.poutine.yml` config file exists in the target checkout (not committed) that acknowledges the `untrusted_checkout_exec` rule for the `activation` job; this is expected local scanner configuration, not a finding.

No token-like or credential-like values were present in the scanned output; none were redacted.

Control plane context

- Correlation ID: `34430842944-129`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: https://github.com/githubnext/gh-aw-cao/actions/runs/34430842944

> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34431164652) · copilot · auto · 38.4 AIC · ⌖ 10.3 AIC · ⊞ 12.4K · [◷](https://github.com/search?q=repo%3Agithubnext%2Fgh-aw-cao+is%3Aissue+%22gh-aw-workflow-call-id%3A+githubnext%2Fgh-aw-cao%2Faw-maintenance-compiler-security%22&type=issues)
> - [x] expires on Sep 24, 2026, 3:10 AM UTC

Contributor guide

Open the contributing guide

Research direction

Start with self-care-dashboard-performance.md, self-care-pages-health.md, and agentic_commands.yml, then review the referenced generated lock-file locations and compiler scan output. Run the gh-aw compiler with its full validation suite, using generated diffs to verify source changes. Done means workflow-source findings are resolved and the remaining image CVE and license findings are clearly reported as upstream or policy work.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions
Domain
ci-cd, devops, security
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.