githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] Compiler & security scan findings: 2 actionlint errors, 49 High zizmor github-app, 1250 grant license violations, 34 Critical gr

Closed
#9,742 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

Compilation of all 51 gh-aw workflows in `githubnext/gh-aw-cao` finished with **exit code 1** (findings, not clean). 2 actionlint expression errors, 49 High-severity zizmor `github-app` findings across all 51 lock files, 1250 grant license-policy violations across all 9 scanned container images, and 34 Critical / 172 High grype CVEs in base images (curl/openssl/libcrypto stack). Poutine and yamllint reported clean; runner-guard flagged one Medium finding on a command-trigger workflow. Highest-severity supported finding: grype Critical CVEs (fixed upstream) in `alpine`, `api-proxy`, `cli-proxy`, and `squid` images.

**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**: `51`
- **Generated lock files checked**: `51`
- **Result**: `findings`

| Tool | Workflow / Image | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint | `self-care-dashboard-performance.lock.yml`, `self-care-pages-health.lock.yml` | error | `safe-outputs-app-token` step output referenced but not defined in that job's step context | Fix the compiler template/source generating this step reference so the output exists before use, then recompile |
| zizmor | all 51 `.lock.yml` files (41 distinct workflows with 49 occurrences) | High | `github-app`: dangerous use of GitHub App tokens | Review GitHub App token handling per zizmor guidance; scope token permissions and avoid unsafe propagation |
| zizmor | multiple lock files | Medium | `secrets-outside-env` (418 occurrences): secrets referenced without a dedicated `env:` block | Move secret references into a dedicated `env:` mapping per zizmor guidance |
| zizmor | multiple lock files | Medium | `anonymous-definition` (302), `undocumented-permissions` (294): permissions/step blocks lack explanatory comments or named definitions | Add explanatory comments to `permissions:` blocks; name anonymous definitions |
| zizmor | multiple lock files | Medium | `artipacked` (29 occurrences, e.g. `dashboard-authoring-corpus.lock.yml`, `dependabot-release-train-updater.lock.yml`): credential persistence through Actions artifacts | Avoid persisting credentials in uploaded artifacts per zizmor guidance |
| zizmor | multiple lock files | Low | `adhoc-packages` (26), `obfuscation` (3) | Low-severity hygiene findings; address opportunistically |
| zizmor | `pr-reviewer.lock.yml`, `self-care-primer-brand-checker.lock.yml`, `self-care.lock.yml` | Informational | `template-injection` (9 occurrences): code injection via template expansion | Review templated expressions for injection risk |
| runner-guard | `.github/workflows/agentic_commands.yml` | Medium (RGS-005) | Job specifies write-level permissions while triggered by an untrusted command-comment event | Reduce permissions to read-only or gate write scopes behind explicit approval for this trigger |
| grype | `alpine:latest`, `gh-aw-firewall/api-proxy`, `gh-aw-firewall/cli-proxy`, `gh-aw-firewall/squid` | Critical | 5 unique CVEs (CVE-2026-18924, CVE-2026-19931, CVE-2026-5450, CVE-2026-63073, CVE-2026-75803) in `curl`/`libcurl`/`libcrypto3`/`libssl3`/`openssl` | Bump base images to versions with vendor fixes (e.g. Alpine `libcrypto3`/`libssl3` 3.5.8-r0, `curl`/`libcurl` 8.22.0-r0) |
| grype | all 9 scanned images | High (172), Medium (328), Low (54), Negligible (27), Unknown (18) | Numerous upstream package CVEs (e.g. `bind9-libs`, `perl`) | Track via routine base-image updates; prioritize Critical/High first |
| grant | all 9 scanned images | error | 1250 license policy violations (e.g. GPL-2.0 in `sysvinit-utils`, `hostname`, `apk-tools`, `ssl_client`) across npm and OS packages | Review `grant` license policy for these images; either allow-list known-acceptable licenses or replace flagged packages |
| shellcheck | 12 grader scripts (e.g. `.github/graders/*-operational-value.sh`) | warning (SC2034) | Env vars (`WORKFLOW_NAME`, `SOURCE_PATH`, etc.) appear unused | Verify each variable is actually consumed or export/remove it |
| yamllint / poutine | — | clean | No findings | None |

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.

Raw evidence

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

**Actionlint errors (both occurrences, same root cause):**
```
.github/workflows/self-care-dashboard-performance.lock.yml:2304:26: error: [expression] property "safe-outputs-app-token" is not defined in object type {download-agent-output: {...}; setup: {...}; setup-agent-output-env: {...}}
.github/workflows/self-care-pages-health.lock.yml:2210:26: error: [expression] property "safe-outputs-app-token" is not defined in object type {download-agent-output: {...}; setup: {...}; setup-agent-output-env: {...}}
```

**zizmor severity totals:** 49 High, 447 Medium, 323 Low/Informational (rule breakdown: `secrets-outside-env` 418, `anonymous-definition` 302, `undocumented-permissions` 294, `github-app` 49, `artipacked` 29, `adhoc-packages` 26, `template-injection` 9, `obfuscation` 3)

**grype severity totals (across 9 images):** 34 Critical, 172 High, 328 Medium, 54 Low, 27 Negligible, 18 Unknown

**grant:** 1250 license-policy violations across 9 images (`gh-aw-firewall/agent` 381, `api-proxy` 185, `cli-proxy` 178, `gh-aw-mcpg` 80, `gh-aw-node` 176, `github-mcp-server` 7, `squid` 63, `alpine` 16, `node:lts-alpine` 164)

**runner-guard finding (full text):**
```
.github/workflows/agentic_commands.yml:1:1: warning: [medium] RGS-005: Excessive Permissions on Untrusted Trigger - A job specifies `permissions:` with write-level access ... but the workflow is triggered by `pull_request_target`, `issue_comment`, `pull_request_review_comment`, or another event that can be initiated by external users.
```

**Untracked file present in target checkout after compile:** `.poutine.yml` (new poutine scanner config, not committed).

**Uncompiled workflows/images inventory:** 51 workflow sources, 51 compiled lock files, 9 container images scanned (syft/grype/grant), 2905 shellcheck run-step resources scanned.

No token-like or credential-like values were present in the tool output.

Control plane context

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

> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34595831886) · copilot · auto · 43.6 AIC · ⌖ 9.4 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 25, 2026, 12:08 PM UTC

Contributor guide

Open the contributing guide

Research direction

Start with the workflow sources under .github/workflows/*.md and the gh-aw MCP server's fix and compile tools; do not edit generated .lock.yml files. Recompile with the listed validation and security scans, including actionlint, zizmor, runner-guard, grant, and grype. Done means the compiler and full scan pass, or any unsafe finding is clearly reported for human action.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.