Skip to content

release: develop → main (server v0.12.6 — image CVE remediation) - #195

Merged
dvcdsys merged 2 commits into
mainfrom
develop
Jul 24, 2026
Merged

release: develop → main (server v0.12.6 — image CVE remediation)#195
dvcdsys merged 2 commits into
mainfrom
develop

Conversation

@dvcdsys

@dvcdsys dvcdsys commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Promotion for the server/v0.12.6 tag. Single change set: PR #194, the bundled tunnel-agent CVE remediation.

Contents

Security gate (T9 step 1)

Already run against this exact tree — git diff origin/develop a9ba82a -- server/ doc/ is empty, so the scanned build and this promotion are the same code. Built natively on the x86 host, scanned with the trivy container:

image v0.12.5 (prod) this tree
CPU 3 CRITICAL / 47 HIGH 0 CRITICAL / 5 HIGH
CUDA 3 CRITICAL / 47 HIGH 0 CRITICAL / 5 HIGH

Gate is "no NEW HIGH/CRITICAL vs the prod tag" — this is strictly better on every axis, and cix-server itself now has zero findings. The 5 remaining are upstream vendor lag inside cloudflared and ngrok (both built on Go 1.26.4, needs 1.26.5).

E2E on the built CUDA image

  • Container healthy in ~20s on --gpus all
  • Indexed a project through the real three-phase protocol: 3 files → 10 chunks → 7 symbols, cix status reports ✓ Indexed
  • Semantic search returns the correct chunk for intent-only queries (backoffForAttempt for "how long to wait before trying again"; ValidateToken for "check whether a login is still valid")
  • cix def resolves symbols — tree-sitter extraction intact
  • GPU attribution verified: the container's llama-server pid appears in nvidia-smi --query-compute-apps at 508 MiB during indexing, so embeddings ran on the GPU rather than falling back to CPU
  • cloudflared --version → 2026.7.3 in both images; managed install logs tunnel binary checksum verified
  • Image rebuild reproduced the identical digest

Not included

No versions.js bump — per policy the site may only advertise an already-tagged release, so SERVER_VERSION goes up in a follow-up PR once the images are on Docker Hub.

The two CI guards (a cloudflared pin-freshness workflow, and an image-level scan gated on "no new HIGH/CRITICAL vs the previous release tag") are still outstanding and land after this release.

🤖 Generated with Claude Code

dvcdsys and others added 2 commits July 24, 2026 22:18
…CVEs

The published images carried 3 CRITICAL + 47 HIGH findings (trivy, identical
on both :latest and :v0.12.5-cu128). 46 of the 50 came from a single file:
the bundled `cloudflared`, pinned at 2025.2.1 since Managed Tunnels landed on
2026-05-20 and never bumped. Cloudflare built that release with Go 1.22.10, so
it dragged in stdlib (15), x/crypto 0.31.0 (11), coredns 1.11.3 (9),
x/net 0.26.0 (5) and grpc 1.63.2 (2, incl. CRITICAL CVE-2026-33186).

Neither automated gate could see it: Dependabot's docker ecosystem only tracks
`FROM` images, and the Security workflow runs govulncheck plus Trivy in
FILESYSTEM mode — a binary curl'd during the image build appears in neither.
The distroless bases and the CUDA/llama.cpp layers were clean throughout.

Changes:
  - cloudflared 2025.2.1 → 2026.7.3 in both Dockerfiles AND in
    internal/tunnels/installer.go. The const there is the managed-install
    path used by the dashboard's Update button; leaving it stale would have
    re-installed the old binary over the freshly bundled one.
  - Checksum verification is now mandatory, not opt-in. Both Dockerfiles pin
    per-arch SHA-256 (unknown arch fails the build), and pinnedSHA256 in the
    installer is populated for all four cloudflared platforms. ngrok stays
    absent from that map on purpose: its v3-stable channel has no per-version
    URL, so a pinned sum would reject legitimate downloads.
  - kin-openapi v0.142.0 → v0.144.0, clearing the one finding in cix-server
    itself (GHSA-r277-6w6q-xmqw, fail-open auth bypass in ValidationHandler).
    Not reachable here — we only import openapi3 in openapi.gen.go and never
    construct a ValidationHandler — but it is a free bump.
  - NGROK_NOCACHE on the local docker build targets. ngrok's floating channel
    would otherwise stay frozen in the buildx layer cache; CI runners have no
    cache so they were always fetching fresh.

Follow-up (separate PR): a cloudflared pin-freshness workflow modelled on
llama-pin-check.yml, and an image-level scan in CI so this class of drift
cannot go unnoticed again.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
fix(server): clear image CVEs — bump bundled tunnel agents + kin-openapi
@dvcdsys
dvcdsys merged commit bdc5d6f into main Jul 24, 2026
10 checks passed
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