githubnext / githubnext/gh-aw-cao

[cao-evolution:compiler-security] gh-aw compiler/security scan findings: 34 Critical + 173 High CVEs, 64 High github-app zizmor findings, 1246 license violations

Closed
#12,186 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

Compiling all 65 GitHub Agentic Workflow sources in `githubnext/gh-aw-cao` at `53dca29` succeeded (65/65 lock files regenerated), but the full validation, lint, container, and security-scanner suite reports **1,919+ findings** across actionlint/shellcheck, zizmor, grype, and grant, so the compiler exited non-zero. Highest-severity supported findings: **34 Critical** (grype container CVEs, e.g. CVE-2026-63073, CVE-2026-75803) and **64 High** zizmor `github-app` findings (dangerous use of GitHub App tokens) repeated across nearly every lock file, plus 173 High grype CVEs and 1,246 grant license-policy violations. No credentials were exposed in this evidence.

**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 |
|------|-------------------|----------|---------|-------------|
| zizmor | All 64 affected `.lock.yml` files (e.g. `cao-evolution.lock.yml`, `self-care.lock.yml`, `repo-assist.lock.yml`) | High | `github-app`: dangerous use of GitHub App tokens | Regenerate tokens through the documented least-privilege pattern; review `docs.zizmor.sh/audits/#github-app` guidance and adjust the shared control workflow that mints these tokens |
| zizmor | Same 64 files, ~2,629 occurrences | Medium | `secrets-outside-env`: secrets referenced without a dedicated `environment:` | Move secret references into a scoped `environment:` block per job |
| zizmor | Same files, ~392 occurrences | Informational | `anonymous-definition`: workflow/job definitions without a `name:` | Add descriptive `name:` fields to jobs (low priority, cosmetic) |
| zizmor | Same files, ~386 occurrences | Low | `undocumented-permissions`: `permissions:` blocks lack explanatory comments | Add short comments explaining each granted permission |
| zizmor | Multiple files, 39 occurrences | Medium | `artipacked`: workflow artifacts may retain credentials | Review artifact upload steps for credential leakage |
| grype | `alpine:latest` | Critical/High | CVE-2026-63073, CVE-2026-75803, CVE-2026-18798, CVE-2026-63076 in `libcrypto3`/`libssl3` 3.5.7-r0 | Bump base image to pick up `libssl3`/`libcrypto3` 3.5.8-r0 |
| grype | `ghcr.io/github/gh-aw-firewall/agent:0.28.16` | High | GHSA-rgw5-rvv9-x895: `brace-expansion@5.0.7` (fix 5.0.9) | Update the pinned firewall/agent image to a version with the patched npm dependency |
| grype | 9 container images total | Critical (34), High (173), Medium (322), Low (54) | CVEs in OS packages (bind9-libs, curl, libexpat1, libpython3.10, php8.1-*, etc.) | Update pinned base/tool images (`gh-aw-firewall/*`, `gh-aw-mcpg`, `gh-aw-node`, `github-mcp-server`, `node:lts-alpine`) to latest patched digests |
| grant | 9 container images | Error (1,246 findings) | License-policy violations (GPL-2.0-only, LGPL variants, custom licenses) across OS packages in every scanned image | Review `grant` license policy configuration; either accept documented exceptions for base-image system packages or replace flagged packages/images |
| actionlint/shellcheck | `dashboard-authoring-corpus.lock.yml`, `eu-cra-compliance*.lock.yml` (16 files), step "Execute Pi CLI" | Error (92 occurrences) | SC1003: unescaped single quote in generated shell snippet (`echo 'This is how it'\''s done'`) | Fix the quoting in the shared "Execute Pi CLI" script source and recompile |
| actionlint | `optimization-token-optimizer.lock.yml:627`, `self-care-dashboard-performance.lock.yml:2353`, `self-care-pages-health.lock.yml:2259` | Error (3 occurrences) | `[expression]` referencing undefined properties (`token_eligible`, `safe-outputs-app-token`) in generated `if:`/output expressions | Fix the shared control template generating these expressions so referenced output/property names match actual step outputs |
| poutine / runner-guard | `agentic_commands.yml` | Medium | RGS-005: excessive permissions (write-level) on an untrusted-trigger workflow | Review permissions granted to jobs triggered by `pull_request_target`/`issue_comment`-style events in this workflow and scope them down |

Uncommitted local repository drift also observed (not part of the scanner findings, informational only): 15 `.lock.yml` files plus `agentic-auto-upgrade.yml` show only a scheduled-cron-time diff (deterministic schedule scattering), and an untracked `.poutine.yml` config file is present in the target checkout.

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

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

Zizmor rule totals (across 65 lock files):
```
2629 warning [Medium] secrets-outside-env
392 info [Informational] anonymous-definition
386 info [Low] undocumented-permissions
64 error [High] github-app
39 warning [Medium] artipacked
30 info [Low] adhoc-packages
9 info [Informational] template-injection
9 info [Low] obfuscation
2 info [Low] template-injection
```

Grype severity totals (9 container images):
```
34 Critical
173 High
322 Medium
54 Low
```

Grant (license scanner): `grant failed — strict mode: grant found 1246 license policy finding(s) in container images`

Poutine/runner-guard: 1 finding — `agentic_commands.yml:1:1 RGS-005 (medium)` — excessive permissions on untrusted trigger.

Diff summary (git-status.txt): 16 files modified (cron schedule scatter only), 1 untracked `.poutine.yml`.

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

Control plane context

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

> Generated by [:shield: CAO Evolution / AW Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/35115587356) · copilot · auto · 57.1 AIC · ⌖ 8.19 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, 3:49 PM UTC

Contributor guide

Open the contributing guide

Research direction

Start in the .github/workflows/*.md sources and the shared control workflow behind the generated .lock.yml files; use the gh aw MCP server's fix and compile tools rather than editing generated files. Re-run the strict compiler and listed security scanners, then review the lock-file diffs. Done means the full validation and security scan passes, or an unfixable finding is clearly documented.

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.