CVE-2026-49439
Java vulnerability analysis and mitigation

Overview

CVE-2026-49439 is a missing authorization vulnerability in OpenRemote's IoT platform that allows users with only read:assets privileges to write predicted datapoints via the PUT /api/{realm}/asset/predicted/{assetId}/{attributeName} endpoint. It affects io.openremote:openremote-manager versions prior to 1.24.1. The vulnerability was published by ebariaux on June 3, 2026, and added to the GitHub Advisory Database on July 6, 2026. It carries a CVSS v3.1 base score of 4.3 (Medium) (GitHub Advisory).

Technical details

The root cause is CWE-862 (Missing Authorization): the writePredictedDatapoints method in AssetPredictedDatapointResourceImpl.java incorrectly checked the READ_ASSETS role (ClientRole.READ_ASSETS) instead of the WRITE_ATTRIBUTES role when authorizing write operations, allowing the assetPredictedDatapointService.updateValues(...) call to proceed for read-only users. Additionally, the restricted-user path checked ACCESS_RESTRICTED_READ metadata instead of ACCESS_RESTRICTED_WRITE, and unauthenticated access checked ACCESS_PUBLIC_READ instead of ACCESS_PUBLIC_WRITE. The fix (commit 583dbbf) corrects all three permission checks to use write-appropriate roles and metadata (GitHub Advisory, Patch Commit).

Impact

Successful exploitation allows any authenticated user with read:assets privileges to tamper with predicted datapoints for any asset within their accessible realm, violating data integrity. In IoT and smart building contexts (OpenRemote's primary use case), corrupted predicted datapoints could mislead automated decision-making systems, affect energy management, or disrupt building automation workflows. There is no confidentiality or availability impact, and the scope is limited to the affected component (GitHub Advisory).

Exploitability

A public proof-of-concept is included in the advisory itself, demonstrating that a user with only read:assets can issue a PUT request to write arbitrary predicted datapoint values and receive an HTTP 204 success response. Exploitation requires only a valid low-privileged account and network access to the API. There is no evidence of in-the-wild exploitation, no known threat actor attribution, and the CVE is not listed in the CISA KEV catalog. The EPSS score is not yet published (GitHub Advisory).

Exploitation steps

  1. Obtain credentials: Acquire or register an account in the target OpenRemote realm with only the read:assets role — no write:assets or WRITE_ATTRIBUTES role is needed.
  2. Authenticate: Obtain a valid access token via the OpenRemote Keycloak authentication endpoint for the target realm.
  3. Identify target asset: Use the read API (e.g., GET /api/{realm}/asset/{assetId}) to enumerate accessible assets and their attribute names.
  4. Craft the write request: Send a PUT request to PUT /api/{realm}/asset/predicted/{assetId}/{attributeName} with a JSON body containing the desired timestamp and value, e.g., [{"x":1779199999001,"y":1337}], and include the Bearer token in the Authorization header.
  5. Confirm write: A HTTP 204 response confirms the predicted datapoint was written successfully, bypassing the intended authorization check (GitHub Advisory, Patch Commit).

Indicators of compromise

  • Network: Unexpected PUT requests to /api/{realm}/asset/predicted/{assetId}/{attributeName} originating from accounts that do not hold WRITE_ATTRIBUTES or write:assets roles.
  • Logs: API access logs showing HTTP 204 responses to PUT /api/*/asset/predicted/* endpoints for users authenticated with read-only tokens; log entries from AssetPredictedDatapointResourceImpl without corresponding write-role authorization.
  • Database: Predicted datapoint records with unexpected values, timestamps, or sources inconsistent with configured prediction services — particularly entries where the writing user's role audit trail shows only READ_ASSETS.

Mitigation and workarounds

Upgrade io.openremote:openremote-manager to version 1.24.1 or later, which corrects the authorization checks to require WRITE_ATTRIBUTES for write operations and ACCESS_RESTRICTED_WRITE/ACCESS_PUBLIC_WRITE metadata for restricted and unauthenticated access respectively. No configuration-based workaround is documented; the only effective remediation is upgrading to the patched version. As an interim measure, administrators should audit user roles and remove read:assets from accounts that do not require it, minimizing the attack surface (GitHub Advisory, Patch Commit).

Additional resources


SourceThis report was generated using AI

Related Java vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-58400CRITICAL9.1
  • Java logoJava
  • org.geonetwork-opensource:gs-web-app
NoYesSep 03, 2026
CVE-2026-63219HIGH8.6
  • Java logoJava
  • org.geonetwork-opensource:gn-services
NoYesSep 03, 2026
CVE-2026-49832HIGH8
  • Java logoJava
  • org.dspace:dspace-api
NoYesSep 02, 2026
CVE-2026-55864HIGH7.7
  • Java logoJava
  • org.geonetwork-opensource:gn-web-app
NoYesSep 09, 2026
CVE-2026-49833MEDIUM5.5
  • Java logoJava
  • org.dspace:dspace-api
NoYesSep 02, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management