Skip to main content

OpenTelemetry .NET CVE-2026-42191

HIGH
Creation of Temporary File in Directory with Insecure Permissions (CWE-379)
2026-04-30 https://github.com/open-telemetry/opentelemetry-dotnet GHSA-4625-4j76-fww9
7.8
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain local account on shared host
  2. Delivery
    Locate predictable %TEMP%/traces blob directory
  3. Exploit
    Write crafted *.blob files
  4. Execution
    Exporter loads blobs on 60s retry cycle
  5. Impact
    Forged telemetry forwarded under application identity

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Temp file permissions
Exploitation Conditions

Exploitation requires all of: (1) the application sets OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=disk; (2) OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH is NOT set, forcing the exporter to resolve storage to Path.GetTempPath() and create fixed traces/metrics/logs subdirectories; and (3) the attacker holds a separate local account with read/write access to that shared temp root (/tmp on Linux, %TEMP% on a multi-user Windows install). Limiting factors that reduce realistic risk: the feature is experimental and off by default, the insecure path only occurs when the directory variable is omitted, the attacker must already have local access on the same host, and the temp directory must actually be shared/accessible across users - single-tenant hosts or properly ACL'd temp directories are not exposed. The only complete fix per the vendor is upgrading to 1.15.3, which removes the fallback and throws if the directory variable is unset; interim mitigations are avoiding disk retry in shared environments, configuring a dedicated least-privilege directory, not sharing it across tenants, and monitoring for unexpected *.blob files or retry backlog growth.

Impact

Signals are consistent and point to a real-but-conditional local issue rather than an internet-facing emergency. The CVSS 3.1 vector (AV:L/AC:L/PR:L/UI:N, C:H/I:H/A:H, score 7.8 HIGH) describes a local, low-privilege attack with high impact across confidentiality, integrity and availability - matching CWE-379 (temp file in a directory with insecure permissions). EPSS is 0.01% (2nd percentile), which is expected for a local-only flaw gated behind a non-default experimental configuration, and there is no CISA KEV listing, so there is no evidence of active or widespread exploitation. The vuln.today decision label is 'this_week', indicating prompt but non-emergency patching. These signals do not conflict: a high CVSS driven by full CIA impact coexists with very low real-world exploitation probability because the attack requires an attacker-controlled local account on a multi-user host AND a victim that enabled the experimental disk-retry feature without setting a dedicated directory. The main uncertainty is the real-world footprint of that specific misconfiguration; the vulnerability class and impact are confirmed, but how many deployments actually run the experimental disk retry with the default temp path is unknown from the provided data. Treat as a priority for the narrow set of multi-tenant/shared .NET hosts using this feature; lower priority elsewhere.

Exploit ScenarioDerived

On a shared multi-user host, a target .NET application runs with OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=disk but no explicit retry directory, so the exporter falls back to the world-accessible temp root and creates predictable subdirectories (/tmp/traces, /tmp/metrics, /tmp/logs or the %TEMP% equivalents). A separate local user drops crafted *.blob files into one of those directories, and on the next ~60-second retry cycle the exporter loads and forwards them to the configured OTLP endpoint under the application's identity (integrity); the same user can also read blobs the app wrote after transient failures to recover serialized telemetry (confidentiality), or flood the directory with oversized blobs to exhaust CPU/IO/disk (availability). No public exploit identified at time of analysis; the only referenced code is the vendor patch (PR #7106).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv3 – Oct 26, 2026

The OpenTelemetry .NET OTLP exporter's experimental disk-retry feature can be abused by an authenticated local attacker when OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=disk is set without OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH, causing retry blobs to be written to and read from fixed traces, metrics and logs subdirectories under the shared system temp root. An attacker holding a separate local account with read/write access to that temp directory can inject crafted *.blob files that the exporter later forwards to the configured OTLP endpoint under the application's identity and credentials, read the application's own serialized telemetry blobs, or flood the retry loop with oversized files to degrade performance and consume disk. The affected NuGet package is OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.8.0 through 1.15.2 and is fixed in 1.15.3; the feature is experimental and off by default, exposure only arises when the directory variable is omitted, and no public exploit code was identified at time of analysis (EPSS 0.01%, no KEV entry), so risk is real but conditional on shared-temp multi-user hosts.

Earlier versions of this analysis (2)
v2 Oct 26, 2026 - 18:46 cvss changed CVSS 7.8

The OTLP exporter for .NET (OpenTelemetry.Exporter.OpenTelemetryProtocol, versions 1.8.0 through 1.15.2) stores retry blobs in predictable signal-named subdirectories under the shared system temp directory whenever disk retry is enabled without an explicit retry directory, allowing an authenticated local attacker who can read or write that temp root to inject crafted *.blob files that the exporter later forwards to the OTLP endpoint under the application's identity, to read telemetry blobs written after export failures, and to exhaust disk or retry-loop resources. Exploitation requires the experimental OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=disk setting, an unset OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH, and a multi-user host with a world-accessible temp directory (/tmp or %TEMP%), so the affected configuration is uncommon; there is no remote path. No public exploit has been identified at time of analysis and EPSS is 0.01% (percentile 2), and a vendor fix is available in 1.15.3.

v1 Apr 30, 2026 - 19:00 CVSS 6.5

OpenTelemetry.Exporter.OpenTelemetryProtocol versions 1.8.0 through 1.15.2 allow local attackers to inject malicious telemetry data, disclose stored telemetry payloads, or exhaust system resources by exploiting an insecure default disk retry directory that falls back to the shared system temporary path when the required directory configuration is not explicitly set. On multi-user systems, this enables attackers with read or write access to the temp directory to craft blob files that the exporter will forward to the OTLP endpoint under the application's identity, or to read exported telemetry data between transient export failures.

RemediationAI

Upgrade OpenTelemetry.Exporter.OpenTelemetryProtocol to 1.15.3, the vendor-released patched version referenced in GHSA-4625-4j76-fww9 (https://github.com/open-telemetry/opentelemetry-dotnet/security/advisories/GHSA-4625-4j76-fww9) via PR https://github.com/open-telemetry/opentelemetry-dotnet/pull/7106 and commit 78dffdc5ebdf3dc090fdb94e3f1a32d3d1e26dfd. The vendor describes this as the only complete fix and notes it is a breaking change: disk retry now requires OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH and throws NotSupportedException when it is missing, so any deployment relying on the temp fallback will fail to start until the variable is set - for Windows the prior behaviour can be reproduced by pointing the variable at the value of TMP, TEMP or USERPROFILE, and on Linux/macOS at TMPDIR or literally /tmp/. If upgrading immediately is not possible, the vendor's interim measures are to avoid enabling disk retry in shared environments at all (losing retry persistence across export failures), to configure a dedicated directory with strict ACLs and ownership under least privilege (which requires the same OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH setting that the patch makes mandatory), to ensure that directory is never shared across tenants or users, and to monitor for unexpected *.blob files or abnormal retry backlog growth.

Affected Packages

nuget opentelemetry.exporter.opentelemetryprotocol fix: 1.15.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in nuget

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is CWE-379 (creation of a temporary file in a directory with insecure permissions), rooted in the .NET System.IO.Path.GetTempPath() API, which resolves to /tmp on Linux/macOS and %TEMP% on Windows - locations commonly readable or writable by other local accounts on multi-user systems. In OpenTelemetry.Exporter.OpenTelemetryProtocol, ExperimentalOptions previously fell back to this shared root whenever OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=disk was configured without an explicit OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH, and OtlpExporterPersistentStorageTransmissionHandler then persisted and reloaded Protobuf-encoded *.blob files in predictable, signal-named subdirectories (traces, metrics, logs). Because the retry loop rescans those directories on a default 60-second interval, any file present there is treated as pending telemetry and transmitted to the configured OTLP endpoint using the host application's transport credentials, while files written by the application after a transient export failure remain readable by any account that can reach the same path. The trigger is a race-free, predictable-path condition rather than a memory-safety issue; the CVSS vector (AV:L/PR:L) reflects that a local, authenticated account on the same host is required and that confidentiality, integrity and availability impacts are all high once the preconditions hold.

Know when .NET gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

NVD PRIMARY 7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.8 HIGH

Local co-tenant with their own low-privilege account (AV:L/PR:L) exploits a world-accessible temp dir without victim interaction (AC:L/UI:N), gaining full read/inject/exhaust capability (C:H/I:H/A:H).

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

6
Analysis Updated
Oct 26, 2026 - 18:47 vuln.today
v3 - CVSS changed
Analysis Updated
Oct 26, 2026 - 18:46 vuln.today
v2 - CVSS changed
Severity Changed
Oct 26, 2026 - 18:23 NVD
MEDIUM HIGH
CVSS changed
Oct 26, 2026 - 18:23 NVD
6.5 (MEDIUM) 7.8 (HIGH)
Patch released
Apr 30, 2026 - 18:45 nvd
Patch available
CVE Published
Apr 30, 2026 - 18:34 nvd
MEDIUM 6.5

DescriptionNVD

Summary

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 exposed three attack surfaces:

  • Blob injection (integrity): an attacker could write crafted *.blob files into the predictable path; the exporter picks them up on the next retry cycle and forwards them to the configured OTLP endpoint under the application's identity.
  • Telemetry disclosure (confidentiality): an attacker reads *.blob files written by the application between export failures, recovering encoded telemetry payloads (spans, metric data points, log records).
  • Resource exhaustion (availability): an attacker deposits numerous or oversized blob files, degrading retry-loop performance or consuming disk space.

Details

Preconditions
  1. OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY is set to disk.
  2. OTEL_DOTNET_EXPERIMENTAL_OTLP_DISK_RETRY_DIRECTORY_PATH is not set, causing the exporter to resolve the blob storage root using the System.IO.Path.GetTempPath() API.
  3. A local attacker has read or write access to the process' temporary directory (e.g., /tmp on Linux, or %TEMP% on a multi-user Windows installation).
Exploit path
  1. A target application starts with OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=disk and no explicit blob directory. The exporter resolves the storage root to Path.GetTempPath(), producing paths such as %TEMP%\traces, %TEMP%\metrics, and %TEMP%\logs (or /tmp/traces etc. on Linux).
  2. Injection scenario: before or during the application's retry window, an attacker writes crafted *.blob files into one of those signal subdirectories. On the next retry interval (by default every 60 seconds), OtlpExporterPersistentStorageTransmissionHandler scans the directory, loads the attacker-supplied blobs, and forwards them to the configured OTLP endpoint using the application's identity and transport credentials.
  3. Disclosure scenario: the attacker reads *.blob files that the application wrote after a transient export failure, recovering the full serialized telemetry payloads (spans, metric data points, or log records in Protobuf encoding).
  4. DoS scenario: the attacker deposits a large number of oversized blob files in the temporary subdirectories, causing the retry loop to consume excess CPU/IO processing them, potentially exhausting available disk space.

Mitigations

If an immediate upgrade to a patched version is not possible:

  1. Avoid enabling disk retry in shared environments.
  2. Configure a dedicated directory with strict ACL/ownership and least privilege.
  3. Ensure the directory is not shared across tenants/users.
  4. Monitor for unexpected *.blob files or abnormal retry backlog growth.

Resources

Executive ViewAI

Why It Matters

A high-severity flaw in the OpenTelemetry .NET OTLP exporter (CVE-2026-42191) allows a local attacker on a shared system to tamper with telemetry data and potentially inject falsified records into your observability pipeline, undermining the integrity of logs, metrics, and traces that leadership and security teams rely on. Exposure is limited to environments that have opted into an experimental disk-retry feature and left it misconfigured, so the affected population is narrow but includes teams running detailed telemetry collection. Because compromised telemetry can mask attacker activity and corrupt audit evidence, the issue merits prompt remediation wherever the feature is enabled.

Business Impact: Medium
Compensating Controls

Vendor-released patch: 1.15.3

Threat Intelligence Overview

EPSS Score
0.0%
Top 98% exploitable
Prevalence
Medium
popular .NET OTLP telemetry library, but vulnerable feature is experimental opt-in
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium
NVD CVE.org EPSS GHSA GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
Medium

Priority Score

39
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +39
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Affected Products (CPE)NVD

pkg:nuget/opentelemetry.exporter.opentelemetryprotocol

More in .NET

View all
CVE-2026-87697 HIGH POC
8.8 Oct 13

Remote code execution affects Windows desktop applications built on the Microsoft.WindowsDesktop.App.Runtime (WPF) compo

CVE-2023-7334 CRITICAL POC
9.8 Jan 15

Changjetong T+ (through 16.x) has .NET deserialization RCE in an AjaxPro endpoint. Attacker-controlled JSON triggers des

CVE-2026-75513 CRITICAL POC
9.1 Sep 16

SQL injection (CWE-89) in Marten, the .NET transactional document DB and event store for PostgreSQL, affects versions 7.

CVE-2026-100369 HIGH POC
8.4 Sep 25

Argument injection in the CliInvoke .NET process-wrapping library (and its former identity, AlastairLundy.CliInvoke) all

CVE-2019-25359 HIGH POC
8.2 Feb 18

SD.NET RIM versions before 4.7.3c contain a SQL injection vulnerability that allows attackers to inject malicious SQL st

CVE-2026-25925 HIGH POC
7.8 Feb 09

PowerDocu versions prior to 2.4.0 allow arbitrary .NET object instantiation and code execution through unsafe deserializ

CVE-2025-24070 HIGH POC
7.0 Mar 11

Weak authentication in ASP.NET Core & Visual Studio allows an unauthorized attacker to elevate privileges over a net

CVE-2026-26282 MEDIUM POC
6.6 Feb 19

NanaZip versions 5.0.1252.0 through 6.0.1629.0 contain an out-of-bounds heap read in the .NET Single File bundle parser

CVE-2026-27709 MEDIUM POC
6.6 Feb 26

Out-of-bounds memory read in NanaZip versions 5.0.1252.0 through 6.0.1637.x allows local authenticated attackers to disc

CVE-2020-37103 MEDIUM POC
6.4 Feb 03

DotNetNuke 9.5 contains a persistent cross-site scripting vulnerability that allows normal users to upload malicious XML

CVE-2026-3263 MEDIUM POC
6.3 Feb 26

Asp.Net-Core-Inventory-Order-Management-System versions up to 9.20250118. contains a security vulnerability (CVSS 6.3).

CVE-2025-54539 CRITICAL
9.8 Oct 16

Remote code execution in the ActiveMQ NMS AMQP .NET client affects all releases up to and including 2.3.0 when the clien

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy