HIGHCVSS 8.8Vulnerability

CVE-2026-58273

## Summary The `/credentials/signurl` endpoint decides authorization from the client-supplied `X-Rucio-Account` HTTP header instead of the authenticated token's account. Any client holding **any** valid auth token (even a low-privilege account they legitimately own) can send `X-Rucio-Account: root` to pass the root-only permission check and have the Rucio server mint a presigned **read / write / delete** URL for an **arbitrary** object, signed with the RSE's stored S3 / GCS / Swift credentials. ## Details `SignURL.get()` takes the authorization principal from a request header and never uses the token-authenticated identity: ```python # lib/rucio/web/rest/flaskapi/v1/credentials.py account = request.headers.get('X-Rucio-Account', default=None) # L165 (attacker-controlled) ... result = get_signed_url(account, rse=rse, service=service, # L194 operation=operation, url=url, lifetime=lifetime, vo=vo) ``` The gateway then uses that header value as the `issuer` for the permission check: ```python # lib/rucio/gateway/credential.py auth_result = permission.has_permission(issuer=account, vo=vo, # L57 action='get_signed_url', kwargs=kwargs, ...) ``` and the permission function is root-only: ```python # lib/rucio/core/permission/generic.py def perm_get_signed_url(issuer, kwargs, session): return _is_root(issuer) # _is_root(x) -> x.external == 'root' ``` `InternalAccount('root', vo).external == 'root'` unconditionally, so the gate passes whenever the header is `root`. The endpoint is on `AuthenticatedBlueprint`, whose `before_request` hook validates the token and sets `request.environ['issuer']` **from the token** — but nothing ever compares `X-Rucio-Account` to it: ```python # lib/rucio/web/rest/flaskapi/v1/common.py (request_auth_env) flask.request.environ['issuer'] = auth.get('account') # L168 (the real account; unused by SignURL) ``` This is anomalous: every othe

Properties

Summary
rucio has an Authorization Bypass on REST API endpoint for signing URLs
Severity
high
Cvss score
8.8
Retrieved at
2026-10-28T23:45:49+00:00
Ghsa published
2026-10-28T19:50:05Z
Source url
https://github.com/advisories/GHSA-5j9r-fx4x-rpvg
Ghsa updated
2026-10-28T19:50:05Z
Ghsa id
GHSA-5j9r-fx4x-rpvg
Last source
GitHub Advisory Database
Cve id
CVE-2026-58273
Cvss vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
First seen by Signal
2026-10-28T23:45:49+00:00
Is ghsa only
false

Related Entities (3)

AFFECTS (1)

→[Software]pip/rucio

VULNERABLE_TO (1)

←[Software]pip/rucio

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-58273 (CVSS 8.8) — Ninja Signal Threat Intelligence | Ninja Signal