[uk ai resilience] [uk-ai-resilience] Weekly recent-change risk & resilience review (2026-09-08 to 2026-09-15) #61164
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by UK AI Operational Resilience. A newer discussion is available at Discussion #61377. |
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
Recent-changes-scoped UK AI Open Code Risk & Resilience review of
github/gh-awover the 7-day window since 2026-09-08. 193 commits merged (51 flagged security-signal), 55 pre-existing open security issues, 274 open code-scanning alerts (263 error / 10 warning / 1 note), 0 open secret-scanning alerts.The dominant volume (246 of 274 alerts) is a single systemic pattern — non-deterministic
npm install/uv pip installsteps embedded in compiler-generated.lock.ymlworkflow files — not new logic risk, and best fixed once at thegh aw compiletemplate level rather than per-file. Beyond that noise floor, this week's genuinely new signals are: (1) a release-workflow GitHub App token-minting change that was merged and reverted within the same week without a documented sign-off (already tracked, Tier C); (2) two newgo/allocation-size-overflowCodeQL findings (already tracked, Tier C precedent); (3) a stray 2.3MB compiled Go binary (test_dup_import) committed directly tomainalongside a secret-validation PR, indicating an automation commit-hygiene gap; and (4) a fresh Dockerfile SHA-pinning gap on the repo's own rootDockerfile(distinct from the already-tracked, already-remediatednode:lts-alpinevendored image). No open secret-scanning alerts were found. Overall resilience posture is reasonable — the token-minting incident shows fast, working rollback — but two items lack any open tracking issue and are escalated below.Asset graph summary (recent-change scoped)
Recent-change asset graph
.github/workflows/release*.md/.lock.ymlpkg/workflow/secret_extraction.go(ReplaceSecretsWithEnvVars,ReplaceSecretsWithShellEnvVars), #60267, #60348${{ secrets.* }}expressions are rewritten into env-var references for generated workflow steps; uses backslash/JSON-safe prefixing, no plaintext interpolation foundpkg/workflow/compiler_yaml_ai_execution.go:92,pkg/workflow/mcp_cli_mount.go:378(alloc-overflow, tracked #60875/#60876);pkg/cli/logs_orchestrator_stdin.go:73(useless field assignment, alert #679, untracked);test_dup_importroot (workflow-out-of-context, alert #680, untracked)/Dockerfile(FROM alpine:3.24), alert #940 (fresh, 2026-09-15, untracked)node:lts-alpineimage tracked in container-image-scan issues.github/workflows/*.lock.ymlTier classification table
Tier classification
run:blocks foundgo/allocation-size-overflow(x2, tracked)go/useless-assignment-to-field(#679, untracked)pkg/cli/logs_orchestrator_stdin.go, not exploitable, low urgencytest_dup_import(#680, untracked)/Dockerfilebase image not pinned to digest; reproducibility/supply-chain gap on the repo's own compiler image,security_severity_level: highper ruleControl verification gaps
CODEOWNERSlists 4 named maintainers repo-wide (no path-scoped rules) — coarse but present; no gap specific to this week's changes.APP_IDnot installed) and validation notes (gh aw compile --strictpassed) — strong rollback evidence, but no post-incident sign-off was logged.Risk-scoring table and rationale
AI-aware risk scoring
go/useless-assignment-to-field(#679)Rationale: the stray-binary finding is elevated to High priority despite low exploit potential because it is direct evidence that an automated/agentic commit path bypassed normal build-artifact hygiene — a process-integrity signal the governance guidance treats as higher-value than the payload's own risk. The Dockerfile pinning gap is Medium priority: high detectability and patchability keep it low-effort to close, but it affects the reproducibility of the repo's own published compiler image.
Remediation queue with SLAs
test_dup_importbinary + leftover template artifacts onmain.gitignorerules for compiled test binaries andtmp/scratch files; audit the automation path behind the originating commitDockerfileFROM alpine:3.24unpinned@sha256:<digest>, wire into existing--force-refresh-container-pinsrefresh cadencego/useless-assignment-to-fieldinlogs_orchestrator_stdin.go:73Messagefieldgh aw compiletemplates to pin/lock npm and uv installs at generation time rather than per-fileException register
None raised this cycle. No permanent hidden-repo or scope exceptions requested; all items above are addressed via standard remediation, not concealment.
Operational metrics baseline
pkg/workflow/secret_extraction.go, release workflows).All reactions