Skip to main content

OpenTelemetry eBPF Instrumentation EUVDEUVD-2026-33952

| CVE-2026-45678 HIGH
Improper Input Validation (CWE-20)
2026-05-18 https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation GHSA-pgvv-q3wf-mm9m
7.5
CVSS 3.1 · Vendor: https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation
Share

Severity by source

Vendor (https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation) PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
SUSE
HIGH
qualitative

Primary rating from Vendor (https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation).

CVSS VectorVendor: https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Source Code Evidence Fetched
May 18, 2026 - 18:31 vuln.today
Analysis Generated
May 18, 2026 - 18:31 vuln.today

DescriptionCVE.org

Summary

The Postgres protocol parser assumes BIND message payloads contain a valid NUL-terminated portal name. A crafted empty or unterminated payload can make OBI slice beyond the end of the captured buffer and panic.

Details

The vulnerable logic is in pkg/ebpf/common/sql_detect_postgres.go. In the BIND case, OBI converts the full payload to a string with unix.ByteSliceToString(msg.data), computes portalLen := len(portal) + 1, and then slices msg.data[portalLen:] to derive the statement name.

There is no check that msg.data actually contains a NUL terminator or even enough bytes for portalLen. With an empty payload or a truncated message, portalLen can exceed the slice length and trigger a runtime panic.

PoC

Local testing with a minimal reproducer showed the expected slice bounds out of range crash for an empty BIND payload.

Use a vulnerable build:

bash
git checkout v0.0.0-rc.1+build
make build

Start a local Postgres instance and OBI:

bash
docker run --rm -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres:17
sudo ./bin/obi

Send a malformed BIND frame with an empty payload:

python
# save as /tmp/pg-bind-poc.py
import socket, struct

tag = b'B'
length = struct.pack(">I", 4)
payload = b""

s = socket.create_connection(("127.0.0.1", 5432))
s.sendall(tag + length + payload)
s.close()

Run it:

bash
python3 /tmp/pg-bind-poc.py

On a vulnerable build, the Postgres parser in OBI panics while processing the captured payload.

Impact

This is a remote availability issue in OBI's Postgres parser. Any attacker able to send malformed Postgres traffic to a monitored service can crash the agent and stop telemetry collection for that node or process.

AnalysisAI

Denial of service in OpenTelemetry eBPF Instrumentation (OBI) versions prior to 0.9.0 allows remote attackers to crash the telemetry agent by sending a malformed Postgres BIND frame with an empty or unterminated portal name payload to any monitored service. The defect lives in OBI's passive Postgres protocol parser, where missing NUL-terminator validation causes a Go slice-bounds panic, halting telemetry collection on the affected node. Publicly available exploit code exists in the GHSA-pgvv-q3wf-mm9m advisory, though the issue is not listed in CISA KEV and EPSS data was not provided.

Technical ContextAI

OBI is a Go-based eBPF instrumentation agent (package go.opentelemetry.io/obi) that passively observes application traffic - including Postgres wire protocol exchanges - to derive distributed traces. The flaw resides in pkg/ebpf/common/sql_detect_postgres.go around lines 286-294, where the BIND-message handler calls unix.ByteSliceToString(msg.data) and then computes portalLen := len(portal) + 1 before slicing msg.data[portalLen:] to extract the statement name. Because ByteSliceToString returns the entire buffer when no NUL byte is present, portalLen can exceed len(msg.data), and Go's runtime bounds check panics with 'slice bounds out of range'. This is a textbook CWE-20 (Improper Input Validation) issue - the parser trusts that captured packet bytes conform to a well-formed protocol structure rather than validating buffer length before indexing.

RemediationAI

Vendor-released patch: upgrade go.opentelemetry.io/obi to version 0.9.0 or later, per the GHSA-pgvv-q3wf-mm9m advisory (https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation/security/advisories/GHSA-pgvv-q3wf-mm9m and https://github.com/advisories/GHSA-pgvv-q3wf-mm9m). If immediate upgrade is not feasible, compensating controls include restricting network reachability to monitored Postgres-speaking services so that only trusted clients can open TCP connections on port 5432 (trade-off: legitimate clients from outside the trust boundary will also be blocked), or temporarily disabling OBI's Postgres protocol detection on exposed hosts (trade-off: loss of Postgres-level telemetry visibility until the upgrade is applied). Operators should also configure a process supervisor to automatically restart OBI after a crash to limit telemetry blackout windows, though this does not address the underlying panic.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

Vendor StatusVendor

SUSE

Severity: High
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Fixed
SUSE Linux Enterprise Module for Basesystem 15 SP7 Fixed
SUSE Linux Enterprise Server 15 SP7 Fixed
SUSE Linux Enterprise Server 16.0 Fixed

Share

EUVD-2026-33952 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy