githubnext / githubnext/gh-aw-cao

[cao-evolution:compiler-security] gh-aw compiler security scan found 3,552 zizmor findings, 34 critical CVEs, and 1,246 license violations

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

Description

The `gh-aw` compiler exited with code **1** while validating all 65 workflow sources / 65 compiled lock files in `githubnext/gh-aw-cao`. Findings span 6 categories: **95 actionlint issues** (92 shellcheck, 3 expression-type errors), **3,552 zizmor findings** (64 High `github-app` dangerous-token-use, plus Medium/Low/Info), **1 runner-guard** medium taint finding, **34 Critical / 173 High** grype container CVEs across all 9 scanned images, and **1,246 grant license-policy violations** (the failure that set the non-zero exit). Highest severity: **High** — `zizmor`'s `github-app` audit (64 occurrences) plus 34 **Critical** CVEs in container images (curl/libcurl, OpenSSL, glibc). **Action:** assign this issue to Copilot to remediate lockable findings (permission comments, shellcheck quoting, container base-image bumps) via the agent prompt below; license-policy and unfixable base-image CVEs need maintainer review of `.poutine.yml`/image pinning policy.

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

| Tool | Workflow/Image | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint (shellcheck) | 2 lock files (`dashboard-authoring-corpus`, `eu-cra-compliance-article-14-reporting-readiness`) | unknown | SC1003: unescaped single quote in heredoc example string (`echo 'This is how it'\''s done'`) | Escape the quote in the source `.md` script block, recompile |
| actionlint (expression) | `optimization-token-optimizer.lock.yml:627` | unknown | property `token_eligible` not defined in referenced needs-outputs object | Fix expression/output name in source workflow |
| actionlint (expression) | `self-care-dashboard-performance.lock.yml:2353`, `self-care-pages-health.lock.yml:2259` | unknown | property `safe-outputs-app-token` not defined in referenced job-outputs object | Fix expression/output name in source workflow |
| zizmor | 54 lock files | High | `github-app`: dangerous use of GitHub App tokens (`actions/create-github-app-token`) — 64 occurrences | Review token scope/handling per zizmor guidance; add ack or narrow usage |
| zizmor | many lock files | Medium | `secrets-outside-env`: secrets referenced outside `env:` — 2,629 occurrences | Move secret references into `env:` blocks in source workflows |
| zizmor | many lock files | Medium | `artipacked`: potential credential persistence in artifacts — 39 occurrences | Review affected steps for credential leakage into artifacts |
| zizmor | many lock files | Low | `undocumented-permissions`: permissions blocks without explanatory comments — 386 occurrences | Add comments explaining each permission scope in source `.md` |
| zizmor | many lock files | Low | `adhoc-packages`: ad hoc package installs — 30 occurrences | Pin/vendor package installs per zizmor guidance |
| zizmor | few lock files | Low/Info | `obfuscation` (9), `template-injection` (11) | Review flagged expressions for injection risk |
| zizmor | all lock files | Informational | `anonymous-definition`: jobs without `name:` — 392 occurrences | Add `name:` to job/workflow definitions (cosmetic) |
| runner-guard | `agentic_commands.yml` | Medium (RGS-005) | Write-level permissions declared alongside untrusted-trigger metadata comment | Confirm this is a false positive on the metadata comment line or restrict permissions |
| grype | `ghcr.io/github/gh-aw-firewall/squid:0.28.16` | Critical | CVE-2026-63073, CVE-2026-75803 (openssl/libssl3/libcrypto3), CVE-2026-18924, CVE-2026-19931 (curl/libcurl) — 10 findings | Bump base image / rebuild with patched OpenSSL & curl |
| grype | `ghcr.io/github/gh-aw-firewall/api-proxy:0.28.16`, `cli-proxy:0.28.16` | Critical | CVE-2026-18924, CVE-2026-19931 (curl/libcurl) — 4 findings each | Bump base image / rebuild with patched curl |
| grype | `alpine:latest`, `node:lts-alpine` | Critical | CVE-2026-63073, CVE-2026-75803 (libssl3/libcrypto3) — 4 findings each | Bump Alpine base image |
| grype | `ghcr.io/github/gh-aw-mcpg:v0.4.21` | Critical | CVE-2026-63073, CVE-2026-75803 (libssl3/libcrypto3) — 4 findings | Bump base image |
| grype | `ghcr.io/github/gh-aw-node` | Critical | CVE-2026-18924, CVE-2026-19931 (libcurl) — 2 findings | Bump base image |
| grype | `ghcr.io/github/github-mcp-server:v1.12.1` | Critical | CVE-2026-5450 (glibc), CVE-2026-75803 (libssl3) — 2 findings | Requires upstream image update |
| grype | all 9 images | High | 173 High-severity CVEs (curl, OpenSSL, brace-expansion, bind9-libs, etc.) | Bump/patch affected base images and bundled npm deps |
| grant | all 9 container images | error (strict-mode failure) | 1,246 license-policy violations (GPL-2.0-only, LGPL variants, Artistic-2.0, etc. in base-image packages) | Review `.poutine.yml`/grant policy exceptions vs. actual license obligations for vendored base-image components; this is the finding that set the non-zero compiler exit |

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

