CVE-2025-30153
High · 7.5CVSS
7.5
EPSS
0.6%
Published
Mar 19, 2025
CISA due date
—
Cloudanix analysis
A server that accepts certain file uploads could be forced to use up all its memory and stop working after receiving one specially made file.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The ZipFileBodyDecoder registered for multipart/form-data schemas decompresses attacker-supplied ZIP archives without size or recursion limits, allowing a ZIP bomb to allocate unbounded memory until the process is killed.
Why it matters to the business
Public-facing services built on affected Debian packages can be rendered unavailable by a single unauthenticated request, causing outages and potential loss of service for dependent applications.
How an attack unfolds
An attacker crafts a small ZIP that expands to gigabytes, posts it inside a multipart/form-data body to any endpoint whose OpenAPI schema permits file uploads, and the automatic decoder exhausts RAM before validation completes.
How to fix it
Upgrade kin-openapi to 0.131.0 or later; on Debian 13 install linux package version 6.12.5-1 or newer. Disable or replace the ZipFileBodyDecoder if immediate patching is not possible.
How to confirm the fix worked
Confirm the running binary or library reports version 0.131.0+, re-test the affected endpoint with a small ZIP payload and verify memory usage remains bounded, and review OpenAPI schemas to ensure file bodies are no longer auto-decoded.
Typical attack path
- Identify an endpoint accepting multipart/form-data whose schema permits file bodies
- Generate or obtain a ZIP bomb payload
- Send the payload in a single HTTP POST request
- Observe server memory exhaustion and service termination
How to detect it
Review web-server access logs for POST requests containing multipart/form-data with archive content-types, correlate with sudden memory or OOM-killer events in system logs, and inspect Go process core dumps or heap profiles for large inflated ZIP structures.
What your security team should do
- Apply the Debian 6.12.5-1 update or kin-openapi 0.131.0 immediately on all internet-facing instances
- Add rate-limiting and request-size limits at the reverse proxy or WAF layer
- Audit all OpenAPI schemas for unintended file-upload parameters and remove ZipFileBodyDecoder registration
- Monitor memory and process health metrics for sudden spikes on API servers
The record
kin-openapi is a Go project for handling OpenAPI files. Prior to 0.131.0, when validating a request with a multipart/form-data schema, if the OpenAPI schema allows it, an attacker can upload a crafted ZIP file (e.g., a ZIP bomb), causing the server to consume all available system memory. The root cause comes from the ZipFileBodyDecoder, which is registered automatically by the module (contrary to what the documentation says). This vulnerability is fixed in 0.131.0.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | github.com/getkin/kin-openapi | 0 | 0.131.0 |
| Chainguard | dataplaneapi | 0 | 3.1.5-r2 |
| Chainguard | dataplaneapi-fips | 0 | 3.1.5-r2 |
| Chainguard | gitness | 0 | 0 |
| Chainguard | gptscript | 0 | 0.9.5-r11 |
| Chainguard | grafana-10.4 | 0 | 0 |
| Chainguard | grafana-10.4-oci-compat | 0 | 0 |
| Chainguard | grafana-11.0 | 0 | 0 |
| Chainguard | grafana-11.2 | 0 | 0 |
| Chainguard | grafana-11.2-oci-compat | 0 | 0 |
| Chainguard | grafana-11.3 | 0 | 0 |
| Chainguard | grafana-11.3-oci-compat | 0 | 0 |
| Chainguard | grafana-11.4 | 0 | 0 |
| Chainguard | grafana-11.4-oci-compat | 0 | 0 |
| Chainguard | grafana-11.5 | 0 | 0 |
| Chainguard | grafana-11.5-oci-compat | 0 | 0 |
| Chainguard | grafana-11.6 | 0 | 0 |
| Chainguard | grafana-11.6-oci-compat | 0 | 0 |
| Chainguard | grafana-12.0 | 0 | 0 |
| Chainguard | grafana-12.0-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-10.4 | 0 | 0 |
| Chainguard | grafana-fips-10.4-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-11.0 | 0 | 0 |
| Chainguard | grafana-fips-11.0-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-11.1 | 0 | 0 |
| Chainguard | grafana-fips-11.1-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-11.2 | 0 | 0 |
| Chainguard | grafana-fips-11.2-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-11.3 | 0 | 0 |
| Chainguard | grafana-fips-11.3-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-11.4 | 0 | 0 |
| Chainguard | grafana-fips-11.4-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-11.5 | 0 | 0 |
| Chainguard | grafana-fips-11.5-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-11.6 | 0 | 0 |
| Chainguard | grafana-fips-11.6-oci-compat | 0 | 0 |
| Chainguard | grafana-fips-12.0 | 0 | 0 |
| Chainguard | grafana-fips-12.0-oci-compat | 0 | 0 |
| Chainguard | grafana-oci-compat | 0 | 0 |
| Chainguard | kubevela | 0 | 0 |
| Chainguard | kubevela-fips | 0 | 0 |
| Chainguard | kubevela-fips-vela-cli | 0 | 0 |
| Chainguard | kubevela-fips-vela-core | 0 | 0 |
| Chainguard | kubevela-vela-cli | 0 | 0 |
| Chainguard | kubevela-vela-cli-fips | 0 | 0 |
| Chainguard | kubevela-vela-core | 0 | 0 |
| Chainguard | kubevela-vela-core-compat | 0 | 0 |
| Chainguard | kubevela-vela-core-compat-fips | 0 | 0 |
| Chainguard | kubevela-vela-core-fips | 0 | 0 |
| Chainguard | nuclei | 0 | 3.4.3-r1 |
| Chainguard | terraform-provider-kubernetes | 0 | 0 |
| Chainguard | terraform-provider-kubernetes-fips | 0 | 0 |
| Chainguard | timoni | 0 | 0.24.0-r5 |
| Chainguard | vela-cli | 0 | 0 |
| Chainguard | vela-core | 0 | 0 |
| Wolfi | dataplaneapi | 0 | 3.1.5-r2 |
| Wolfi | gitness | 0 | 0 |
| Wolfi | gptscript | 0 | 0.9.5-r11 |
| Wolfi | grafana-10.4 | 0 | 0 |
| Wolfi | grafana-11.0 | 0 | 0 |
| Wolfi | grafana-11.2 | 0 | 0 |
| Wolfi | grafana-11.2-oci-compat | 0 | 0 |
| Wolfi | grafana-11.3 | 0 | 0 |
| Wolfi | grafana-11.3-oci-compat | 0 | 0 |
| Wolfi | grafana-11.4 | 0 | 0 |
| Wolfi | grafana-11.4-oci-compat | 0 | 0 |
| Wolfi | grafana-11.5 | 0 | 0 |
| Wolfi | grafana-11.5-oci-compat | 0 | 0 |
| Wolfi | grafana-11.6 | 0 | 0 |
| Wolfi | grafana-11.6-oci-compat | 0 | 0 |
| Wolfi | grafana-12.0 | 0 | 0 |
| Wolfi | grafana-12.0-oci-compat | 0 | 0 |
| Wolfi | grafana-oci-compat | 0 | 0 |
| Wolfi | kubevela | 0 | 0 |
| Wolfi | kubevela-vela-cli | 0 | 0 |
| Wolfi | kubevela-vela-core | 0 | 0 |
| Wolfi | kubevela-vela-core-compat | 0 | 0 |
| Wolfi | nuclei | 0 | 3.4.3-r1 |
| Wolfi | terraform-provider-kubernetes | 0 | 0 |
| Wolfi | timoni | 0 | 0.24.0-r5 |
| Wolfi | vela-cli | 0 | 0 |
| Wolfi | vela-core | 0 | 0 |
| openSUSE:Leap 16.0 | grafana | 0 | 11.6.14+security04-bp160.1.1 |
| openSUSE:Tumbleweed | govulncheck-vulndb | 0 | 0.0.20250327T184518-1.1 |
| openSUSE:Tumbleweed | grafana | 0 | 11.6.14+security01-4.1 |
| openSUSE:Tumbleweed | mcphost | 0 | 0.34.0-1.1 |
Related vulnerabilities
- CVE-2026-35172 Distribution is a toolkit to pack, ship, store, and deliver container content. Also affects gitness
- CVE-2026-33540 Distribution is a toolkit to pack, ship, store, and deliver container content. Also affects gitness
- CVE-2025-58190 The html.Parse function in golang.org/x/net/html has an infinite parsing loop when… Also affects gitness
- CVE-2025-47911 The html.Parse function in golang.org/x/net/html has quadratic parsing complexity when… Also affects gitness
- CVE-2024-6886 Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site… Also affects gitness
- CVE-2023-49569 A path traversal vulnerability was discovered in go-git versions prior to v5.11. Also affects gitness
- CVE-2023-49568 A denial of service (DoS) vulnerability was discovered in go-git versions prior to v5.11. Also affects gitness
- CVE-2026-27896 The Go MCP SDK used Go's standard encoding/json.Unmarshal for JSON-RPC and MCP protocol… Also affects gptscript