Security Vulnerability Report
中文
CVE-2026-42191 CVSS 6.5 MEDIUM

CVE-2026-42191

Published: 2026-05-12 20:16:41
Last Modified: 2026-05-13 18:16:44

Description

OpenTelemetry.Exporter.OpenTelemetryProtocol is the OTLP (OpenTelemetry Protocol) exporter implementation. From 1.8.0 to 1.15.2, the OTLP disk retry feature in OpenTelemetry.Exporter.OpenTelemetryProtocol silently fell back to Path.GetTempPath() when OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=disk was set but OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH was not configured. The exporter stored and loaded *.blob files under fixed, signal-named subdirectories (traces, metrics, logs) beneath that shared temporary root path. On multi-user systems where the temporary directory is accessible to other local accounts, this allows an attacker to write crafted *.blob files, read *.blob files written by the application between export failures, or deposit numerous or oversized blob files, degrading retry-loop performance or consuming disk space. This vulnerability is fixed in 1.15.3.

CVSS Details

CVSS Score
6.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:L

Configurations (Affected Products)

No configuration data available.

OpenTelemetry.Exporter.OpenTelemetryProtocol >= 1.8.0, <= 1.15.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
/* * PoC for CVE-2026-42191 * This script demonstrates checking for the existence of the insecure * default retry directory in the system temp path. */ using System; using System.IO; public class CheckOTLPPoC { public static void Main(string[] args) { // Simulate the vulnerable library's default path logic string tempPath = Path.GetTempPath(); string[] signalDirs = { "traces", "metrics", "logs" }; Console.WriteLine($"[+] Checking System Temp Path: {tempPath}"); foreach (string dir in signalDirs) { string fullPath = Path.Combine(tempPath, dir); if (Directory.Exists(fullPath)) { Console.WriteLine($"[!] Found vulnerable directory: {fullPath}"); // Attempt to list files to demonstrate read access try { string[] files = Directory.GetFiles(fullPath, "*.blob"); Console.WriteLine($" - Found {files.Length} blob files accessible."); } catch (UnauthorizedAccessException) { Console.WriteLine(" - Access denied (securely configured)."); } } else { Console.WriteLine($"[-] Directory not found: {fullPath}"); } } } }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-42191", "sourceIdentifier": "[email protected]", "published": "2026-05-12T20:16:41.000", "lastModified": "2026-05-13T18:16:44.010", "vulnStatus": "Awaiting Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "OpenTelemetry.Exporter.OpenTelemetryProtocol is the OTLP (OpenTelemetry Protocol) exporter implementation. From 1.8.0 to 1.15.2, the OTLP disk retry feature in OpenTelemetry.Exporter.OpenTelemetryProtocol silently fell back to Path.GetTempPath() when OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=disk was set but OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH was not configured. The exporter stored and loaded *.blob files under fixed, signal-named subdirectories (traces, metrics, logs) beneath that shared temporary root path. On multi-user systems where the temporary directory is accessible to other local accounts, this allows an attacker to write crafted *.blob files, read *.blob files written by the application between export failures, or deposit numerous or oversized blob files, degrading retry-loop performance or consuming disk space. This vulnerability is fixed in 1.15.3."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:L", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "LOW"}, "exploitabilityScore": 1.0, "impactScore": 5.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-379"}]}], "references": [{"url": "https://github.com/open-telemetry/opentelemetry-dotnet/pull/7106", "source": "[email protected]"}, {"url": "https://github.com/open-telemetry/opentelemetry-dotnet/security/advisories/GHSA-4625-4j76-fww9", "source": "[email protected]"}]}}