# CVE-2026-33701: OpenTelemetry: Unsafe Deserialization in RMI Instrumentation may Lead to Remote Code Execution

> An attacker with network access to a configured JMX/RMI port on a Java 16 or earlier JVM using OpenTelemetry instrumentation can achieve remote code execution via unsafe deserialization.

- **Severity:** Critical 9.3 (`CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 27 Mar 2026
- **Updated:** 17 Aug 2026
- **Also known as:** GHSA-xw7x-h9fj-p2c7, ROOT-APP-MAVEN-CVE-2026-33701

## What is CVE-2026-33701?

CVE-2026-33701 is a critical unsafe deserialization vulnerability in open-telemetry opentelemetry-java-instrumentation, published on 27 Mar 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

OpenTelemetry Java Instrumentation provides OpenTelemetry auto-instrumentation and instrumentation libraries for Java. In versions prior to 2.26.1, the RMI instrumentation registered a custom endpoint that deserialized incoming data without applying serialization filters. On JDK version 16 and earlier, an attacker with network access to a JMX or RMI port on an instrumented JVM could exploit this to potentially achieve remote code execution. All three of the following conditions must be true to exploit this vulnerability: First, OpenTelemetry Java instrumentation is attached as a Java agent (`-javaagent`) on Java 16 or earlier. Second, JMX/RMI port has been explicitly configured via `-Dcom.sun.management.jmxremote.port` and is network-reachable. Third, gadget-chain-compatible library is present on the classpath. This results in arbitrary remote code execution with the privileges of the user running the instrumented JVM. For JDK >= 17, no action is required, but upgrading is strongly encouraged. For JDK < 17, upgrade to version 2.26.1 or later. As a workaround, set the system property `-Dotel.instrumentation.rmi.enabled=false` to disable the RMI integration.

Weakness: CWE-502 (Deserialization of Untrusted Data)

## Which versions are affected by CVE-2026-33701?

2 open source packages ship an affected version, including io.opentelemetry.javaagent:opentelemetry-javaagent. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `io.opentelemetry.javaagent:opentelemetry-javaagent` | Maven | All versions | 2.26.1 |
| `io.opentelemetry.javaagent:opentelemetry-javaagent` | Maven | All versions | 2.26.1 |

Products: Linuxfoundation Opentelemetry Instrumentation for Java.

## How do I fix CVE-2026-33701?

Upgrade io.opentelemetry.javaagent:opentelemetry-javaagent to 2.26.1 or later.

## Is CVE-2026-33701 being exploited?

There is no known exploitation of CVE-2026-33701 in the wild and no public exploit code.

Public exploit code:

- CVE-2026-33701 Unsafe Deserialization in OpenTelemetry Java Agent RMI Instrumentation (github_poc): https://github.com/pl4tyz/CVE-2026-33701-Unsafe-Deserialization-in-OpenTelemetry-Java-Agent-RMI-Instrumentation

## Other vulnerabilities in open-telemetry opentelemetry-java-instrumentation

- [CVE-2026-54704](https://insights.sbomify.com/CVE-2026-54704/): OpenTelemetry Java Instrumentation: JDBC Auto-Instrumentation Logging Clear-Text Passwords (medium 6.5)
- [CVE-2023-39951](https://insights.sbomify.com/CVE-2023-39951/): Information disclosure in opentelemetry-java-instrumentation (medium 6.5)
- [CVE-2026-54712](https://insights.sbomify.com/CVE-2026-54712/): OpenTelemetry Javaagent RMI context propagation allows resource exhaustion (medium 5.3)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-33701 and fix it if it is affected.

What it is: CVE-2026-33701 is a critical unsafe deserialization vulnerability in open-telemetry opentelemetry-java-instrumentation, published on 27 Mar 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-33701 in the wild and no public exploit code.

Affected packages and fixed versions:
- io.opentelemetry.javaagent:opentelemetry-javaagent (Maven): affected all versions; fixed in 2.26.1
- io.opentelemetry.javaagent:opentelemetry-javaagent (Maven): affected all versions; fixed in 2.26.1

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-33701/ (Markdown: https://insights.sbomify.com/CVE-2026-33701/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-33701
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-33701
- OSV: https://osv.dev/vulnerability/CVE-2026-33701

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-33701/
Summaries are generated and may contain mistakes; the official description above is the record.