**Summary (`summary.txt`)**
```
Target: githubnext/gh-aw-cao
Exit code: 1
Workflow sources: 65
Compiled locks: 65
```

**Actionlint summary**
```
✓ Checked 65 workflow(s)
⚠ Found 95 issue(s) (95 error(s))
Issues by type:
• shellcheck: 92
• expression: 3
```

**Zizmor findings by severity**
```
High: 64
Medium: 3,068 (secrets-outside-env 2,629; artipacked 39; [remaining medium subtotal not separately itemized])
Low: 427 (undocumented-permissions 386; adhoc-packages 30; obfuscation 9; template-injection 2)
Informational: 401 (anonymous-definition 392; template-injection 9)
```

**runner-guard**
```
.github/workflows/agentic_commands.yml:1:1: warning: [medium] RGS-005: Excessive Permissions on Untrusted Trigger
```

**grype summary (severity counts across 9 images)**
```
Critical: 34
High: 173
Medium: 322
Low: 54
Negligible: 27
```

**grant (final line)**
```
✗ grant failed
strict mode: grant found 1246 license policy finding(s) in container images
```

**Diff observed in target checkout (unrelated to compiler findings, informational only)**
```
M .github/workflows/agentic-auto-upgrade.yml (schedule cron drift)
M 15 *.lock.yml files (line 2 metadata/timestamp diffs)
?? .poutine.yml (untracked local scanner config)
```

Control plane context

- **Correlation ID**: 35074954923-76
- **Central repository**: githubnext/gh-aw-cao
- **Control plane run URL**: https://github.com/githubnext/gh-aw-cao/actions/runs/35074954923

> Generated by [:shield: CAO Evolution / AW Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/35074954923) · copilot · auto · 80.3 AIC · ⌖ 17 AIC · ⊞ 12.7K · [◷](https://github.com/search?q=repo%3Agithubnext%2Fgh-aw-cao+is%3Aissue+%22gh-aw-workflow-call-id%3A+githubnext%2Fgh-aw-cao%2Fcao-evolution-compiler-security%22&type=issues)
> - [x] expires on Sep 30, 2026, 9:03 AM UTC

Contributor guide

Open the contributing guide

Research direction

Start with the 65 .github/workflows/*.md sources and run the gh aw MCP server's compile and fix tools against githubnext/gh-aw-cao. Review the generated lock-file diffs, .poutine.yml policy, and the listed actionlint, zizmor, runner-guard, grant, grype, and syft findings. Done means the full strict compiler and security scan passes without editing generated .lock.yml files.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, github, 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
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.