githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] gh-aw compiler security scan: findings across actionlint, zizmor, runner-guard, grype, grant

Closed
#10,482 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

Compiled all 52 gh-aw workflow sources and 52 generated lock files in `githubnext/gh-aw-cao` (compiler exit code 1, run not clean). The full validation/lint/container/security-scanner suite reported findings in every category: 78 actionlint issues (76 shellcheck-in-script, 2 expression-type errors), 1153 zizmor findings (51 High, 453 Medium, 332 Low, 317 Informational — the 51 High are all `github-app` dangerous-token-use, one per workflow), 1 runner-guard Medium finding (excessive write permissions on an untrusted-trigger workflow), 198 unique CVEs across 9 scanned container images (34 Critical / 172 High / 313 Medium / 54 Low / 27 Negligible via grype), and a `grant` license-policy failure with 1250 findings (many are plain MIT/ISC/BSD/Apache-2.0 packages misclassified by the current policy, but it also includes real GPL-2.0-only components in `node:lts-alpine`). Highest-severity supported finding: Critical CVEs (e.g. CVE-2026-19931/CVE-2026-18924 in curl/libcurl, CVE-2026-63073/CVE-2026-75803 in openssl/libssl3/libcrypto3, CVE-2026-5450 in libc6) present in the `gh-aw-firewall`, `gh-aw-mcpg`, `gh-aw-node`, `github-mcp-server`, `alpine`, and `node:lts-alpine` container images used by these workflows. Recommended next action: assign the remediation issue to Copilot to fix workflow-source-fixable items (github-app token usage, secrets-outside-env, runner-guard permissions, shellcheck/actionlint issues) via `gh aw fix`/`gh aw compile`, and separately track base-image updates and the `grant` license-policy tuning, which require maintainer decisions outside workflow source edits.

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

| Tool | Workflow / Image | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint | 76 workflows (shellcheck-in-script) | unknown | SC2034 unused-variable warnings in embedded grader/step scripts (e.g. `WORKFLOW_NAME`, `SOURCE_PATH` in `graders/*.sh`) | Export or remove unused shell variables in the referenced scripts |
| actionlint | `self-care-dashboard-performance.lock.yml`, `self-care-pages-health.lock.yml` | error (expression) | `safe-outputs-app-token` not defined on job-outputs object type | Fix upstream workflow-source template that emits this step output/reference; recompile |
| zizmor | 51 workflows (one per lock file, e.g. `aw-doctor.lock.yml:1537`) | High | `github-app`: dangerous use of GitHub App tokens (`actions/create-github-app-token`) | Review token scoping/exposure per zizmor guidance; move token creation behind narrower permissions or a dedicated environment |
| zizmor | 51 workflows | Medium | `secrets-outside-env`: secrets referenced without a dedicated environment (422 occurrences total) | Move secret-referencing jobs/steps into a dedicated `environment:` block |
| zizmor | 51 workflows | Low | `undocumented-permissions` (303), `adhoc-packages` (26), `artipacked` (31) | Add explanatory comments to `permissions:` blocks; pin/vendor ad-hoc package installs; review artifact-packing patterns |
| zizmor | multiple | Informational | `anonymous-definition` (308), `obfuscation` (3) | Add explicit `name:` fields to workflow/action definitions |
| runner-guard | `agentic_commands.yml` | Medium (RGS-005) | Job declares write-level `permissions:` while triggered by an untrusted event (`pull_request_target`/`issue_comment`-class trigger) | Reduce to read-only permissions for this job or move privileged steps behind an authorization gate |
| grype | `gh-aw-firewall/api-proxy`, `gh-aw-firewall/cli-proxy`, `gh-aw-firewall/squid` | Critical | CVE-2026-19931, CVE-2026-18924 in curl/libcurl@8.21.0-r0 (fix: 8.22.0-r0) | Bump base image / rebuild with patched Alpine packages |
| grype | `gh-aw-firewall/squid`, `gh-aw-mcpg`, `alpine:latest`, `node:lts-alpine` | Critical | CVE-2026-63073, CVE-2026-75803 in libcrypto3/libssl3/openssl@3.5.7-r0 (fix: 3.5.8-r0) | Bump base image to a build including OpenSSL 3.5.8-r0 |
| grype | `github-mcp-server:v1.12.1` | Critical | CVE-2026-5450 (libc6), CVE-2026-75803 (libssl3) on Debian base | Track upstream `github-mcp-server` image update; no source-level fix available |
| grype | 9 images total | High/Medium/Low/Negligible | 198 unique CVEs across all scanned images (172 High, 313 Medium, 54 Low, 27 Negligible) | See raw evidence; prioritize Critical/High first via image bumps |
| grant | `node:lts-alpine` (and other images) | error | 1250 license-policy findings, dominated by common MIT/ISC/BSD/Apache-2.0/BlueOak-1.0.0 packages plus real `libapk`/`ssl_client` (GPL-2.0-only) | Maintainer should review/tune the `grant` license allow-list policy; confirm GPL-2.0-only components are acceptable or excluded from the shipped image |

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: 52
Compiled locks: 52
```

Actionlint: 78 issues (76 shellcheck, 2 expression). Zizmor: 1153 findings across 52 files (51 High / 453 Medium / 332 Low / 317 Informational). Runner-guard: 1 Medium finding (RGS-005 in `agentic_commands.yml`). Syft: scanned 9 container images (567/193/347/63/288/177/41/16/165 packages respectively). Grype: 198 unique CVEs (34 Critical / 172 High / 313 Medium / 54 Low / 27 Negligible). Grant: strict-mode license-policy failure with 1250 findings.

Full raw tool output (`report.txt`, 755 KB / 10,639 lines) is retained in the workflow's evidence artifact for this run; no token-like or credential-like values were observed in the scanned excerpts above.

Control plane context

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

> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34723672905) · copilot · auto · 47 AIC · ⌖ 9.44 AIC · ⊞ 12.5K · [◷](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 26, 2026, 11:05 PM UTC

Contributor guide

Open the contributing guide

Research direction

Start with the retained report.txt evidence and the 52 .github/workflows/*.md sources; do not edit generated .lock.yml files. Inspect graders/*.sh, agentic_commands.yml, and the self-care workflow sources, then run gh aw compile with the listed validation and security scanners. Done means workflow-source findings are resolved and the full scan passes, with maintainer decisions documented for image CVEs and grant policy findings.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.