Skip to content

fix(docker): bump wolfi-base digest for busybox 1.38.0-r1 and openssl 3.6.3-r5 - #37950

Merged
yuneng-berri merged 1 commit into
litellm_internal_stagingfrom
litellm_/apk-security-vulnerabilities-5f03e1
Aug 22, 2026
Merged

fix(docker): bump wolfi-base digest for busybox 1.38.0-r1 and openssl 3.6.3-r5#37950
yuneng-berri merged 1 commit into
litellm_internal_stagingfrom
litellm_/apk-security-vulnerabilities-5f03e1

Conversation

@yuneng-berri

Copy link
Copy Markdown
Contributor

TLDR

Problem this solves:

  • Pinned wolfi-base is from 2026-07-02 and ships stale apk packages
  • Grype flags 16 fixable findings on it, 8 rated High
  • The Dockerfile's apk upgrade cannot advance them

How it solves it:

  • Moves all 6 Dockerfiles to a base carrying the fixed revisions
  • busybox 1.38.0-r1, libcrypto3/libssl3 3.6.3-r5, glibc 2.43-r15

User Flow

Before: an operator scanning the published image sees fixable High findings they cannot clear by rebuilding

  1. They pull the published litellm/litellm image
  2. They run their scanner against it
  3. It reports busybox 1.37.0-r61 and libcrypto3/libssl3 3.6.3-r3 as fixable, 8 findings rated High
  4. They rebuild the image themselves, expecting the runtime stage's package upgrade to pick up current versions
  5. The rebuilt image reports the identical findings, so there is no action available to them

After: the same scan comes back clean

  1. They pull the published litellm/litellm image
  2. They run their scanner against it
  3. It reports busybox 1.38.0-r1 and libcrypto3/libssl3 3.6.3-r5
  4. No fixable findings are reported

Relevant issues

Linear ticket

Pre-Submission checklist

  • I have added meaningful tests
  • The handful of test files covering my change pass locally
  • My PR passes all required CI/CD checks (e.g., lint, schema.d.ts sync check, etc.)
  • My PR's scope is as isolated as possible; it only solves 1 specific problem
  • I have received a Greptile Confidence Score of at least 4/5 before requesting a maintainer review

Screenshots / Proof of Fix

Both runs build docker/Dockerfile.non_root and scan it with the same pinned grype the gate uses, grype IMG --only-fixed --fail-on high.

Before (28887f1)

  1. docker build -f docker/Dockerfile.non_root -t litellm-base-before:local .
  2. grype litellm-base-before:local --only-fixed --fail-on high
NAME        INSTALLED   FIXED IN   TYPE  VULNERABILITY        SEVERITY
libcrypto3  3.6.3-r3    3.6.3-r5   apk   CVE-2026-14456       High
libssl3     3.6.3-r3    3.6.3-r5   apk   CVE-2026-14456       High
libcrypto3  3.6.3-r3    3.6.3-r4   apk   CVE-2026-54876       High
libssl3     3.6.3-r3    3.6.3-r4   apk   CVE-2026-54876       High
busybox     1.37.0-r61  1.38.0-r0  apk   CVE-2026-38754       High
busybox     1.37.0-r61  1.38.0-r1  apk   CVE-2026-38752       High
busybox     1.37.0-r61  1.38.0-r0  apk   CVE-2026-38755       High
busybox     1.37.0-r61  1.38.0-r0  apk   CVE-2026-38753       High
busybox     1.37.0-r61  1.38.0-r0  apk   GHSA-9r55-p3jw-v652  Unknown
busybox     1.37.0-r61  1.38.0-r1  apk   GHSA-fj27-x67r-v4g5  Unknown
busybox     1.37.0-r61  1.38.0-r0  apk   GHSA-jcqv-rj94-jmx3  Unknown
busybox     1.37.0-r61  1.38.0-r0  apk   GHSA-jj7c-h3wm-vjfw  Unknown
libcrypto3  3.6.3-r3    3.6.3-r4   apk   GHSA-5cfw-78wc-wvjq  Unknown
libcrypto3  3.6.3-r3    3.6.3-r5   apk   GHSA-9x89-v382-mjh7  Unknown
libssl3     3.6.3-r3    3.6.3-r4   apk   GHSA-5cfw-78wc-wvjq  Unknown
libssl3     3.6.3-r3    3.6.3-r5   apk   GHSA-9x89-v382-mjh7  Unknown

[0069] ERROR discovered vulnerabilities at or above the severity threshold
  1. Confirming the runtime stage's apk upgrade cannot clear these: docker run --rm --entrypoint sh cgr.dev/chainguard/wolfi-base@sha256:42df77a9... -c "apk upgrade -a; cat /etc/apk/world"
fetch https://apk.cgr.dev/chainguard/aarch64/APKINDEX.tar.gz
OK: 14 MiB in 15 packages
busybox=1.37.0-r61
libcrypto3=3.6.3-r3
libssl3=3.6.3-r3
glibc=2.43-r10

The base writes an exact =version constraint for every package it ships, so the upgrade is a no-op even though apk policy busybox lists 1.38.0-r1 as available.

After (f46dd40)

  1. docker build -f docker/Dockerfile.non_root -t litellm-digestbump:local .
  2. grype litellm-digestbump:local --only-fixed --fail-on high; echo "exit=$?"
No vulnerabilities found
exit=0
  1. Provenance of the new digest: cosign verify --certificate-oidc-issuer=https://token.actions.githubusercontent.com --certificate-identity=https://github.com/chainguard-images/images/.github/workflows/release.yaml@refs/heads/main cgr.dev/chainguard/wolfi-base@sha256:a31344ab...
Verification for cgr.dev/chainguard/wolfi-base@sha256:a31344ab... --
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - Existence of the claims in the transparency log was verified offline
  - The code-signing certificate was verified using trusted certificate authority certificates
  1. The base scans clean on the runner's architecture too: grype cgr.dev/chainguard/wolfi-base@sha256:a31344ab... --platform linux/amd64 --only-fixed
No vulnerabilities found

Type

🚄 Infrastructure

Caveats (if any)

… 3.6.3-r5

The pinned base (built 2026-07-02) ships busybox 1.37.0-r61 and
libcrypto3/libssl3 3.6.3-r3. Grype reports 16 fixable findings against
those revisions, 8 of them High, so the image-scan gate fails once it
gets past the migration step.

The runtime stage's `apk upgrade` cannot clear them. wolfi-base writes an
exact `=version` constraint for every package it ships into
/etc/apk/world, so `apk upgrade` is a no-op even though the fixed
revisions are in the repo. Advancing them means moving the digest.

The new digest carries busybox 1.38.0-r1, libcrypto3/libssl3 3.6.3-r5
and glibc 2.43-r15, which is at or above the fix revision Wolfi's secdb
records for every finding. Verified with cosign against
chainguard-images/images release.yaml, and grype reports no fixable
findings on the rebuilt image.

CVE-2026-14456, CVE-2026-54876, CVE-2026-38752, CVE-2026-38753,
CVE-2026-38754, CVE-2026-38755
@yuneng-berri
yuneng-berri requested a review from a team August 22, 2026 18:23
@greptile-apps

greptile-apps Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR consistently refreshes the pinned Wolfi base-image digest across all six Docker image definitions while preserving existing build and runtime behavior.

  • Updates both builder and runtime stages to the same immutable digest.
  • Applies the refresh consistently to the primary, non-root, database, backend, gateway, and migration images.
  • Provides successful image-build and scan evidence for the representative non-root image.

Confidence Score: 5/5

The PR appears safe to merge because the digest refresh is consistent across all affected images and no concrete blocking or non-blocking defect was identified.

The changes only replace the pinned Wolfi base digest, preserve the existing Dockerfile logic, and include representative build and scan evidence for the updated image.

Important Files Changed

Filename Overview
Dockerfile Updates the builder and runtime Wolfi base-image digest consistently; no actionable defect identified.
backend/Dockerfile Updates both component image stages to the new pinned digest without changing package installation or runtime behavior.
docker/Dockerfile.database Applies the same digest refresh to the database image's builder and runtime stages.
docker/Dockerfile.non_root Applies the verified digest refresh to both stages of the non-root image.
gateway/Dockerfile Updates both gateway stages consistently while retaining the existing package and non-root-user setup.
migrations/Dockerfile Updates both migration-image stages consistently without altering migration execution behavior.

Reviews (1): Last reviewed commit: "fix(docker): bump wolfi-base digest for ..." | Re-trigger Greptile

@codecov

codecov Bot commented Aug 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@yuneng-berri
yuneng-berri enabled auto-merge (squash) August 22, 2026 18:35

@mateo-berri mateo-berri left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks!

@yuneng-berri
yuneng-berri merged commit 490c9f9 into litellm_internal_staging Aug 22, 2026
70 of 72 checks passed
@yuneng-berri
yuneng-berri deleted the litellm_/apk-security-vulnerabilities-5f03e1 branch August 22, 2026 18:45
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.

3 participants