/

CVE-2026-54640

Severity:

HIGH RISK

(7.6)

XXE (CWE-611) in OpenRemote KNX Protocol Handler Service

CVE-2026-54640

Deferred

Vulnerability type

Category:

XML External Entity (XXE) Injection

CWE:

CWE-611

Impact:

Information Disclosure and Server-Side Request Forgery

Severity:

HIGH RISK

(7.6)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

OpenRemote's KNX protocol handler may process an authenticated user's uploaded ETS project XML with parsers that allow external entity resolution. A regular realm user who can upload a crafted project may cause the server to read files accessible to the JVM process or make server-side requests.

OpenRemote's KNX protocol handler may process an authenticated user's uploaded ETS project XML with parsers that allow external entity resolution. A regular realm user who can upload a crafted project may cause the server to read files accessible to the JVM process or make server-side requests.

Affected context

The issue may occur in OpenRemote deployments that:

  • Enable the KNX protocol handler and ETS project import functionality
  • Allow authenticated realm users to upload ETS project ZIP archives
  • Process the archive's 0.xml file through XML transformers or input factories
  • Use parser configurations that permit external entity resolution

The affected processing path is the KNX asset import method, while other protocol handlers may apply different parser protections.

The issue may occur in OpenRemote deployments that:

  • Enable the KNX protocol handler and ETS project import functionality
  • Allow authenticated realm users to upload ETS project ZIP archives
  • Process the archive's 0.xml file through XML transformers or input factories
  • Use parser configurations that permit external entity resolution

The affected processing path is the KNX asset import method, while other protocol handlers may apply different parser protections.

Exploit preconditions

  • Attack surface: Authenticated ETS project upload and KNX asset import
  • Required access: A regular realm user account with permission to upload or import an ETS project
  • Trigger point: Parsing of 0.xml during KNXProtocol.startAssetImport
  • Why exploitation is possible: XML parser and transformer configurations may resolve external entities supplied through attacker-controlled project content
  • Attack surface: Authenticated ETS project upload and KNX asset import
  • Required access: A regular realm user account with permission to upload or import an ETS project
  • Trigger point: Parsing of 0.xml during KNXProtocol.startAssetImport
  • Why exploitation is possible: XML parser and transformer configurations may resolve external entities supplied through attacker-controlled project content

Why this happens

The underlying flaw is incomplete protection of XML processing components against external entity resolution. When untrusted XML is passed to a transformer or input factory without consistently disabling external entities, external DTDs, and related URI access, parser behavior can access resources beyond the uploaded document. This maps to CWE-611: Improper Restriction of XML External Entity Reference, commonly known as XML External Entity injection.

The underlying flaw is incomplete protection of XML processing components against external entity resolution. When untrusted XML is passed to a transformer or input factory without consistently disabling external entities, external DTDs, and related URI access, parser behavior can access resources beyond the uploaded document. This maps to CWE-611: Improper Restriction of XML External Entity Reference, commonly known as XML External Entity injection.

Potential impact

  • An attacker may read local files accessible to the JVM process
  • The server may make requests to internal or external network resources
  • Cloud metadata or internal service information could be exposed
  • Authentication material or application configuration may be disclosed
  • The vulnerable service could be used as a pivot point for further attacks
  • An attacker may read local files accessible to the JVM process
  • The server may make requests to internal or external network resources
  • Cloud metadata or internal service information could be exposed
  • Authentication material or application configuration may be disclosed
  • The vulnerable service could be used as a pivot point for further attacks

General mitigation guidance

Mitigation typically focuses on making XML parsing deny external resource access by default and applying those controls consistently across every parser and transformation layer.

Common defensive patterns include:

  • Disable external general entities, external parameter entities, and external DTD loading
  • Restrict document and stylesheet access to the minimum required local resources
  • Prefer hardened, namespace-aware XML APIs with secure processing enabled
  • Validate uploaded archive structure and XML content against an explicit schema
  • Treat uploaded project files as untrusted regardless of the user's realm role
  • Run the service with least-privilege filesystem and network permissions
  • Isolate import processing from sensitive internal networks where practical

Mitigation typically focuses on making XML parsing deny external resource access by default and applying those controls consistently across every parser and transformation layer.

Common defensive patterns include:

  • Disable external general entities, external parameter entities, and external DTD loading
  • Restrict document and stylesheet access to the minimum required local resources
  • Prefer hardened, namespace-aware XML APIs with secure processing enabled
  • Validate uploaded archive structure and XML content against an explicit schema
  • Treat uploaded project files as untrusted regardless of the user's realm role
  • Run the service with least-privilege filesystem and network permissions
  • Isolate import processing from sensitive internal networks where practical

How teams detect issues like this

Organizations can detect this class of issue through:

  • Static analysis rules identifying XML factories, transformers, and SAX-based parsers created without secure feature settings
  • Code review checks for external entity, DTD, URI, and stylesheet access controls
  • Tests that submit XML containing external entity references and verify that no local or network resource is accessed
  • Dependency and policy scanning for parser configurations that permit external resolution
  • Runtime monitoring of import processes making unexpected filesystem or outbound network requests

Automated code review and secure-configuration tooling can help identify inconsistent hardening across parallel protocol handlers.

Organizations can detect this class of issue through:

  • Static analysis rules identifying XML factories, transformers, and SAX-based parsers created without secure feature settings
  • Code review checks for external entity, DTD, URI, and stylesheet access controls
  • Tests that submit XML containing external entity references and verify that no local or network resource is accessed
  • Dependency and policy scanning for parser configurations that permit external resolution
  • Runtime monitoring of import processes making unexpected filesystem or outbound network requests

Automated code review and secure-configuration tooling can help identify inconsistent hardening across parallel protocol handlers.

Sources

SourceLink
github.comgithub.com/openremote/core/commit/c28d3c60ebc2da68d9b6c4a6d7a5ad875a255ee9
github.comgithub.com/openremote/core/releases/tag/1.24.2
github.comgithub.com/openremote/core/security/advisories/GHSA-7v6w-c3f4-9wpq

Frequently asked

questions

It may be exploitable through the OpenRemote application by an authenticated user who can submit an ETS project for KNX asset import. It does not generally require direct operating-system access.

The attacker needs a regular realm account with the ability to upload or trigger processing of an ETS project. The practical scope depends on deployment-specific authorization controls.

Configure every XML parser and transformer in the import path to reject external entities, external DTDs, and unauthorized URI access by default, then validate uploaded content against an explicit schema.

Use secure XML parsing templates, apply consistent settings across all protocol handlers, test untrusted uploads for XXE behavior, and run import services with minimal filesystem and network privileges.

It may be exploitable through the OpenRemote application by an authenticated user who can submit an ETS project for KNX asset import. It does not generally require direct operating-system access.

The attacker needs a regular realm account with the ability to upload or trigger processing of an ETS project. The practical scope depends on deployment-specific authorization controls.

Configure every XML parser and transformer in the import path to reject external entities, external DTDs, and unauthorized URI access by default, then validate uploaded content against an explicit schema.

Use secure XML parsing templates, apply consistent settings across all protocol handlers, test untrusted uploads for XXE behavior, and run import services with minimal filesystem and network privileges.

Find out what's already
exploitable in your codebase.