Skip to main content

OpenRemote Manager CVE-2026-56784

| EUVDEUVD-2026-38444 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-06-23 VulnCheck GHSA-pv42-3qx9-m56g
8.6
CVSS 4.0 · Vendor: VulnCheck
Share

Severity by source

Vendor (VulnCheck) PRIMARY
8.6 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
8.5 HIGH

Network REST endpoint, low complexity; requires any authenticated tenant user (PR:L); scope changes because impact crosses realm boundary; integrity high (bulk deletion), confidentiality low (ID/existence leakage), availability N at system level.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
X

Lifecycle Timeline

7
Analysis Updated
Jun 23, 2026 - 22:28 vuln.today
v3 (cvss_changed)
Analysis Updated
Jun 23, 2026 - 22:28 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jun 23, 2026 - 22:22 vuln.today
cvss_changed
CVSS changed
Jun 23, 2026 - 22:22 NVD
7.2 (HIGH) 8.6 (HIGH)
Patch available
Jun 23, 2026 - 14:17 EUVD
Source Code Evidence Fetched
Jun 23, 2026 - 13:07 vuln.today
Analysis Generated
Jun 23, 2026 - 13:07 vuln.today

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 3 maven packages depend on io.openremote:openremote-manager (3 direct, 0 indirect)

Ecosystem-wide dependent count for version 1.25.0.

DescriptionCVE.org

OpenRemote Manager before 1.24.2 contains an insecure direct object reference vulnerability in the removeAlarms() method that allows authenticated users to delete alarms from other tenants by supplying arbitrary alarm IDs. The bulk deletion endpoint fails to validate that targeted alarm IDs belong to the caller's realm, enabling cross-tenant permanent destruction of safety-critical and security alerts.

AnalysisAI

Cross-tenant alarm destruction in OpenRemote Manager before 1.24.2 lets any authenticated user in one realm permanently delete alarms belonging to other tenants by submitting arbitrary alarm IDs to the bulk removeAlarms() endpoint. The flaw is reported by VulnCheck with a CVSS 4.0 score of 8.6 and a proof-of-concept exists per the SSVC assessment, but there is no public exploit identified at time of analysis and the issue is not listed in CISA KEV. Because alarm IDs are sequential auto-increment values, enumeration and mass deletion of safety-critical and security alerts across tenants is trivial.

Technical ContextAI

OpenRemote is an open-source IoT/asset management platform whose Manager component (Maven artifact io.openremote:openremote-manager, CPE cpe:2.3:a:openremote:openremote) enforces multi-tenant isolation via 'realms'. The root cause is CWE-639 (Authorization Bypass Through User-Controlled Key), with an overlapping CWE-862 (Missing Authorization): while the singular removeAlarm() correctly fetches the alarm and checks isRealmActiveAndAccessible(alarm.getRealm()), the bulk removeAlarms() only verifies isRealmActiveAndAccessible(getAuthenticatedRealmName()) - a check trivially satisfied by any logged-in user - and then issues JPA queries ('select sa from SentAlarm sa where sa.id in :ids' / 'delete from SentAlarm sa where sa.id in :ids') with no realm scoping. Combined with sequential @GeneratedValue Long IDs, this turns the endpoint into a cross-realm bulk-delete primitive.

RemediationAI

Vendor-released patch: upgrade OpenRemote Manager to 1.24.2 or later, which adds per-alarm realm validation in the bulk path; consult GHSA-h3m5-97jq-qjrf (https://github.com/openremote/openremote/security/advisories/GHSA-h3m5-97jq-qjrf) and the VulnCheck advisory for details. If immediate upgrade is not possible, restrict access to the bulk alarm deletion REST endpoint at the reverse proxy or API gateway (deny the bulk DELETE path while still allowing the singular removeAlarm() which is correctly scoped) - the trade-off is loss of legitimate bulk-cleanup functionality. As a secondary control, audit existing alarm-write role assignments and remove the privilege from any tenant user that does not strictly need it, and enable database-level audit logging on the SentAlarm table so any cross-realm deletions before patching are detectable; this does not prevent abuse but provides forensic visibility. Avoid relying on alarm ID unpredictability as a control because IDs are sequential auto-increment Longs.

Share

CVE-2026-56784 vulnerability details – vuln.today

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