io.openremote:openremote-manager

GHSA-H3M5-97JQ-QJRF

GHSA-H3M5-97JQ-QJRF is a critical-severity security vulnerability in io.openremote:openremote-manager (maven), affecting versions < 1.24.2. It is fixed in 1.24.2.

Key facts
CVSS score
9.6
Critical
Attack vector
Network
Issuing authority
GitHub Advisory Database
Affected package
io.openremote:openremote-manager
Fixed in
1.24.2
Disclosed
Not available

Summary

Summary OpenRemote Manager is vulnerable to a cross-tenant Insecure Direct Object Reference (IDOR) in the bulk alarm deletion endpoint. An authenticated user in any realm can delete alarms belonging to other realms (tenants) by supplying arbitrary alarm IDs. The vulnerability exists because the bulk removeAlarms() method only verifies that the caller's own realm is active and accessible, but never checks whether the targeted alarm IDs belong to the caller's realm before deleting them. This allows any user with alarm write permissions in their own realm to permanently destroy alarm records, including safety-critical and security alerts, belonging to any other tenant on the same OpenRemote installation. [Additional Information] The singular removeAlarm() method correctly validates that the target alarm's realm matches the caller's access: // CORRECT (singular): SentAlarm alarm = alarmService.getAlarm(alarmId); if (!isRealmActiveAndAccessible(alarm.getRealm())) { throw new ForbiddenException(...); } The plural removeAlarms() method is missing this per-alarm realm check and only validates the caller's own realm, a check that is trivially satisfied for any authenticated user: The underlying service queries contain no realm scoping: // AlarmService.getAlarms(List<Long>): "select sa from SentAlarm sa where sa.id in :ids" // no realm filter // AlarmService.removeAlarms(): "delete from SentAlarm sa where sa.id in :ids" // no realm filter Tenant A (attacker) : realm = "tenant-a" user = [email protected] role = WRITEALARMSROLE Tenant B (victim) : realm = "tenant-b" alarms with IDs 1174,1173, 1180 exist DELETE /api/smartcity/alarm HTTP/2 Content-Type: application/json [1174,1173, 1180] /// <- alarm ID <img width="1280" height="404" alt="image" src="https://github.com/user-attachments/assets/ffbebea2-2248-42a0-bb22-7a0dc51c78ce" />

Impact

Severity and exposure

GHSA-H3M5-97JQ-QJRF has a CVSS score of 9.6 (Critical). The vector is network-reachable, low privileges required, and no user interaction. A CVSS score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether this affects your application depends on whether the vulnerable code is present and reachable in your environment.

A fixed version is available (1.24.2). Upgrading removes the vulnerable code path.

Affected versions

maven

  • io.openremote:openremote-manager (< 1.24.2)

Security releases

  • io.openremote:openremote-manager → 1.24.2 (maven)
Kodem intelligence

Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.

Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter instead of chasing every advisory.

Kodem's runtime-powered SCA identifies whether GHSA-H3M5-97JQ-QJRF is reachable in your applications. Explore open-source security for your team.

See if GHSA-H3M5-97JQ-QJRF is reachable in your applications. Get a demo

Already deployed Kodem? See GHSA-H3M5-97JQ-QJRF in your environment

Remediation advice

Upgrade io.openremote:openremote-manager to 1.24.2 or later to resolve this vulnerability.

Kodem Kai can prioritize this vulnerability in your dependency tree and generate a fix recommendation.

Frequently asked questions about GHSA-H3M5-97JQ-QJRF

What is GHSA-H3M5-97JQ-QJRF?

GHSA-H3M5-97JQ-QJRF is a critical-severity security vulnerability in io.openremote:openremote-manager (maven), affecting versions < 1.24.2. It is fixed in 1.24.2.

How severe is GHSA-H3M5-97JQ-QJRF?

GHSA-H3M5-97JQ-QJRF has a CVSS score of 9.6 (Critical). This score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether it represents real risk in your environment depends on whether the vulnerable code is present and reachable.

Which versions of io.openremote:openremote-manager are affected by GHSA-H3M5-97JQ-QJRF?

io.openremote:openremote-manager (maven) versions < 1.24.2 is affected.

Is there a fix for GHSA-H3M5-97JQ-QJRF?

Yes. GHSA-H3M5-97JQ-QJRF is fixed in 1.24.2. Upgrade to this version or later.

Is GHSA-H3M5-97JQ-QJRF exploitable, and should I be worried?

Whether GHSA-H3M5-97JQ-QJRF is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo

What actually determines whether GHSA-H3M5-97JQ-QJRF is exploitable, and how bad it is?

Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.

How do I fix GHSA-H3M5-97JQ-QJRF?

Upgrade io.openremote:openremote-manager to 1.24.2 or later.

Stop the waste.
Protect your environment with Kodem.