Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2025-32386

CVE-2025-32386: Helm Helm DOS Vulnerability

CVE-2025-32386 is a denial of service vulnerability in Helm Helm caused by specially crafted chart archives that exhaust memory. This article covers the technical details, affected versions, security impact, and mitigation.

Updated:

CVE-2025-32386 Overview

CVE-2025-32386 is a Denial of Service (DoS) vulnerability affecting Helm, the popular Kubernetes package manager used for managing Charts. The vulnerability allows an attacker to craft a malicious chart archive file that expands to a significantly larger size when decompressed compared to its compressed form (e.g., greater than 800x difference). When Helm attempts to load this specially crafted chart, memory exhaustion occurs, causing the application to terminate unexpectedly.

This type of attack, commonly known as a "decompression bomb" or "zip bomb," exploits the lack of size validation during the archive extraction process. The vulnerability poses a significant risk to Kubernetes environments where untrusted chart sources may be used.

Critical Impact

Attackers can cause memory exhaustion and application termination by providing maliciously crafted Helm chart archives, potentially disrupting Kubernetes deployment workflows and CI/CD pipelines.

Affected Products

  • Helm versions prior to v3.17.3
  • helm:helm component

Discovery Timeline

  • 2025-04-09 - CVE CVE-2025-32386 published to NVD
  • 2025-09-03 - Last updated in NVD database

Technical Details for CVE-2025-32386

Vulnerability Analysis

This vulnerability is classified under CWE-770 (Allocation of Resources Without Limits or Throttling). The core issue stems from Helm's chart loading mechanism which did not impose size limits on decompressed chart archive contents. An attacker could exploit this by creating a compressed archive that appears small but contains highly compressible data patterns that expand dramatically during decompression.

When a user or automated system attempts to load such a malicious chart, Helm would allocate memory proportional to the decompressed size without any upper bounds. This could lead to memory exhaustion on the host system, causing the Helm process to crash and potentially affecting other processes on the same system due to resource starvation.

The vulnerability requires user interaction (such as downloading and installing a chart from an untrusted source), but can be exploited remotely via network delivery of the malicious archive.

Root Cause

The root cause of CVE-2025-32386 is the absence of decompression size limits in Helm's chart archive loader. The pkg/chart/v2/loader/archive.go and pkg/chart/v2/loader/directory.go components lacked validation to check the total decompressed size of chart archives and individual files within them. Without these safeguards, the application would blindly allocate memory for arbitrarily large decompressed content.

Attack Vector

The attack vector is network-based, requiring the victim to load a maliciously crafted Helm chart. Attack scenarios include:

  1. An attacker publishes a malicious chart to a public chart repository
  2. A victim pulls and attempts to install the chart using helm install
  3. Helm decompresses the archive, allocating excessive memory
  4. The application terminates due to memory exhaustion

The following code shows the security patch that introduces decompression size limits:

go
// MaxDecompressedChartSize is the maximum size of a chart archive that will be
// decompressed. This is the decompressed size of all the files.
// The default value is 100 MiB.
var MaxDecompressedChartSize int64 = 100 * 1024 * 1024 // Default 100 MiB

// MaxDecompressedFileSize is the size of the largest file that Helm will attempt to load.
// The size of the file is the decompressed version of it when it is stored in an archive.
var MaxDecompressedFileSize int64 = 5 * 1024 * 1024 // Default 5 MiB

Source: GitHub Commit d8ca55f

The patch also adds file size validation in the directory loader:

go
		if fi.Size() > MaxDecompressedFileSize {
			return fmt.Errorf("chart file %q is larger than the maximum file size %d", fi.Name(), MaxDecompressedFileSize)
		}

		data, err := os.ReadFile(name)
		if err != nil {
			return errors.Wrapf(err, "error reading %s", n)

Source: GitHub Commit d8ca55f

Detection Methods for CVE-2025-32386

Indicators of Compromise

  • Unexpected Helm process crashes with out-of-memory (OOM) errors
  • Sudden memory spikes on systems running Helm operations
  • System logs showing memory allocation failures during chart loading operations
  • Kubernetes nodes experiencing resource pressure during chart installations

Detection Strategies

  • Monitor system memory utilization during Helm chart operations for abnormal spikes
  • Implement alerting on Helm process terminations, particularly with OOM-related exit codes
  • Review chart sources for unusually small archives that may contain decompression bombs
  • Audit repository access logs for downloads of suspicious or unknown charts

Monitoring Recommendations

  • Configure memory limits for Helm operations using cgroups or container resource constraints
  • Implement logging for chart loading operations including source and file sizes
  • Deploy monitoring solutions that track memory allocation patterns for Helm processes
  • Set up alerts for sudden increases in chart archive sizes or unusual compression ratios

How to Mitigate CVE-2025-32386

Immediate Actions Required

  • Upgrade Helm to version v3.17.3 or later immediately
  • Restrict chart installations to trusted, verified chart repositories only
  • Review any recently installed charts from untrusted sources
  • Implement resource limits for environments running Helm operations

Patch Information

The vulnerability has been resolved in Helm v3.17.3. The fix introduces two new configuration variables that impose hard limits on decompressed content:

  • MaxDecompressedChartSize: Limits total decompressed chart size to 100 MiB by default
  • MaxDecompressedFileSize: Limits individual file size to 5 MiB by default

For detailed patch information, see the GitHub Commit and the GitHub Security Advisory.

Workarounds

  • Only install charts from trusted and verified sources until the patch is applied
  • Implement network-level controls to restrict access to untrusted chart repositories
  • Use container resource limits to contain the impact of potential memory exhaustion
  • Pre-scan chart archives for suspicious compression ratios before installation
bash
# Configuration example - Upgrade Helm to patched version
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash -s -- --version v3.17.3

# Verify installed version
helm version --short

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.