Skip to content

build(ci): ignore unreachable transitive starlette CVEs (trivy + pip-audit)#130

Merged
spashii merged 1 commit into
mainfrom
sam/trivyignore-starlette-cves
Jun 28, 2026
Merged

build(ci): ignore unreachable transitive starlette CVEs (trivy + pip-audit)#130
spashii merged 1 commit into
mainfrom
sam/trivyignore-starlette-cves

Conversation

@spashii

@spashii spashii commented Jun 24, 2026

Copy link
Copy Markdown
Member

What

Adds CVE-2026-48818 and CVE-2026-54283 (starlette HIGH) to .trivyignore with rationale.

Why

A trivy DB update started flagging starlette 0.52.1 with two HIGH CVEs, failing the container scan on every open PR — including docs-only PRs (#124, #125, #127, #128) and blocking the merge queue entirely.

starlette is a transitive dependency (via google-adk's optional FastAPI dev-server). Sam imports no starlette and exposes no ASGI/FastAPI app — its only HTTP surface (/healthz, /github/webhook) runs on aiohttp, and the GitHub edge proxy is a separate Cloud Function. Both CVE paths (StaticFiles SSRF; starlette request handling) are unreachable.

A direct bump isn't clean: starlette is capped by google-adk 1.34.0's fastapi pin. Ignored with rationale (same pattern as the existing gh/krb5 entries); to be dropped when google-adk bumps its floor.

Unblocks

All 6 stuck PRs, and the next deploy of main to Cloud Run.

@spashii
spashii enabled auto-merge June 24, 2026 14:56
…audit)

A trivy DB update started flagging starlette 0.52.1 with HIGH CVEs, and
pip-audit independently flags the same package by its GHSA IDs — failing the
container scan AND the Python CVE scan on every PR, blocking the merge queue.

starlette is a transitive dep of google-adk's FastAPI dev-server; Sam imports
no starlette and exposes no ASGI app (its HTTP surface is aiohttp). Both CVE
paths are unreachable. A direct bump is blocked by google-adk 1.34.0's
starlette<1 cap, so ignore in both scanners with rationale (matching the
existing PYSEC-2026-161 starlette entry). Re-evaluate when google-adk bumps.

  .trivyignore     += CVE-2026-48818, CVE-2026-54283
  .pipauditignore  += GHSA-wqp7-x3pw-xc5r, -x746-7m8f-x49c, -82w8-qh3p-5jfq, -jp82-jpqv-5vv3

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@spashii
spashii force-pushed the sam/trivyignore-starlette-cves branch from 1e1e2bb to 9a0ddef Compare June 24, 2026 15:00
@spashii spashii changed the title build(ci): ignore unreachable transitive starlette CVEs in trivy scan build(ci): ignore unreachable transitive starlette CVEs (trivy + pip-audit) Jun 24, 2026
@spashii
spashii disabled auto-merge June 28, 2026 18:14
@spashii
spashii merged commit 2f06f10 into main Jun 28, 2026
2 checks passed
@spashii
spashii deleted the sam/trivyignore-starlette-cves branch June 28, 2026 18:14
spashii added a commit that referenced this pull request Jul 14, 2026
…oot CVE (#143)

## What broke

Every PR branch went CI-red yesterday (#138#142 all fail the trivy
step; the older green PRs just ran their checks before the CVEs
published). Two causes:

1. **curl CVE-2026-5773 / CVE-2026-6276** — Debian shipped the fix
(`deb13u4`) but the image stays on `deb13u3`: `apt-get upgrade -y` only
runs at layer-build time, and `cache-from: type=gha` keeps serving the
cached apt layer. The dockerfile's own comment history (gh
CVE-2026-48501) shows this trap has bitten before.
2. **CVE-2026-39822** — Go stdlib `os.Root` symlink following inside
`/usr/bin/gh` (built with Go 1.26.4, fixed in 1.26.5). Same family as
the eight gh Go-stdlib CVEs already in `.trivyignore`; Sam runs gh
against repos it cloned itself, not attacker-controlled trees.

## The fix

- New `USER root → apt-get update && upgrade → USER sam` layer **below
the source COPY**, so it busts on every commit build and picks up
security patches, while the expensive layers above stay cached. Known
edge documented in the comment: re-running CI on a bit-identical branch
still hits the cache; merging main forces the refresh.
- `CVE-2026-39822` added to the gh block in `.trivyignore` with
rationale.

## Merge order

**Merge this first**, then update the red branches from main (#138,
#139, #140, #141, #142) — same unblock shape as June's #130.

Found during the 2026-07-14 follow-up to the monthly maintenance pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: sam-dembrane <sam-dembrane@sam2ks-MacBook-Pro.local>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant