Skip to content

Remove vulnerable helper binaries from distroless image#640

Open
jsonmp-k8 wants to merge 1 commit intoNVIDIA:mainfrom
jsonmp-k8:add-security-scanning
Open

Remove vulnerable helper binaries from distroless image#640
jsonmp-k8 wants to merge 1 commit intoNVIDIA:mainfrom
jsonmp-k8:add-security-scanning

Conversation

@jsonmp-k8
Copy link

Summary

  • Remove shelless_ulimit_* and sleep_* helper binaries from the distroless image that carry 1 CRITICAL + 3 HIGH CVEs due to being built with Go 1.25.5
  • These binaries come from the NVIDIA distroless base image (nvcr.io/nvidia/distroless/cc:v4.0.1) and are not referenced by dcgm-exporter

Problem

Trivy scan of the current distroless image shows 4 fixable vulnerabilities in two helper binaries shipped by the base image:

CVE Severity Description
CVE-2025-68121 CRITICAL crypto/tls: Unexpected session resumption
CVE-2025-61726 HIGH net/url: Memory exhaustion in query parameter parsing
CVE-2025-61728 HIGH archive/zip: Excessive CPU consumption
CVE-2025-61730 HIGH TLS 1.3 handshake issue

All are fixed in Go >= 1.25.7, but the base image binaries were built with Go 1.25.5.

Fix

Since dcgm-exporter does not use shelless_ulimit_* or sleep_* (confirmed via codebase grep), this PR removes them from the final distroless image by temporarily copying rm from the helper stage and deleting them.

Scan Results (Before → After)

Severity Before After
CRITICAL 1 0
HIGH 4 1 (glibc CVE-2026-0861 — no upstream fix available)

Test Plan

  • Built distroless image locally with the change
  • Trivy scan confirms CRITICAL drops to 0 and HIGH drops from 4 to 1
  • Remaining HIGH (glibc CVE-2026-0861) has no fix available in Debian
  • Verify dcgm-exporter starts and serves metrics correctly with the modified image

The NVIDIA distroless base image (nvcr.io/nvidia/distroless/cc:v4.0.1)
ships shelless_ulimit and sleep helper binaries built with Go 1.25.5,
which carry 1 CRITICAL and 3 HIGH CVEs:

- CVE-2025-68121 (CRITICAL): crypto/tls session resumption
- CVE-2025-61726 (HIGH): net/url memory exhaustion
- CVE-2025-61728 (HIGH): archive/zip CPU exhaustion
- CVE-2025-61730 (HIGH): TLS 1.3 handshake issue

All are fixed in Go >= 1.25.7 but the base image has not been rebuilt.
dcgm-exporter does not reference these binaries, so removing them
eliminates the CVEs without any functional impact.

Signed-off-by: Jaison Paul <paul.jaison@gmail.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