CRITICAL🇬🇧 English

CVE-2026-39842

RCE przez injection wyrażeń w silniku reguł OpenRemote (IoT)

CVSS 9.9v3.1pub. 2026-04-15upd. 2026-04-23

OpenRemote w wersjach 1.21.0 i wcześniejszych zawiera dwie powiązane ze sobą podatności typu expression injection w silniku reguł, umożliwiające zdalne wykonanie kodu na serwerze. Zagrożenie jest krytyczne, ponieważ każdy użytkownik posiadający rolę write:rules może uruchomić dowolny kod z pełnym dostępem do JVM jako root.

Pokaż oryginał (EN)

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.

🤖 Analiza AI
Jak działa

Silnik reguł JavaScript wykonuje dostarczone przez użytkownika skrypty poprzez wywołanie Nashorn ScriptEngine.eval() bez jakiegokolwiek sandboxingu, filtrowania klas ani ograniczeń dostępu. Sprawdzenie uprawnień w RulesResourceImpl ogranicza reguły Groovy wyłącznie do superużytkowników, natomiast reguły JavaScript pozostawia bez ograniczeń dla każdego użytkownika z rolą write:rules. Dodatkowo w silniku reguł Groovy zdefiniowany filtr bezpieczeństwa GroovyDenyAllFilter nigdy nie zostaje zarejestrowany, ponieważ odpowiadający za to kod rejestracyjny jest zakomentowany — tym samym mechanizm SandboxTransformer pozostaje nieskuteczny nawet dla reguł tworzonych przez superużytkowników.

Skutki

Atakujący nieposiadający uprawnień superużytkownika, ale dysponujący rolą write:rules, może zdalnie wykonać dowolny kod jako root, odczytywać pliki systemowe, wykradać zmienne środowiskowe (w tym dane uwierzytelniające do bazy danych) oraz całkowicie obejść izolację wielodostępną (multi-tenant), uzyskując dostęp do danych wszystkich dzierżawców (realms) w platformie.

Mitygacja

Należy jak najszybciej zaktualizować OpenRemote do wersji 1.22.0, w której podatność została naprawiona. Szczegóły dostępne są w oficjalnym wydaniu na GitHub (tag 1.22.0) oraz w security advisory GHSA-7mqr-33rv-p3mp.

Kogo dotyczy

OpenRemote w wersjach 1.21.0 i wcześniejszych

Uwagi

Podatność dotyczy platformy IoT open-source, co oznacza potencjalnie szerokie narażenie środowisk przemysłowych i budynkowych. Zarejestrowanie jej jako podatności umożliwiającej pełny dostęp między dzierżawcami (multi-tenant isolation bypass) czyni ją szczególnie niebezpieczną w środowiskach SaaS opartych na OpenRemote.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
  • Openremote

    APP
    Openremote
    < 1.22.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
RCE
CWE
Referencje

Powiązane podatności

CVE-2022-31860CRITICAL9.8ten sam produkt

An issue was discovered in OpenRemote through 1.0.4 allows attackers to execute arbitrary code via a crafted G...

CVE-2026-40882HIGH7.6ten sam produkt

OpenRemote is an open-source internet-of-things platform. Prior to version 1.22.0, the Velbus asset import pat...

CVE-2026-41166HIGH7.0ten sam produkt

OpenRemote is an open-source internet-of-things platform. Prior to version 1.22.1, a user who has `write:admin...