opentelemetry-ebpf-profiler CVE-2026-48496
MEDIUMSeverity by source
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
AV:L confirmed by co-located process requirement; PR:N because unprivileged workload suffices; A:H for permanent, unrecoverable goroutine block; C/I remain N as no data access or modification occurs.
Primary rating from Vendor (https://github.com/open-telemetry/opentelemetry-ebpf-profiler).
CVSS VectorVendor: https://github.com/open-telemetry/opentelemetry-ebpf-profiler
Lifecycle Timeline
2DescriptionCVE.org
Summary
An unprivileged process can easily trigger the processPIDEvents goroutine to be blocked indefinitely, preventing the goroutine from analyzing any new ELF file. The goroutine stays blocked in the openat2 syscall forever and the profiler can no longer work properly, it is a denial of service.
Impact
The impact is limited to denial-of-service on the ebpf-profiler agent:
- There has to be a malicious workload albeit unprivileged.
- No exfiltration of data. No loss of data.
Fix
Fixed in https://github.com/open-telemetry/opentelemetry-ebpf-profiler/commit/234b685cab31c2cb2f79e966caeab168bcc489e4.
Fix is part of v.0.0.202622.
AnalysisAI
Permanent denial of service in opentelemetry-ebpf-profiler versions 0.0.202527 through 0.0.202621 allows any unprivileged co-located process to halt the agent's ELF analysis goroutine by placing a FIFO or special file at a path the profiler will attempt to open via openat2. Once blocked, the processPIDEvents goroutine never recovers, rendering the profiling agent inoperable for the lifetime of the process. No public exploit has been identified at time of analysis; impact is strictly confined to availability of the profiling agent with no data exposure or privilege escalation possible.
Technical ContextAI
The affected package is the Go module go.opentelemetry.io/ebpf-profiler (CPE: pkg:go/go.opentelemetry.io_ebpf-profiler), an eBPF-based continuous profiling agent from the OpenTelemetry project. The root cause is CWE-770 (Allocation of Resources Without Limits or Throttling): the original getMappingFile implementation constructed filesystem paths and called os.Open() directly without first verifying that the target was a regular file. On Linux, opening a FIFO (named pipe) or Unix domain socket with a standard open() syscall blocks indefinitely until a peer opens the other end - a behavior the kernel intentionally provides. Because the processPIDEvents goroutine made no such check before calling openat2, a malicious process could place a FIFO at a path within its own filesystem namespace (e.g., /proc/<pid>/root/...) that the profiler would resolve and attempt to open. The fix introduces an openInRoot helper that uses the O_PATH flag first (which never blocks on special files), performs an fstat to assert S_IFREG and non-zero size, then reopens via /proc/self/fd/<fd>. The fix also adds inode/device matching to prevent file substitution attacks and uses RESOLVE_IN_ROOT | RESOLVE_NO_MAGICLINKS to prevent symlink escapes from containers.
RemediationAI
Upgrade to opentelemetry-ebpf-profiler version 0.0.202622 or later, which contains the fix at commit 234b685cab31c2cb2f79e966caeab168bcc489e4 (https://github.com/open-telemetry/opentelemetry-ebpf-profiler/commit/234b685cab31c2cb2f79e966caeab168bcc489e4); the patched release is available at https://github.com/open-telemetry/opentelemetry-ebpf-profiler/releases/tag/v0.0.202622. If immediate upgrade is not feasible, restrict the workloads co-located with the ebpf-profiler agent to trusted processes only - in Kubernetes environments, apply strict PodSecurityAdmission policies (Baseline or Restricted profile) or OPA/Gatekeeper constraints to prevent untrusted workloads from scheduling on nodes where the profiler daemonset runs. This workaround adds operational complexity and does not fix the underlying defect, but eliminates the threat surface by ensuring no untrusted local processes can interact with the profiler's namespace.
Same technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Desktop 15 SP7 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP7 | Affected |
| SUSE Linux Enterprise Server 15 SP7 | Affected |
| SUSE Linux Enterprise Server 16.0 | Affected |
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| openSUSE Leap 16.0 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
GHSA-f2r5-5m7w-p5cx