/

CVE-2026-15704

Severity:

CRITICAL RISK

(9.8)

ABAC AuthZ Bypass (CWE-863) in BaSyx Go Router

CVE-2026-15704

Awaiting Analysis

Vulnerability type

Category:

Authorization Bypass

CWE:

CWE-180, CWE-284, CWE-863

Impact:

Unauthorized Access and Data Modification

Severity:

CRITICAL RISK

(9.8)

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

ABAC-enabled Eclipse BaSyx Go Components up to 1.0.0 suffer from an authorization bypass caused by inconsistent trailing-slash handling between the HTTP router and ABAC middleware.

A network attacker can append a trailing slash to protected API endpoints so that requests bypass ABAC policy checks and filters, potentially enabling unauthorized read, write, delete, or upload actions.

ABAC-enabled Eclipse BaSyx Go Components up to 1.0.0 suffer from an authorization bypass caused by inconsistent trailing-slash handling between the HTTP router and ABAC middleware.

A network attacker can append a trailing slash to protected API endpoints so that requests bypass ABAC policy checks and filters, potentially enabling unauthorized read, write, delete, or upload actions.

Affected context

This vulnerability affects BaSyx Go deployments that:

  • Enable Attribute-Based Access Control (ABAC) middleware
  • Use the shared HTTP router configuration with middleware.StripSlashes
  • Rely on ABAC route lookups to enforce authorization and query filtering

Impacted services include the AAS Repository, Submodel Repository, AAS Registry, Submodel Registry, Concept Description Repository, Discovery, AAS Environment upload, and related components that share this routing and middleware stack.

This vulnerability affects BaSyx Go deployments that:

  • Enable Attribute-Based Access Control (ABAC) middleware
  • Use the shared HTTP router configuration with middleware.StripSlashes
  • Rely on ABAC route lookups to enforce authorization and query filtering

Impacted services include the AAS Repository, Submodel Repository, AAS Registry, Submodel Registry, Concept Description Repository, Discovery, AAS Environment upload, and related components that share this routing and middleware stack.

Exploit preconditions

  • Attack surface: Public or internal HTTP APIs exposed by BaSyx Go Components
  • Required access: Ability to send crafted HTTP requests to the affected services; no prior authentication is strictly required if ABAC is the primary control
  • Trigger point: Requests to ABAC-protected routes where a trailing slash variant (e.g., /shells/ vs /shells) exists
  • Why exploitation is possible: The router strips trailing slashes and dispatches to the protected handler, but the ABAC middleware evaluates the original path and may fail to match slash-suffixed routes, allowing the request to pass without an authorization decision or filters
  • Attack surface: Public or internal HTTP APIs exposed by BaSyx Go Components
  • Required access: Ability to send crafted HTTP requests to the affected services; no prior authentication is strictly required if ABAC is the primary control
  • Trigger point: Requests to ABAC-protected routes where a trailing slash variant (e.g., /shells/ vs /shells) exists
  • Why exploitation is possible: The router strips trailing slashes and dispatches to the protected handler, but the ABAC middleware evaluates the original path and may fail to match slash-suffixed routes, allowing the request to pass without an authorization decision or filters

Why this happens

The underlying bug stems from inconsistent normalization of URL paths between the ABAC middleware and the HTTP router.

Chi's middleware.StripSlashes rewrites incoming paths (e.g., /resource/ becomes /resource), while ABAC lookup relies on the unmodified request path, including trailing slashes.

This mismatch maps to CWE-180: Incorrect Calculation / Inconsistent Handling of Paths and CWE-863: Incorrect Authorization, where security logic is applied to a different representation of the resource than the one ultimately served, causing ABAC checks to be skipped on certain route variants.

The underlying bug stems from inconsistent normalization of URL paths between the ABAC middleware and the HTTP router.

Chi's middleware.StripSlashes rewrites incoming paths (e.g., /resource/ becomes /resource), while ABAC lookup relies on the unmodified request path, including trailing slashes.

This mismatch maps to CWE-180: Incorrect Calculation / Inconsistent Handling of Paths and CWE-863: Incorrect Authorization, where security logic is applied to a different representation of the resource than the one ultimately served, causing ABAC checks to be skipped on certain route variants.

Potential impact

  • Unauthorized read access to AAS, submodels, registries, and related resources
  • Unauthorized creation or modification of assets, submodels, or concept descriptions
  • Unauthorized deletion of data or registry entries
  • Unauthorized uploads to AAS Environment and related services
  • Circumvention of ABAC query filters, leading to overbroad data exposure
  • Unauthorized read access to AAS, submodels, registries, and related resources
  • Unauthorized creation or modification of assets, submodels, or concept descriptions
  • Unauthorized deletion of data or registry entries
  • Unauthorized uploads to AAS Environment and related services
  • Circumvention of ABAC query filters, leading to overbroad data exposure

General mitigation guidance

Mitigations typically focus on ensuring consistent path normalization across routing and authorization layers and strengthening default-deny behavior.

Recommended patterns include:

  • Normalizing request paths once at the edge and ensuring all middleware, including authorization, operate on the same canonical path
  • Defining authorization policies against canonicalized routes only, avoiding ambiguous variants with or without trailing slashes
  • Applying a default-deny authorization strategy where any route mismatch results in denial rather than pass-through
  • Keeping ABAC enforcement tightly coupled with request dispatch so that handlers cannot execute without an authorization decision
  • Minimizing reliance on path quirks (such as trailing slashes) for resource identification in security-sensitive logic

Mitigations typically focus on ensuring consistent path normalization across routing and authorization layers and strengthening default-deny behavior.

Recommended patterns include:

  • Normalizing request paths once at the edge and ensuring all middleware, including authorization, operate on the same canonical path
  • Defining authorization policies against canonicalized routes only, avoiding ambiguous variants with or without trailing slashes
  • Applying a default-deny authorization strategy where any route mismatch results in denial rather than pass-through
  • Keeping ABAC enforcement tightly coupled with request dispatch so that handlers cannot execute without an authorization decision
  • Minimizing reliance on path quirks (such as trailing slashes) for resource identification in security-sensitive logic

How teams detect issues like this

Detection can leverage both code-level and runtime techniques:

  • Static analysis or code review to identify authorization middleware that receives different path representations than the router (e.g., checks before or after path rewriting middleware)
  • Inspection of routing and middleware chains to confirm that security checks happen after path normalization and for all HTTP methods and route variants
  • Logging and monitoring of authorization decisions versus handler executions to flag cases where handlers are invoked without preceding ABAC checks
  • Policy enforcement that rejects requests when no explicit ABAC rule matches the canonical route, helping highlight unprotected endpoints

Detection can leverage both code-level and runtime techniques:

  • Static analysis or code review to identify authorization middleware that receives different path representations than the router (e.g., checks before or after path rewriting middleware)
  • Inspection of routing and middleware chains to confirm that security checks happen after path normalization and for all HTTP methods and route variants
  • Logging and monitoring of authorization decisions versus handler executions to flag cases where handlers are invoked without preceding ABAC checks
  • Policy enforcement that rejects requests when no explicit ABAC rule matches the canonical route, helping highlight unprotected endpoints

Sources

SourceLink
github.comgithub.com/eclipse-basyx/basyx-go-components/pull/442
github.comgithub.com/eclipse-basyx/basyx-go-components/releases/tag/v1.0.1
gitlab.eclipse.orggitlab.eclipse.org/security/cve-assignment/-/work_items/164
gitlab.eclipse.orggitlab.eclipse.org/security/vulnerability-reports/-/work_items/580

Frequently asked

questions

It is broadly exploitable wherever ABAC-protected BaSyx Go services are reachable over the network. Any client capable of sending HTTP requests can attempt trailing-slash variants of protected routes.

The attacker only needs network access to the affected endpoints. If ABAC is the primary authorization layer, no prior authentication may be required to exploit the bypass on certain routes.

The safest fix is to enforce consistent, canonical path handling across router and authorization middleware, then apply a strict default-deny ABAC policy so that any route variant without a matching rule is rejected before reaching handlers.

Future designs should treat URL normalization as a security concern: normalize paths once at the edge, ensure all security middleware uses the canonical form, review changes to routing and middleware ordering, and include tests that verify authorization on both trailing-slash and non-trailing-slash route variants.

It is broadly exploitable wherever ABAC-protected BaSyx Go services are reachable over the network. Any client capable of sending HTTP requests can attempt trailing-slash variants of protected routes.

The attacker only needs network access to the affected endpoints. If ABAC is the primary authorization layer, no prior authentication may be required to exploit the bypass on certain routes.

The safest fix is to enforce consistent, canonical path handling across router and authorization middleware, then apply a strict default-deny ABAC policy so that any route variant without a matching rule is rejected before reaching handlers.

Future designs should treat URL normalization as a security concern: normalize paths once at the edge, ensure all security middleware uses the canonical form, review changes to routing and middleware ordering, and include tests that verify authorization on both trailing-slash and non-trailing-slash route variants.

Find out what's already
exploitable in your codebase.