Severity by source
CVSS:4.0/AV:L/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Primary rating from Vendor (https://github.com/open-telemetry/opentelemetry-go).
CVSS VectorVendor: https://github.com/open-telemetry/opentelemetry-go
Lifecycle Timeline
4DescriptionCVE.org
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
- Attacker has local access to a system running a Go application that imports
go.opentelemetry.io/otel/sdk - Attacker places a malicious
kenvbinary earlier in$PATH - Application initializes OpenTelemetry resource detection at startup
hostIDReaderBSD.read()callsexec.Command("kenv", ...)which resolves to the malicious binary- 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.
AnalysisAI
Command injection in OpenTelemetry Go SDK allows local attackers to execute arbitrary code by placing malicious kenv binary in PATH on BSD and Solaris systems. Vulnerability occurs during resource detection initialization when application resolves bare command name instead of absolute path. Affects DragonFly BSD, FreeBSD, NetBSD, OpenBSD, and Solaris platforms when /etc/hostid does not exist. Incomplete fix for prior CVE-2026-24051 left BSD/Solaris code path vulnerable to identical PATH hijacking attack.
Technical ContextAI
CWE-426 untrusted search path vulnerability in sdk/resource/host_id.go line 42. Code executes exec.Command("kenv", "-q", "smbios.system.uuid") without absolute path, triggering PATH resolution. Darwin variant was fixed with /usr/sbin/ioreg absolute path but BSD kenv remained bare. Exploitation requires local access and ability to manipulate PATH environment variable before application startup.
RemediationAI
Vendor-released patch: upgrade to OpenTelemetry Go SDK version 1.43.0 or later, available at https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.43.0. Fixed version replaces bare kenv command with absolute path /bin/kenv in sdk/resource/host_id.go. No workaround available beyond upgrade. Organizations unable to upgrade immediately should restrict local user access to application environments and implement PATH environment hardening to prevent arbitrary binary placement. Review application startup scripts to ensure PATH contains only trusted directories. Consult vendor advisory at https://github.com/open-telemetry/opentelemetry-go/security/advisories/GHSA-hfvc-g4fc-pqhx for additional mitigation guidance.
Same weakness CWE-426 – Untrusted Search Path
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-20630
GHSA-hfvc-g4fc-pqhx