[uk ai resilience] UK AI Open Code Risk & Resilience Governance — 2026-05-27 #35255
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-05-30T16:45:25.490Z.
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Executive Summary
This report applies the UK public-sector AI open-code risk and resilience framework to the
github/gh-awrepository for the 7-day window 2026-05-20 → 2026-05-27. The repository saw 390 commits (107 security-signal) in this period — an extremely high velocity driven by mixed human and AI-agent authorship. The assessment found no Tier A (safe) areas among the six scored surfaces; every high-priority area landed Tier C (restricted pending review) or Tier D (decommission candidate). The single Tier D finding — 263 comment-triggered AI-agent workflows with no actor-authorization guard — is actively growing at +3 findings/day and represents the most exploitable live risk in the repository.Key condition: the static analysis pipeline is operating well as a detection layer (zizmor, poutine, actionlint, runner-guard, CodeQL all run daily), but no findings class currently triggers a merge-blocking gate, meaning critical and high findings accumulate without automated enforcement pressure.
Asset Graph Summary — Recent-Change Scope
pkg/workflow/.github/workflows/pkg/cli/actions/setup/js/unified_timeline.cjsnew + prior fence-escaping gap inrender_template.cjspkg/parser/go.mod / go.sumTop systemic risks this window:
go/unsafe-quotinginawf_helpers.go:140— fleet-wide blast radius on compilation pathgithub-envHigh ondev-hawk.lock.yml— 5 consecutive days unfixed, persistent privilege-escalation pathuntrusted_checkout_exec— 12 findings (poutine + CodeQL dual-flagged), fork-PR code execution in privileged contextTier Classification Table
pkg/workflow/awf_helpers.go:140—go/unsafe-quoting(CodeQL critical)dev-hawk.lock.yml—GITHUB_ENVwrite (zizmor High)untrusted_checkout_exec— 12 findings (poutine + CodeQL)Control Verification Gaps
github-envwrites, missing comment-trigger auth, or invalid permission scopesuntrusted_checkout_exec(12 findings, no remediation);github_action_from_unverified_creator_used(9 workflows); curl-pipe-bash install in 2 workflowsSDLC Gap Detail
The static analysis pipeline (CodeQL, zizmor, poutine, actionlint, runner-guard) runs daily and has strong detection coverage. However, none of the finding classes currently block merges:
github-envHIGH ondev-hawk.lock.yml: open 5+ days,GITHUB_ENVwritten from a step that includesGH_HOSTinjection — maps directly to CWE-454 environment variable poisoningq.lock.yml,ai-moderator.lock.yml,dev-hawk.lock.yml—issue_comment/pull_request_targettriggers withoutauthor_associationguardcopilot-requests: writeinvalid permission scope confirmed insecurity-review.lock.ymlandbrave.lock.yml— schema validation not blocking at mergeRecommended remediation: Promote
github-envHIGH findings to merge-blocking status; add required Actions schema validation blockingcopilot-requests: write; enforceauthor_associationvalidation as a linter rule forissue_comment/pull_request_targettriggers.Ownership Gap Detail
CODEOWNERSpresent but single global rule (4 humans) — no per-directory granularity for.github/workflows/, secret-redaction code, or firewall/gateway integrationDependency Gap Detail
untrusted_checkout_exec(12 poutine findings + CodeQL #588): fork PR content reaches runner execution context with production secrets in scope acrossdependabot-worker,smoke-workflow-call,smoke-workflow-call-with-inputs,dependabot-repair.lock.yml— no remediation commits foundgithub_action_from_unverified_creator_used(9 workflows):agentic-token-audit,dataflow-pr-discussion-dataset,hippo-embed,link-check(×2),mcp-inspector,smoke-codex,super-linter,copilot-setup-stepsunverified_script_exec(2 workflows): curl-pipe-bash install insmoke-codex(trufflehog) andcopilot-setup-steps(install-gh-aw.sh)Secret Exposure Gap Detail
daily-model-inventory(3 findings),visual-regression-checker(2),daily-multi-device-docs-tester,docs-noob-testerRisk-Scoring Table and Rationale
awf_helpers.gounsafe-quotingdev-hawkGITHUB_ENV writeuntrusted_checkout_execScoring Rationale Detail
Comment-Trigger / RGS-004 (Score 23, Tier D)
Any GitHub user can trigger privileged AI agents via comment on any issue — full repo permissions, no actor guard. The dedup-mask pattern (closed historical issues suppress re-raising) means there is no active tracking for 263 findings growing at +3/day. This is a systemic architectural gap, not an isolated misconfiguration. The AI-amplification factor is maximum: the agent executes arbitrary tool calls with production credentials upon comment receipt.
awf_helpers.go:140unsafe-quoting (Score 18, Tier C)CodeQL flags this at
security_severity_level: critical(CWE-78/89/94). The finding sits in the core compilation path — a quote-breakout here propagates to every compiled workflow artifact. Assigned to Copilot bot with no human follow-through in 7 days. Operational fragility is maximum (5): a compilation-path fix or regression affects the entire workflow fleet.dev-hawkGITHUB_ENV write (Score 17, Tier C)GITHUB_ENVwrites with attacker-reachable values (issue_comment trigger) allow environment variable injection: PATH hijack, NODE_OPTIONS RCE, secret variable overwrite. Dev-hawk's AI agent co-runs in this workflow, meaning a successful injection silently redirects agent behavior. Five days without a human owner filing a PR.untrusted_checkout_exec(Score 17, Tier C)Both poutine (12 findings) and CodeQL (#588) flag this independently — not a false positive. Fork PR content executes with production secrets in scope in
dependabot-workerand smoke test variants. Standard remediation (unprivileged/privileged job split) is documented but not applied.MCP Gateway/Firewall runtime (Score 17, Tier C)
Gateway is the sole security boundary in
bypassPermissionsmode; filter failure yields unrestricted MCP tool access for the agent. Three runtime dependency bumps in the same window (firewall v0.25.56, gateway v0.3.20, SDK v1.6.1) without confirmed interaction testing. Unified event timeline adds log injection as a new attack vector.Inline Skills Extraction (Score 16, Tier C)
New surface in
pkg/workflow/compilation path. Adversarial skill content embedded in markdown compiles into the workflow and silently alters agent behavior at runtime. No input sanitization confirmed, no security review on PR #34874. Prompt injection via compiled skill content is invisible to current static analysis.Remediation Queue with SLAs
author_association: MEMBERguard to allissue_commentandpull_request_targettriggers inq.lock.yml,ai-moderator.lock.yml,dev-hawk.lock.ymlawf_helpers.go:140unsafe-quoting)pkg/workflowGITHUB_ENVwrites indev-hawk.md(lock.yml lines 739+1584) per zizmor remediation guidancedev-hawkworkflowdependabot-worker,smoke-workflow-call*,dependabot-repairpkg/workflowbypassPermissionsmode before enabling on untrusted-input workflows.github/workflows/,pkg/workflow/,pkg/cli/gating security-critical paths to human-only reviewers@pelikhan/@lpcox# runner-guard:ignore+ rationalecopilot-requests: write(110 occurrences) with correct scope; remove invalidqueue: max(236 occurrences) from workflow template@pelikhanException Register
issue_commenttrigger or addauthor_association: MEMBERguard; escalate to CISO if not resolved in 24hdev-hawkGITHUB_ENV writeissue_comment, reachable by any GitHub userauthor_association: MEMBEROperational Metrics Baseline
unverified_creatorfindings require policy decisionContinuous Reassessment Recommendations
issue_comment-triggered workflows inq.lock.yml,ai-moderator.lock.yml,dev-hawk.lock.ymlwithauthor_association: MEMBERminimum — Tier D exception EXC-001 expires 2026-05-28.awf_helpers.go:140; fixGITHUB_ENVwrites indev-hawk.md; begin untrusted-checkout workflow split.runner-guard:ignore+ rationale comments.References:
Beta Was this translation helpful? Give feedback.
All reactions