OpenBao has Decompression Bomb via Unbounded Copy in OCI Plugin Extraction (DoS)
OpenBao is an open source identity-based secrets management system. Prior to version 2.5.3, `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. Version 2.5.3 contains a patch.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-39396
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 08:31 UTC · Revision 1
Source evidence
OpenBao has Decompression Bomb via Unbounded Copy in OCI Plugin Extraction (DoS)
core-osv · Original sourcePublished 21 Apr 2026, 00:44 UTC
OpenBao is an open source identity-based secrets management system. Prior to version 2.5.3, `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. Version 2.5.3 contains a patch.
osv:CVE-2026-39396
Complete source record
{
"id": "6fbe56609e53b26fda0cfc1713e7b1a1400744c30d53d3d8b62d81eb6f326bb9",
"url": "https://osv.dev/vulnerability/CVE-2026-39396",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "OpenBao has Decompression Bomb via Unbounded Copy in OCI Plugin Extraction (DoS)",
"summary": "OpenBao is an open source identity-based secrets management system. Prior to version 2.5.3, `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. Version 2.5.3 contains a patch.",
"evidence": "osv:CVE-2026-39396",
"products": [],
"severity": "low",
"structured": {
"id": "CVE-2026-39396",
"aliases": [
"BIT-openbao-2026-39396",
"CVE-2026-39396",
"GHSA-r65v-xgwc-g56j",
"GO-2026-5609"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/openbao/openbao",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "988c88d7ef54b4d4581629b229488dfba5e085ba"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "2.5.3"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"cpe": "cpe:2.3:a:openbao:openbao:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "2.5.3"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v2.5.2",
"v2.5.1",
"v2.5.0",
"sdk/v2.5.1",
"api/v2.5.1",
"api/auth/userpass/v2.5.1",
"api/auth/ldap/v2.5.1",
"api/auth/kubernetes/v2.5.1",
"api/auth/jwt/v2.5.1",
"api/auth/approle/v2.5.1",
"v2.5.0-beta20251125",
"sdk/v2.5.0",
"api/v2.5.0",
"api/auth/userpass/v2.5.0",
"api/auth/ldap/v2.5.0",
"api/auth/kubernetes/v2.5.0",
"api/auth/jwt/v2.5.0",
"api/auth/approle/v2.5.0",
"v2.4.0",
"sdk/v2.4.0",
"api/v2.4.0",
"api/auth/userpass/v2.4.0",
"api/auth/ldap/v2.4.0",
"api/auth/kubernetes/v2.4.0",
"api/auth/jwt/v2.4.0",
"api/auth/approle/v2.4.0",
"v2.3.0-beta20250528",
"sdk/v2.3.0",
"api/v2.3.0",
"api/auth/userpass/v2.3.0",
"api/auth/ldap/v2.3.0",
"api/auth/kubernetes/v2.3.0",
"api/auth/approle/v2.3.0",
"dev-namespaces-base-20250424",
"dev-namespaces-base-20250311",
"v2.2.0-beta20250213",
"dev-namespaces-base-20250215",
"sdk/v2.2.0",
"api/v2.2.0",
"api/auth/userpass/v2.2.0",
"api/auth/ldap/v2.2.0",
"api/auth/kubernetes/v2.2.0",
"api/auth/approle/v2.2.0",
"v2.1.0-beta20241114.3",
"v2.1.0-beta20241114.2",
"v2.1.0-beta20241114.1",
"v2.1.0-beta20241114",
"sdk/v2.1.0",
"api/v2.1.0",
"v2.0.0",
"sdk/v2.0.1",
"api/v2.0.1",
"api/auth/userpass/v2.0.1",
"api/auth/ldap/v2.0.1",
"api/auth/kubernetes/v2.0.1",
"api/auth/approle/v2.0.1",
"v2.0.0-beta20240618",
"sdk/v1.100.0-development20240408",
"api/v1.100.0-development20240408",
"api/auth/userpass/v1.1.0-development20240408",
"api/auth/ldap/v1.1.0-development20240408",
"api/auth/kubernetes/v1.1.0-development20240408",
"api/auth/gcp/v1.1.0-development20240408",
"api/auth/azure/v1.1.0-development20240408",
"api/auth/aws/v1.1.0-development20240408",
"api/auth/approle/v1.1.0-development20240408",
"v2.0.0-alpha20240329",
"before-plugin-removal",
"api/auth/userpass/v0.4.1",
"api/auth/gcp/v0.4.1",
"api/auth/azure/v0.4.1",
"api/auth/aws/v0.4.1",
"api/auth/approle/v0.4.1",
"sdk/v0.9.1",
"api/v1.9.2",
"api/v1.9.1",
"sdk/v0.9.0",
"api/auth/userpass/v0.4.0",
"api/auth/gcp/v0.4.0",
"api/auth/azure/v0.4.0",
"api/auth/aws/v0.4.0",
"api/auth/approle/v0.4.0",
"sdk/v0.8.0",
"api/v1.9.0",
"api/v1.8.3",
"sdk/v0.7.0",
"sdk/v0.6.2",
"sdk/v0.6.1",
"api/v1.8.2",
"api/v1.8.1",
"api/auth/userpass/v0.3.0",
"api/auth/gcp/v0.3.0",
"api/auth/azure/v0.3.0",
"api/auth/aws/v0.3.0",
"api/auth/approle/v0.3.0",
"api/v1.8.0",
"sdk/v0.6.0",
"api/auth/userpass/v0.2.0",
"api/auth/gcp/v0.2.0",
"api/auth/azure/v0.2.0",
"api/auth/aws/v0.2.0",
"api/auth/approle/v0.2.0",
"sdk/v0.5.3",
"api/v1.7.2",
"sdk/v0.5.1",
"api/v1.7.1",
"api/v1.7.0",
"api/v1.6.0",
"sdk/v0.5.0",
"api/v1.5.0",
"sdk/v0.4.1",
"api/v1.3.1",
"api/auth/approle/v0.1.1",
"api/auth/gcp/v0.1.0",
"api/auth/azure/v0.1.0",
"api/auth/userpass/v0.1.0",
"api/auth/aws/v0.1.0",
"api/auth/approle/v0.1.0",
"sdk/v0.3.0",
"api/v1.2.0",
"api/v1.1.1",
"sdk/v0.2.1",
"api/v1.0.4",
"sdk/v0.1.13",
"api/v1.0.3",
"sdk/v0.1.12",
"sdk/v0.1.11",
"sdk/v0.1.10",
"api/v1.0.2",
"sdk/v0.1.9",
"api/v1.0.1",
"sdk/v0.1.8"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-39396.json"
}
}
],
"modified": "2026-10-28T02:30:27.457851297Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39396.json",
"https://github.com/openbao/openbao/security/advisories/GHSA-r65v-xgwc-g56j",
"https://nvd.nist.gov/vuln/detail/CVE-2026-39396"
],
"provider_metadata": {
"cwe_ids": [
"CWE-400",
"CWE-674",
"CWE-770"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39396.json"
}
},
"related_cves": [
{
"value": "CVE-2026-39396",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 493846,
"published_at": "2026-04-21T00:44:53.943+00:00"
}