[CVE Request] CWE-863: ABAC authorization bypass via trailing slash route normalization in Eclipse BaSyx Go Components
# CVE Reservation Request
<!--
There's help in the Eclipse Foundation Project Handbook https://www.eclipse.org/projects/handbook/#vulnerability-cve
Note that this issue is configured (see the quick actions at the bottom) to be created as confidential.
Note that a vulnerability does not need to actually be resolved before it is reported and that these reports can be revised as needed (reopen the issue to request changes).
If you do not know how to fill certain fields, mark that in the comment and we will help you.
You can delete the comments (or not).
-->
The Eclipse Foundation is a [Common Vulnerabilities and Exposures](https://cve.mitre.org/) (CVE) Numbering Authority.
Creating this ticket initiates **reservation** of a CVE ID for the documented vulnerability. The reserved CVE ID will be posted in a comment below, and kept **confidential** until explicit publication request.
> [!note]
> To request CVE *publication*, please open a [CVE publication](https://gitlab.eclipse.org/security/cve-assignment/-/issues/new?issuable_template=CVE%20Publication%20Request) ticket.
Please fill in the fields below to draft the CVE record.
---
<!--
Required. Specify the project's name (e.g., "Eclipse Dash") and Eclipse Foundation ID, e.g., "technology.dash".
-->
## CVE record information
**Project name:** Eclipse BaSyx Go Components
**Project id:** dt.basyx
<!--
Required (for publication). Specify the version range as precisely as possible, e.g., "[3.0, 3.5.1]" or "[3.0, 3.5.1)". Note that using the standard range notion, square brackets are inclusive (i.e., that version is included in the range), and round brakets are exclusive (the vulnerability affects all versions up to but not including the named version).
Multiple ranges can be provided.
-->
**Versions affected:** (, 1.0.1)
<!--
Required (for publication). The Common Weakness Enumeration (CWE) code comes from here: https://cwe.mitre.org/, e.g., "CWE-93: Improper Neutralization of CRLF Sequences ('CRLF Injection')". Multiple codes can be provided.
-->
**Common Weakness Enumeration (CWE):**
- [CWE-863: Incorrect Authorization](https://cwe.mitre.org/data/definitions/863.html)
- [CWE-284: Improper Access Control](https://cwe.mitre.org/data/definitions/284.html)
- [CWE-180: Incorrect Behavior Order: Validate Before Canonicalize](https://cwe.mitre.org/data/definitions/180.html)
<!--
Optional. The Common Attack Pattern Enumerations and Classifications (CAPEC) code comes from here: https://capec.mitre.org/, e.g., "CAPEC-63: Cross-Site Scripting (XSS)". Multiple codes can be provided.
-->
**Common Attack Pattern Enumerations and Classifications (CAPEC):**
- [CAPEC-1: Accessing Functionality Not Properly Constrained by ACLs](https://capec.mitre.org/data/definitions/1.html)
<!--
Optional. Provide a Common Vulnerability Scoring System (CVSS). Note that if you do not provide this, then some agencies (e.g. NIST) will compute it on the project's behalf. Please be sure to include the CVSS version number, e.g., "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H".
There's help here: https://www.first.org/cvss/calculator/4.0
-->
**Common Vulnerability Scoring System:** CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
<!--
Required (for publication). The summary should start with the name of the project, e.g., "Eclipse Vert.x", then a description of the affected versions, followed by a description of the problem. The summary should be concise. For example,
"In Eclipse Vert.x version 3.0 to 3.5.1, the HttpServer response
headers and HttpClient request headers do not filter carriage return and
line feed characters from the header value. This allow unfiltered values
to inject a new header in the client request or server response."
-->
**Summary:**
In Eclipse BaSyx Go Components versions up to and including 1.0.0, ABAC-enabled deployments are vulnerable to an authorization bypass caused by inconsistent trailing-slash handling between the ABAC middleware and the HTTP router.
The shared router configuration used Chi's `middleware.StripSlashes`, so a request such as `GET /shells/` was dispatched to the registered `GET /shells` route. However, the ABAC middleware evaluated the original request path including the trailing slash. If ABAC route lookup did not find a matching slash-suffixed route, the request was passed onward and the router then stripped the slash and executed the protected handler without the intended ABAC authorization decision and without the expected ABAC query filters.
An unauthenticated or unauthorized network attacker could append a trailing slash to protected API routes to reach handlers that should have been denied by ABAC policy. Depending on the exposed component, HTTP method, and deployed policy, this could allow unauthorized read, create, update, delete, or upload operations.
The issue affects ABAC-enabled deployments of services that use the shared router and ABAC middleware, including AAS Repository, Submodel Repository, AAS Registry, Submodel Registry, Concept Description Repository, Discovery, AAS Environment upload, and related services. The issue is fixed in Eclipse BaSyx Go Components v1.0.1.
<!--
Required (for publication). Include a link to the issue (e.g., GitHub Security Advisory) that's being used to track/resolve the issue. Other links that provide more information can be provided. For example, you may later publish the link to the fix commit.
-->
**Links:**
- Confidential vulnerability report: https://gitlab.eclipse.org/security/vulnerability-reports/-/work_items/580
- Fix pull request: https://github.com/eclipse-basyx/basyx-go-components/pull/442
- Fixed release: https://github.com/eclipse-basyx/basyx-go-components/releases/tag/v1.0.1
<!--
Optional. Add the name or pseudonym of the person who has reported the issue.
-->
**Credits:** Sebastian Eicke
<!-- Quick actions will configure the state of the issue. Leave these. -->
<!-- Keep this as the last line -->
issue