Eclipse BaSyx Go Components w wersjach do 1.0.0 włącznie zawiera podatność umożliwiającą obejście mechanizmu kontroli dostępu ABAC (Attribute-Based Access Control) poprzez dodanie ukośnika na końcu adresu URL (trailing slash). Błąd krytyczny o CVSS 9.8 pozwala nieuwierzytelnionemu atakującemu na dostęp do chronionych zasobów API bez przejścia przez polityki autoryzacji.
▸ Pokaż oryginał (EN)
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.
Router HTTP korzysta z mechanizmu Chi `middleware.StripSlashes`, który usuwa końcowy ukośnik z ścieżki żądania przed przekazaniem go do odpowiedniego handlera. Middleware ABAC natomiast ocenia oryginalną ścieżkę żądania — tę zawierającą trailing slash. Jeśli w konfiguracji ABAC nie istnieje reguła dopasowana do ścieżki z ukośnikiem (np. `/shells/`), middleware uznaje, że decyzja autoryzacyjna nie jest wymagana i przepuszcza żądanie dalej. Router następnie usuwa ukośnik i wykonuje chroniony handler (np. dla `/shells`) bez przeprowadzenia kontroli ABAC i bez zastosowania filtrów zapytań wymaganych przez politykę.
Nieuprawniony lub nieuwierzytelniony atakujący sieciowy może ominąć polityki ABAC i wykonywać na chronionych zasobach operacje odczytu, tworzenia, modyfikacji, usuwania lub przesyłania plików — w zależności od metody HTTP, wystawionego komponentu i wdrożonej polityki.
Należy zaktualizować Eclipse BaSyx Go Components do wersji v1.0.1, w której problem został naprawiony. Patch dostępny jest w repozytorium projektu: https://github.com/eclipse-basyx/basyx-go-components/releases/tag/v1.0.1
Eclipse BaSyx Go Components w wersjach do 1.0.0 włącznie, we wdrożeniach z włączonym ABAC, obejmujących usługi: AAS Repository, Submodel Repository, AAS Registry, Submodel Registry, Concept Description Repository, Discovery, AAS Environment upload oraz powiązane serwisy korzystające ze wspólnej konfiguracji routera i middleware ABAC.
Poprawka została wprowadzona w wersji v1.0.1. Pull request z naprawą dostępny pod adresem: https://github.com/eclipse-basyx/basyx-go-components/pull/442. Podatność zarejestrowana przez Eclipse Security Team (CVE assignment: https://gitlab.eclipse.org/security/cve-assignment/-/work_items/164).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H