Description
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.
Published: 2026-04-14
Score: 10 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Remote Code Execution
Action: Immediate Patch
AI Analysis

Impact

OpenRemote is an open‑source IoT platform that allows users to create rules executed by a JavaScript engine without any sandboxing or class filtering. The rules engine evaluates user‑supplied scripts via Nashorn's ScriptEngine.eval() and the authorization check erroneously permits JavaScript rules from any user with the write:rules role while only guarding Groovy rules for superusers. This misconfiguration, combined with an unregistered Groovy security filter, allows a non‑superuser attacker to create JavaScript rules that run with full JVM privileges, granting remote code execution as root, arbitrary file access, environment variable theft including database credentials, and full multi‑tenant isolation bypass. The flaw therefore enables attackers to execute arbitrary code on the server with the privileges of the application process.

Affected Systems

OpenRemote platform, versions 1.21.0 and earlier. The affected product is the OpenRemote open‑source IoT platform. No additional software is listed.

Risk and Exploitability

The CVSS score of 10 indicates the maximum severity and signifies that the vulnerability allows unrestricted code execution. The EPSS score is not available, so the likelihood of exploitation is unknown, but the fact that any authenticated user with the write:rules role can create the malicious rule means that if an attacker can gain legitimate access or compromise a user account, they can immediately exploit the flaw. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog, but the lack of a supply‑chain mechanism for this kind of flaw does not diminish the risk. An attacker can deliver the malicious rule via the standard web interface or API that accepts rule definitions, which makes the attack vector likely to be a remote authenticated compromise. Because the flaw allows escalation to root‑level code execution, the potential damage is substantial and would affect all tenants.

Generated by OpenCVE AI on April 15, 2026 at 00:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade OpenRemote to version 1.22.0 or later to apply the vendor patch that removes the vulnerability.
  • Restrict the write:rules role to superusers only or revoke it from non‑superusers until the patch is applied.
  • Disable JavaScript rule execution entirely by removing or disabling the Nashorn engine or by deleting any existing JavaScript rule definitions.
  • If Groovy rules are needed, enable the GroovyDenyAllFilter by uncommenting the registration code so that sandbox security is enforced for superusers as well.

Generated by OpenCVE AI on April 15, 2026 at 00:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-7mqr-33rv-p3mp Expression Injection in OpenRemote
History

Wed, 15 Apr 2026 14:00:00 +0000

Type Values Removed Values Added
First Time appeared Openremote
Openremote openremote
Vendors & Products Openremote
Openremote openremote

Tue, 14 Apr 2026 23:45:00 +0000

Type Values Removed Values Added
Description 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.
Title OpenRemote is Vulnerable to Expression Injection
Weaknesses CWE-917
CWE-94
References
Metrics cvssV3_1

{'score': 10, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H'}


Subscriptions

Openremote Openremote
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-04-14T23:21:22.242Z

Reserved: 2026-04-07T19:13:20.377Z

Link: CVE-2026-39842

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-04-15T04:17:36.903

Modified: 2026-04-15T04:17:36.903

Link: CVE-2026-39842

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-04-15T14:28:41Z

Weaknesses