githubnext / githubnext/gh-aw-cao

[aw-doctor:compiler-security] Compiler and security scan findings: 2 actionlint errors, critical container CVEs, license policy failures

Closed
#8,826 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 47 GitHub Agentic Workflows in `githubnext/gh-aw-cao` failed (exit code 1) due to 2 actionlint expression errors, plus the security-scanner suite reported 34 critical / 130 high container CVEs across 8 base images, 1,250 license-policy violations (`grant` failed in strict mode), and zizmor findings (45 high `github-app` token risks, 402 medium `secrets-outside-env`, 29 medium `artipacked`, 271 low `undocumented-permissions`, 26 low `adhoc-packages`, 3 low `obfuscation`). Highest-severity supported finding: **Critical container CVEs** (e.g. CVE-2026-19931/CVE-2026-18924 in curl/libcurl, CVE-2026-63073/CVE-2026-75803 in openssl/libssl3/libcrypto3) across `alpine:latest`, `node:lts-alpine`, `github-mcp-server:v1.12.1`, and all `gh-aw-firewall` proxy images. Recommended next action: patch the two actionlint expression errors first (blocking compile), then rebuild/upgrade the flagged container base images and address the `grant` license-policy failure.

**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:2302`, `self-care-pages-health.lock.yml:2208` | error | `steps.safe-outputs-app-token.outputs.token` referenced but step id not defined in job's step set (expression type-check failure) | Fix the `.md` source generating these two workflows so the `safe-outputs-app-token` step is declared before use, then recompile |
| grype | `alpine:latest`, `node:lts-alpine`, `ghcr.io/github/gh-aw-firewall/{api-proxy,cli-proxy,squid}:0.28.14`, `ghcr.io/github/gh-aw-mcpg:v0.4.20`, `ghcr.io/github/gh-aw-node`, `ghcr.io/github/github-mcp-server:v1.12.1` | Critical (34 total) | CVE-2026-19931/CVE-2026-18924 (curl/libcurl), CVE-2026-63073/CVE-2026-75803 (openssl/libssl3/libcrypto3), CVE-2026-5450 (libc6) | Bump base images / pinned digests to patched releases (fixes available per-CVE, e.g. curl 8.22.0-r0, openssl 3.5.8-r0) |
| grype | same images as above | High (130 total) | Additional High-severity CVEs bundled with the same package upgrades | Same image/package bumps resolve most High findings alongside Critical ones |
| grant | 9 container images | error (strict mode failure) | 1,250 license-policy violations across `node:lts-alpine` and other images (many MIT/Apache-2.0/ISC/BlueOak packages flagged by current allow-list) | Review and update the `grant` license policy allow-list, or replace/slim images to remove disallowed transitive packages |
| zizmor | 45 workflow `.lock.yml` files (e.g. `uk-ai-advisory.lock.yml:1393`) | High | `github-app`: dangerous use of GitHub App tokens (`actions/create-github-app-token`) — flagged pattern is shared across the `control.md` template | Review token-scoping/dry-run guard usage in the shared control template; confirm mitigations are in place or add zizmor suppressions with justification |
| zizmor | 45 workflow `.lock.yml` files | Medium (402) | `secrets-outside-env`: secrets referenced without a dedicated `environment:` | Move secret-consuming steps into a job/step with an explicit `environment:` block where feasible |
| zizmor | multiple `.lock.yml` files | Medium (29) | `artipacked`: credential persistence through GitHub Actions artifacts | Ensure checkout/token steps don't persist credentials into uploaded artifacts (`persist-credentials: false`) |
| zizmor | multiple `.lock.yml` files | Low (271) | `undocumented-permissions`: job `permissions:` blocks without explanatory comments | Add comments justifying each granted permission scope |
| zizmor | multiple `.lock.yml` files | Low (26) | `adhoc-packages`: ad-hoc package installs (e.g. `npm install -g @earendil-works/pi-coding-agent`) | Pin/vendor installs through a controlled setup step or lockfile |
| zizmor | few `.lock.yml` files | Low (3) | `obfuscation`: potentially obfuscated workflow content | Manually review flagged steps for unintended obfuscation |
| runner-guard | `agentic_commands.yml` | Medium (RGS-005) | Excessive permissions (write-level) on a workflow triggered by an untrusted event context | Confirm trigger context is safe or reduce granted permissions to read-only where possible |

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

Actionlint summary: 2 issues found (2 errors, both `expression` type: `safe-outputs-app-token` step undefined).

Zizmor severity totals: 34 Critical (container CVEs, reported separately by grype), 217 High (45 `github-app` + grype High subset), 788 Medium (402 `secrets-outside-env` + 29 `artipacked` + others), 354 Low (271 `undocumented-permissions` + 26 `adhoc-packages` + 3 `obfuscation` + others).

Grype: 34 Critical CVEs, 130 High CVEs across 9 scanned container images (syft SBOMs generated for each: `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:latest`, `node:lts-alpine`).

Grant: strict mode failed with 1,250 license-policy findings, largest volume from `node:lts-alpine` transitive npm dependencies (MIT/Apache-2.0/ISC/BlueOak-1.0.0 licenses flagged by current policy).

Note: `git-status.txt` from the compiler run shows one untracked file, `.poutine.yml`, created during the scan; no other repository state changes were recorded (`diff-stat.txt` empty).

Control plane context

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

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

Contributor guide

Open the contributing guide

Research direction

Start with the .github/workflows/*.md sources that generate self-care-dashboard-performance.lock.yml and self-care-pages-health.lock.yml, then run the gh aw MCP server's compile and fix tools. Review control.md and agentic_commands.yml for the shared security findings, and inspect generated lock-file diffs without editing them. Done means strict compilation and the listed actionlint, security, policy, and scanning checks pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, github-actions, markdown, yaml
Domain
build-system, 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.