chore(agent): //agent:security:image red on 14 fixable HIGH/CRITICAL — bundled gh/uv/npm binaries, hidden behind the masking short-circuit
Maintainers usually reply within 1 day
@scottschreckengaust is already working on this.
Since Sep 15, 2026.
- #910 by @scottschreckengaust — open
Assessment
This issue has not been assessed yet.
Description
Summary
mise run security — the task the pre-push hook runs (hooks:pre-push:security) — has a
failing leg that nobody has seen, because the aggregate stops at the first failure and
security:sast:masking (4th of 8) fails first. Running the legs individually exposes it:
MISE_EXPERIMENTAL=1 mise //agent:security → rc=1, at its security:image step. bandit
passes ("No issues identified"). Trivy reports 14 HIGH/CRITICAL fixable vulnerabilities, none
of them in this repo's own source, and none in the Debian base (debian 13.7 → 0 findings).
Measured 2026-09-15 on fix/879-insecure-object-assign @ a382fca2 (a merge of main
25330c72), mise 2026.9.9, trivy 0.70.0. That branch's diff vs main is two files, both under
cdk/ — zero files under agent/ or any Dockerfile — so the image inputs are byte-identical
to main and this is a main-state finding, not a PR regression.
Scanner invocation (from agent/mise.toml):
docker build --build-arg TARGETPLATFORM=linux/arm64 -f Dockerfile -t bgagent-local:latest ..
trivy image --scanners vuln --ignore-unfixed --ignorefile .trivyignore --severity HIGH,CRITICAL --exit-code 1 bgagent-local:latest
Findings, grouped by what actually ships them
| # | Target | Type | Provenance |
|---|---|---|---|
| 9 | usr/local/bin/gh |
gobinary | agent/Dockerfile:2 ARG GH_VERSION=2.93.0, built from source in the gh-builder stage (line 27) |
| 1 | usr/local/bin/uv |
rustbinary | agent/Dockerfile:99 COPY --from=ghcr.io/astral-sh/uv:0.11.14@sha256:1025398… |
| 4 | usr/lib/node_modules/npm/** |
node-pkg | agent/Dockerfile:89 npm install -g npm@latest — npm's own bundled deps |
gh 2.93.0 — vendored Go modules (9)
| Library | Advisory | Installed | Fixed |
|---|---|---|---|
github.com/sigstore/rekor |
CVE-2026-48702 | v1.5.0 | 1.5.2 |
golang.org/x/crypto |
CVE-2026-56854 | v0.52.0 | 0.55.0 |
golang.org/x/mod |
CVE-2026-56864, CVE-2026-56865 | v0.36.0 | 0.40.0 |
golang.org/x/net |
CVE-2026-46600 | v0.55.0 | 0.56.0 |
golang.org/x/text |
CVE-2026-56852 | v0.37.0 | 0.39.0 |
google.golang.org/grpc |
CVE-2026-84304, CVE-2026-84445, GHSA-hrxh-6v49-42gf | v1.81.1 | 1.83.1 / 1.82.2 / 1.82.1 |
uv 0.11.14 (1)
| Library | Advisory | Installed | Fixed |
|---|---|---|---|
quinn-proto |
GHSA-4w2j-m93h-cj5j (remote memory exhaustion, unbounded out-of-order stream reassembly) | 0.11.14 | 0.11.15 |
npm's bundled dependencies (4)
| Package | Advisory | Installed | Fixed |
|---|---|---|---|
brace-expansion |
CVE-2026-14257, CVE-2026-69152 | 5.0.7 | 5.0.8 / 5.0.9 |
ip-address |
CVE-2026-69192 | 10.2.0 | 10.3.1 |
tar |
CVE-2026-73566 | 7.5.19 | 7.5.21 |
Why this has stayed invisible
Three independent reasons, which is why it needs its own issue rather than a note on an existing one:
- Aggregate short-circuit.
mise run securityrunssecurity:secrets→deps→sast→
sast:masking→grype→retire→gh-actions→//agent:security. Whole-repo
sast:maskingis red onmain(6 pre-existing findings, #756/#766), so execution never reaches
the last leg. The practical consequence: "fix the masking findings and pre-push goes green" is
false — the next wall is this one. - CI never runs it on a PR. Per #235,
build.ymlsets
MISE_DISABLE_TOOLS: "aqua:aquasecurity/trivy,grype,semgrep", and image scanning happens only in
the weeklysecurity.ymlcron. So PR checks are 8/8 green with these 14 live. --ignore-unfixedmeans every one of these has a published fix. They are not
wait-for-upstream noise.
Proposed remedies
Per target, because they are three different kinds of problem:
gh— bumpARG GH_VERSIONpast 2.93.0 to a release whosego.modcarries the fixed
golang.org/x/*,grpc, andrekorversions, and confirm by re-scanning rather than by
changelog. Because the binary is compiled from source in-image (go install …@vX), the vendored
set is whatever that tag pins — a version bump is the only lever; there is no separate dep file
to patch.uv— bump the pinned digest to ≥ 0.11.15 (ghcr.io/astral-sh/uv:0.11.15@sha256:…).
Smallest, most mechanical fix of the three.- npm's bundled deps —
npm@latestalready ships them, so there is nothing to bump. The repo
already has a precedent for exactly this atagent/Dockerfile:92
(npm --prefix "${CLAUDE_NPM_ROOT}" update tar minimatch glob cross-spawn picomatchfor the
claude-code tree). Extending that treatment to npm's ownnode_modules, or dropping targeted
.trivyignoreentries with an expiry and a linked upstream issue (the lifecycle #131 asks
for), are the two honest options.
Acceptance criteria
-
MISE_EXPERIMENTAL=1 mise //agent:securityexits 0 onmain. - Any residual suppression lives in
.trivyignorewith a justification, an upstream link, and
an expiry date — not a blanket severity downgrade. - A regression note records that
mise run security's short-circuit hides later legs, so future
"the security gate passes" claims are made leg-by-leg.
Related
- #235 — why PR CI cannot catch this (
MISE_DISABLE_TOOLS+ weekly-only cadence) - #131 — CVE suppression lifecycle (scheduled re-scan of ignore entries)
- #756 / #766 / #542 / #790 — the masking leg that short-circuits ahead of this one
- #722 — pinning the scanner toolchain (trivy 0.70.0 here vs 0.74.0 available; the count can move
with the scanner version, so pin before treating any number as a baseline) - #880 — the PR whose gate run surfaced this
- Dominant language
- TypeScript
- Stars
- 158
- Forks
- 49
- Avg merge
- 3d 23h
- Merged PRs (30d)
- 21
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from aws-samples/sample-autonomous-cloud-coding-agents
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
aws-samples/sample-autonomous-cloud-coding-agents#908 ·
Maintainers usually reply within 1 day
-
bug v1
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
aws-samples/sample-autonomous-cloud-coding-agents#886 ·
Maintainers usually reply within 1 day
-
bug v1
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
aws-samples/sample-autonomous-cloud-coding-agents#861 ·
Maintainers usually reply within 1 day
-
documentation P2 security
Difficulty 2/5 1-2 days Newbie friendliness 74/100
aws-samples/sample-autonomous-cloud-coding-agents#793 ·
Maintainers usually reply within 1 day
-
Docs: How to clear previously set attributes for a blueprintMay be free again @rkumarus-aws claimed this 41 days ago, and no pull request is open. Opendocumentation
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
aws-samples/sample-autonomous-cloud-coding-agents#767 · 2 comments ·
Maintainers usually reply within 1 day
All issues in aws-samples/sample-autonomous-cloud-coding-agents
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Agenta-AI/agenta#7542 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
code quality security
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
homarr-labs/dashboard-icons#2939 ·
Maintainers usually reply within 1 day