Skip to content

Dockerfile pins the uv binary by mutable tag while base images are digest-pinned #281

Description

@richardmhope

Summary

The release Dockerfile is digest-pinned for its base images but pins the uv binary by tag:

# Dockerfile:12
COPY --from=ghcr.io/astral-sh/uv:0.11.23 /uv /usr/local/bin/uv

Both FROM python:3.14-slim@sha256:cea0e60… lines (Dockerfile:6, 49) are digest-pinned; this is the one mutable image reference in the build.

Failure scenario

A re-pushed or compromised 0.11.23 tag on GHCR delivers an arbitrary uv binary, which then resolves and installs every dependency into the release image — exactly the supply-chain hole the digest pins exist to close (OWASP CICD-SEC-3, Dependency Chain Abuse). Dependabot's docker ecosystem tracks FROM lines, not this COPY --from, so it won't catch a bad pin either.

Suggested fix

Pin by digest: COPY --from=ghcr.io/astral-sh/uv:0.11.23@sha256:<digest> /uv /usr/local/bin/uv.

Found in Fable review of PR #232 → HEAD.

Metadata

Metadata

Assignees

No one assigned

    Labels

    dockerPull requests that update docker codefable-reviewCorrectness findings from Claude Fable code reviewpriority: mediumImportant, not blockingsecuritySecurity hardening / vulnerability

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions