---
title: "CVE-2026-39842: Expression Injection in OpenRemote"
url: https://erroneo.us/security/cve/CVE-2026-39842/
description: "CVE-2026-39842 (io.openremote:openremote-manager (Maven)): OpenRemote is an open-source IoT platform. Versions 1.21.0 and below contain two interrelated…"
type: vulnerability-record
section: "Security Digest"
date_published: 2026-04-14
date_modified: 2026-04-24
publisher: erroneo.us
author: erroneo.us Security Desk
cve: "CVE-2026-39842"
kev: false
cvss: 10
epss: 0.00912
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-39842: Expression Injection in OpenRemote

**Signal:** Critical, preconditions apply. Severe if exploited, but exploitation needs conditions that may not apply to you. (Computed from CISA KEV, EPSS and CVSS; not an editorial verdict.)

## Should you act?

- Not in CISA KEV , but CISA’s SSVC assessment records a public proof-of-concept, so attack code exists.
- EPSS 0.9% , percentile 60: FIRST’s model estimates a 0.9% chance of exploitation activity in the next 30 days, higher than 60% of all scored CVEs (moderate). EPSS is a probability, not a verdict.
- Needs an account (low (any account)). Exposure depends on who can log in.
- Only applies if your dependency tree includes io.openremote:openremote-manager (Maven) <= 1.21.0, fixed in 1.22.0 . Check your lockfile, including transitive dependencies.

## What it is

OpenRemote is an open-source IoT platform. Versions 1.21.0 and below contain two interrelated expression injection vulnerabilities in the rules engine that allow arbitrary code execution on the server. The JavaScript rules engine executes user-supplied scripts via Nashorn's ScriptEngine.eval() without sandboxing, class filtering, or access restrictions, and the authorization check in RulesResourceImpl only restricts Groovy rules to superusers while leaving JavaScript rules unrestricted for any user with the write:rules role. Additionally, the Groovy rules engine has a GroovyDenyAllFilter security filter that is defined but never registered, as the registration code is commented out, rendering the SandboxTransformer ineffective for superuser-created Groovy rules. A non-superuser attacker with the write:rules role can create JavaScript rulesets that execute with full JVM access, enabling remote code execution as root, arbitrary file read, environment variable theft including database credentials, and complete multi-tenant isolation bypass to access data across all realms. This issue has been fixed in version 1.22.0.

## Affected packages

- Maven `io.openremote:openremote-manager` <= 1.21.0 → fixed: 1.22.0

## Affected products (CVE record)

- openremote openremote: < 1.22.0

## Severity

- GitHub_M CVSS 3.1: 10 `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H`
- GitHub CVSS 3.1: 9.9 `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H`

## Exploitation

- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- CISA SSVC assessment: exploitation poc , automatable no , technical impact total .
- FIRST EPSS (model of 2026-10-21): 0.91% probability of exploitation activity in the next 30 days; percentile 60.

## Sources

- [GitHub Advisory GHSA-7mqr-33rv-p3mp](https://github.com/advisories/GHSA-7mqr-33rv-p3mp)
- [CVE.org record CVE-2026-39842](https://www.cve.org/CVERecord?id=CVE-2026-39842)
- [NVD entry CVE-2026-39842](https://nvd.nist.gov/vuln/detail/CVE-2026-39842)
- [github.com](https://github.com/openremote/openremote/security/advisories/GHSA-7mqr-33rv-p3mp)
- [github.com](https://github.com/openremote/openremote/releases/tag/1.22.0)

---
Source page: https://erroneo.us/security/cve/CVE-2026-39842/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
