OpenRemote CVE-2026-63224
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with low-privilege asset account
-
DeliveryStore SQL metacharacters in asset name
-
ExploitWrite datapoint for an attribute
-
ExecutionRequest CSV crosstab export
-
PersistInjected SELECT runs in COPY query
-
ImpactExfiltrated rows returned in ZIP/CSV
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated session plus permission to create or rename at least one asset, permission to read/export datapoints for at least one attribute on that asset, and access to a CSV crosstab datapoint export format (CSV_CROSSTAB or CSV_CROSSTAB_MINUTE). The injection is carried through the asset display name, which is concatenated into both a double-quoted SQL identifier and a $cat$ dollar-quoted category query, and triggered only via the crosstab export path - non-crosstab export formats do not reach this vulnerable query builder. No direct database access, server filesystem access, or token forgery is needed. Limiting factors: authentication is mandatory (PR:L, not unauthenticated), the attacker must hold asset write/export capability, and cross-tenant exfiltration additionally depends on the manager's PostgreSQL role having read access to other realms' shared tables. |
| Impact | This is a genuine, actionable vulnerability but not a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N, VC:H/VI:L/VA:L, SC:N) scores 7.2 (High) and is internally consistent with the description: it is network-reachable through the authenticated manager API, low-complexity once authenticated, and requires low privileges (PR:L) - specifically the ordinary ability to create/rename an asset and read/export its datapoints, not administrative rights. Confidentiality impact is high (database exfiltration, potentially cross-tenant), while integrity and availability are only low because the demonstrated primitive is read-only; the advisory explicitly states integrity/availability effects were not established. No EPSS score was supplied and the vulnerability is not in CISA KEV, so there is no evidence of widespread or active exploitation; the vuln.today decision label is 'this_week', consistent with a prioritize-but-not-emergency posture. The GHSA advisory documents a working researcher proof-of-concept (it safely returned current_user, current_database(), and an aggregate row count), but no standalone public exploit code reference is provided in the input. The main nuance to verify: the real-world blast radius depends on the PostgreSQL role the manager service uses - cross-tenant/shared-table exposure is possible only if that role can read those tables, which is a deployment-specific condition the CVE cannot confirm per environment. |
| Exploit ScenarioDerived | A low-privileged but authenticated OpenRemote user who can create or rename an asset stores SQL metacharacters in the asset's display name, writes a datapoint value for one of its attributes, then requests a CSV crosstab datapoint export for that attribute. Because the asset name is concatenated into a COPY (SELECT ... FROM crosstab(...)) TO STDOUT statement as both a double-quoted identifier and a dollar-quoted category value, the injected SELECT runs and its rows are streamed back inside the normal ZIP/CSV response, exfiltrating database contents. The GHSA advisory confirms a demonstrated proof-of-concept that retrieved database context and a table row count, though no weaponized exploit code is published in the available references. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Authenticated SQL injection in the OpenRemote datapoint export API (versions prior to 1.26.0) lets a user who is permitted to create or rename an asset and export its datapoints store SQL metacharacters in the asset name and receive injected SELECT output inside the normal ZIP/CSV crosstab response, giving a practical database read primitive with no direct database, filesystem or token-forgery access. Because the injected query executes with the manager's PostgreSQL role, a multi-tenant deployment can expose other tenants' rows when that role can read shared manager tables, while integrity and availability effects were not established by the demonstrated read primitive. The vendor advisory describes a proof of concept that returned current_user, current_database() and an application-table row count, but no active exploitation is confirmed (not in CISA KEV); with the assessed vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L this is a genuine, actionable vulnerability but not a drop-everything emergency.
RemediationAI
Upgrade OpenRemote to 1.26.0 or later, which is the vendor-released fix; the upstream commit 02ac83074b81617add814b2a72d459abdf374147 replaces asset-name-derived SQL syntax with generated column keys (ordinal, column_key temp table columns, select column_key ... order by ordinal as the category query, generated crosstab column identifiers) and writes the CSV header in application code, so user-controlled labels never enter the query. Details and release links are in GHSA-cgfv-jrfp-2r7v and https://github.com/openremote/core/releases/tag/1.26.0. Until the upgrade is deployed, reduce exposure by tightening who holds the required preconditions: restrict asset create/rename and datapoint read/export permissions to trusted operators, since the injection requires both capabilities on the same asset, and deny or disable the CSV_CROSSTAB and CSV_CROSSTAB_MINUTE export formats at the API/UI layer so the vulnerable query builder is never reached - the trade-off is that crosstab-style exports become unavailable to legitimate users. As defense-in-depth the advisory also suggests rejecting SQL-significant sequences such as double quotes and the $cat$ delimiter in asset display names, but that is not a complete fix and may reject legitimately named assets. Separately, constraining the manager's PostgreSQL role to only the tables it needs limits cross-tenant read impact if exploitation occurs, at the cost of re-validating any application features that depend on broader table access.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in maven
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw lives in the Java manager service (AssetDatapointService, buildCopyToStdoutQuery) that renders datapoint exports. For the CSV crosstab formats the service creates temporary tables, then builds a raw PostgreSQL statement of the form COPY (SELECT ... FROM crosstab(...)) TO STDOUT WITH (FORMAT CSV, HEADER, DELIMITER ',') and streams the COPY output back to the caller as a ZIP containing CSV. The tablefunc crosstab function takes both a category query and a column-definition list, and the export builder derived both from the composite label "<asset name> : <attribute name>": the label was pasted into a double-quoted column identifier and into a category query wrapped in a fixed $cat$ dollar-quoted delimiter. This is CWE-89 caused by manual SQL string construction: display data from the application model is reused as executable SQL syntax across two contexts that need different escaping rules, and the code only escaped single quotes in one string-literal path, leaving embedded double quotes (identifier breakout) and the fixed dollar-quote boundary unprotected. The upstream commit 02ac83074b81617add814b2a72d459abdf374147 removes user-controlled text from SQL entirely, storing ordinal, entity_id, attribute_name and a generated column_key in the temp table, using select column_key ... order by ordinal as the category query, emitting generated identifiers such as column_key as crosstab output columns, and writing the human-readable CSV header row in Java rather than from asset names.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N
Authenticated low-privilege asset/export user (PR:L), network API, low complexity; high confidentiality from DB exfiltration, only low integrity/availability as the demonstrated primitive is read-only.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
OpenRemote is an open-source internet-of-things platform. Prior to 1.26.0, the datapoint export API constructs CSV crosstab SQL by concatenating an asset name and attribute name into a COPY query that uses crosstab and streams TO STDOUT. The asset name enters both a double-quoted column identifier and a category query enclosed by the fixed $cat$ delimiter. Escaping single quotes in one string context does not escape embedded double quotes in identifiers or protect that dollar-quote boundary. An authenticated user permitted to create or rename an asset and read/export datapoints for one of its attributes can store SQL metacharacters in the name and request a crosstab export, causing injected SELECT output to be returned in the normal ZIP/CSV response. This enables database exfiltration without direct database or filesystem access or token forgery. In a multi-tenant deployment it can expose other tenants' data if the manager's database role can read shared tables; integrity and availability effects are not established by the demonstrated read primitive. This issue is fixed in version 1.26.0.
Technical POC Analysis
CWE-89 SQL injection in OpenRemote's datapoint export path.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity SQL injection (CVE-2026-63224) affects the OpenRemote datapoint export API in versions prior to 1.26.0, allowing an authenticated user with asset-creation privileges to read data from the underlying database through normal export responses. For multi-tenant deployments, this can expose other tenants' data, so leadership should care because it creates a cross-customer data confidentiality and contractual trust risk. No active exploitation is confirmed (not in CISA KEV), and no public exploit code has been identified at time of analysis.
No vendor-released patch identified at time of analysis for versions prior to 1.26.0; interim mitigations include restricting asset create/rename privileges to trusted users, narrowing the PostgreSQL manager role's read access to shared multi-tenant tables, and monitoring export endpoints for SQL metacharacters in asset names. Upgrading to OpenRemote 1.26.0 or later is the vendor-recommended remediation path.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
NVD
CVE.org
EPSS
GitHub
Exploit-DB