CVE-2026-39882: opentelemetry-go OTLP HTTP Exporters Read Unbounded Vulnerability
MODERATECVE-2026-39882 is a MODERATE (CVSS 5.3) otlp http exporters read unbounded vulnerability (CWE-789: Memory Allocation with Excessive Size Value) affecting opentelemetry-go libraries in the Go ecosystem. The issue involves otlp http exporters read unbounded http response bodies. Remediation is available by upgrading affected packages to version 1.43.0, 0.19.0.
CVE-2026-39882 at a Glance
Security Impact
CVSS: 5.3
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H).
How to Fix CVE-2026-39882
To remediate this vulnerability, upgrade all affected opentelemetry-go dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp to 1.43.0
Upgrade go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp to 1.43.0
Upgrade go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp to 0.19.0
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
How to Check if You Are Affected
To determine whether your application is affected by CVE-2026-39882, inspect your project dependencies for opentelemetry-go:
inspect dependencies for go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
Analyze the terminal output to locate any version of opentelemetry-go in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.43.0), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-789: Memory Allocation with Excessive Size Value, where the product allocates memory based on an untrusted, large size value, but it does not ensure that the size is within expected limits, allowing arbitrary amounts of memory to be allocated. In opentelemetry-go, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-39882 Affected opentelemetry-go Versions
3 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
|
Go |
< 1.43.0
|
1.43.0
|
|
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp
|
Go |
< 1.43.0
|
1.43.0
|
|
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
|
Go |
< 0.19.0
|
0.19.0
|
References
Frequently Asked Questions
What is CVE-2026-39882?
Which opentelemetry-go versions are affected?
What version fixes CVE-2026-39882?
Is go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp affected?
Is go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp affected?
What is the CVSS score of CVE-2026-39882?
What CWE is associated with CVE-2026-39882?
How can I check Go dependencies for CVE-2026-39882?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-w8rr-5gcm-pp58",
"modified" : "2026-04-09T14:29:37Z",
"published" : "2026-04-08T19:22:01Z",
"aliases" : [ "CVE-2026-39882" ],
"summary" : "opentelemetry-go: OTLP HTTP exporters read unbounded HTTP response bodies",
"details" : "overview:\nthis report shows that the otlp HTTP exporters (traces/metrics/logs) read the full HTTP response body into an in-memory `bytes.Buffer` without a size cap.\n\nthis is exploitable for memory exhaustion when the configured collector endpoint is attacker-controlled (or a network attacker can mitm the exporter connection).\n\nseverity\n\nHIGH\n\nnot claiming: this is a remote dos against every default deployment.\nclaiming: if the exporter sends traces to an untrusted collector endpoint (or over a network segment where mitm is realistic), that endpoint can crash the process via a large response body.\n\ncallsite (pinned):\n- exporters/otlp/otlptrace/otlptracehttp/client.go:199\n- exporters/otlp/otlptrace/otlptracehttp/client.go:230\n- exporters/otlp/otlpmetric/otlpmetrichttp/client.go:170\n- exporters/otlp/otlpmetric/otlpmetrichttp/client.go:201\n- exporters/otlp/otlplog/otlploghttp/client.go:190\n- exporters/otlp/otlplog/otlploghttp/client.go:221\n\npermalinks (pinned):\n- https://github.com/open-telemetry/opentelemetry-go/blob/248da958375e4dfb4a1105645107be3ef04b1c59/exporters/otlp/otlptrace/otlptracehttp/client.go#L199\n- https://github.com/open-telemetry/opentelemetry-go/blob/248da958375e4dfb4a1105645107be3ef04b1c59/exporters/otlp/otlptrace/otlptracehttp/client.go#L230\n- https://github.com/open-telemetry/opentelemetry-go/blob/248da958375e4dfb4a1105645107be3ef04b1c59/exporters/otlp/otlpmetric/otlpmetrichttp/client.go#L170\n- https://github.com/open-telemetry/opentelemetry-go/blob/248da958375e4dfb4a1105645107be3ef04b1c59/exporters/otlp/otlpmetric/otlpmetrichttp/client.go#L201\n- https://github.com/open-telemetry/opentelemetry-go/blob/248da958375e4dfb4a1105645107be3ef04b1c59/exporters/otlp/otlplog/otlploghttp/client.go#L190\n- https://github.com/open-telemetry/opentelemetry-go/blob/248da958375e4dfb4a1105645107be3ef04b1c59/exporters/otlp/otlplog/otlploghttp/client.go#L221\n\nroot cause:\neach exporter client reads `resp.Body` using `io.Copy(&respData, resp.Body)` into a `bytes.Buffer` on both success and error paths, with no upper bound.\n\nimpact:\na malicious collector can force large transient heap allocations during export (peak memory scales with attacker-chosen response size) and can potentially crash the instrumented process (oom).\n\naffected component:\n- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp\n- go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp\n- go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp\n\nrepro (local-only):\n\n```bash\nunzip poc.zip -d poc\ncd poc\nmake canonical resp_bytes=33554432 chunk_delay_ms=0\n```\n\nexpected output contains:\n\n```\n[CALLSITE_HIT]: otlptracehttp.UploadTraces::io.Copy(resp.Body)\n[PROOF_MARKER]: resp_bytes=33554432 peak_alloc_bytes=118050512\n```\n\ncontrol (same env, patched target):\n\n```bash\nunzip poc.zip -d poc\ncd poc\nmake control resp_bytes=33554432 chunk_delay_ms=0\n```\n\nexpected control output contains:\n\n```\n[CALLSITE_HIT]: otlptracehttp.UploadTraces::io.Copy(resp.Body)\n[NC_MARKER]: resp_bytes=33554432 peak_alloc_bytes=512232\n```\n\nattachments: poc.zip (attached)\n\n[PR_DESCRIPTION.md](https://github.com/user-attachments/files/25564272/PR_DESCRIPTION.md)\n\n[attack_scenario.md](https://github.com/user-attachments/files/25564273/attack_scenario.md)\n\n[poc.zip](https://github.com/user-attachments/files/25564271/poc.zip)\n\n\nFixed in: https://github.com/open-telemetry/opentelemetry-go/pull/8108",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "1.43.0"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Go",
"name" : "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "1.43.0"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Go",
"name" : "go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "0.19.0"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/open-telemetry/opentelemetry-go/security/advisories/GHSA-w8rr-5gcm-pp58"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-39882"
}, {
"type" : "WEB",
"url" : "https://github.com/open-telemetry/opentelemetry-go/pull/8108"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/open-telemetry/opentelemetry-go"
}, {
"type" : "WEB",
"url" : "http://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.43.0"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-789" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-04-08T19:22:01Z",
"nvd_published_at" : "2026-04-08T21:17:00Z"
}
}