Skip to content

Clear Docker image CVEs: drop gosu and setuptools - #32

Merged
greenlogles merged 1 commit into
mainfrom
fix/docker-image-cves
Jul 15, 2026
Merged

Clear Docker image CVEs: drop gosu and setuptools#32
greenlogles merged 1 commit into
mainfrom
fix/docker-image-cves

Conversation

@greenlogles

Copy link
Copy Markdown
Owner

Summary

Clears the vulnerability-scanner findings on the published Docker image. Neither source is used by ProxUI at runtime:

  • Go stdlib CVEs (e.g. CVE-2025-68121 and the golang/stdlib set) came from gosu, a static Go binary the Dockerfile installed to drop root→proxui in the entrypoint. Scanners read the Go stdlib version compiled into it and flag every Go CVE, even though gosu (a setuid+exec helper) never runs the vulnerable code paths.
  • jaraco.context (CVE-2026-23949) is vendored inside setuptools, which ships in the python:3.11-slim base — not a runtime dependency.

Changes

  • entrypoint.sh: gosu proxuisetpriv --reuid proxui --regid proxui --init-groups (util-linux, already in the base image). No Go binary.
  • Dockerfile: drop gosu from the apt install (keep curl for the healthcheck); pip uninstall -y pip setuptools after installing requirements (removes vendored jaraco.context, shrinks attack surface).

Verification (fresh local build)

  • gosu gone, setpriv present, setuptools gone, jaraco gone, no Go binaries remain.
  • Container builds, serves HTTP 200, /app/data owned by proxui, and PID 1 (the app) runs as uid 1000 (proxui) — privilege drop verified.

Note

The CVEs live in the already-published v0.8.0 / latest / testing images; they clear only once the image is rebuilt and republished from this change.

The published image flagged Go stdlib CVEs (from the static gosu binary)
and jaraco.context (vendored inside setuptools). Neither is used at runtime.

- Replace gosu with setpriv (util-linux, already in the base image) for the
  root->proxui privilege drop in the entrypoint — no Go binary, no Go CVEs.
- pip-uninstall pip and setuptools after installing requirements, removing the
  vendored jaraco.context and shrinking the runtime attack surface.

Verified on a fresh build: image builds, serves HTTP 200, /app/data owned by
proxui, PID1 runs as uid 1000, and no Go binaries or jaraco remain.
@greenlogles
greenlogles merged commit 232c55f into main Jul 15, 2026
9 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