🛡️ CVE-2026-39883 — opentelemetry

🟠 CVSS 8.0 — High ✅ No Known Exploit CWE-426 NVD
8.0
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

opentelemetry-go: BSD kenv command not using absolute path enables PATH hijacking

Summary

The fix for GHSA-9h8m-3fm2-qjrq (CVE-2026-24051) changed the Darwin ioreg command to use an absolute path but left the BSD kenv command using a bare name, allowing the same PATH hijacking attack on BSD and Solaris platforms.

Root Cause

sdk/resource/host_id.go line 42:

if result, err := r.execCommand("kenv", "-q", "smbios.system.uuid"); err == nil {

Compare with the fixed Darwin path at line 58:

result, err := r.execCommand("/usr/sbin/ioreg", "-rd1", "-c", "IOPlatformExpertDevice")

The execCommand helper at sdk/resource/host_id_exec.go uses exec.Command(name, arg...) which searches $PATH when the command name contains no path separator.

Affected platforms (per build tag in host_id_bsd.go:4): DragonFly BSD, FreeBSD, NetBSD, OpenBSD, Solaris.

The kenv path is reached when /etc/hostid does not exist (line 38-40), which is common on FreeBSD systems.

Attack

1. Attacker has local access to a system running a Go application that imports go.opentelemetry.io/otel/sdk

2. Attacker places a malicious kenv binary earlier in $PATH

3. Application initializes OpenTelemetry resource detection at startup

4. hostIDReaderBSD.read() calls exec.Command("kenv", ...) which resolves to the malicious binary

5. Arbitrary code executes in the context of the application

Same attack vector and impact as CVE-2026-24051.

Suggested Fix

Use the absolute path:

if result, err := r.execCommand("/bin/kenv", "-q", "smbios.system.uuid"); err == nil {

On FreeBSD, kenv is located at /bin/kenv.

How this vulnerability can be exploited

This issue can be reached with local access to the system, attack complexity is high, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality high, integrity high, availability high.

Weakness class

CVE-2026-39883 is classified as CWE-426: Untrusted Search Path. The product resolves a library or executable using a search path an attacker can influence.

Affected software

CVE-2026-39883 is recorded against 2 packages.

  • go.opentelemetry.io/otel/sdk
  • opentelemetry (from 1.15.0 up to 1.43.0)

Timeline and source

Published on 8 April 2026 and last revised on 30 July 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

github.com (Web)
nvd.nist.gov (Advisory)
github.com (Package)
github.com (Web)

CVE-2026-39883 on other distributions

Each distribution ships its own build and its own fixed version. Pick the one you run:

Details

Severity HIGH
CVSS Score 8.0
CVSS Vector CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE CWE-426
Public Exploit ✅ No
Source NVD
Published 2026-04-08
Updated 2026-08-12
Modified 2026-07-30
Fix URL N/A

Affected Packages

Software From version Fixed in
go.opentelemetry.io/otel/sdk
opentelemetry 1.15.0 1.43.0

Site Security Check

Is opentelemetry part of your stack?

CVE-2026-39883 is rated CVSS 8.0 High. BotEraser scans your installation against known CVE records and tells you whether this vulnerability applies to the versions you actually run.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.