/

CVE-2026-58273

Severity:

HIGH RISK

(8.1)

Authorization Bypass (CWE-639) in Rucio Sign-URL API

CVE-2026-58273

Received

Vulnerability type

Category:

Authorization Bypass

CWE:

CWE-639

Impact:

Unauthorized access to cloud-backed data, including potential cross-tenant access

Severity:

HIGH RISK

(8.1)

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

Rucio's /credentials/signurl endpoint uses the caller-supplied X-Rucio-Account header for a permission check instead of the account established by token authentication. An authenticated low-privilege user may be able to obtain presigned URLs for cloud-backed objects, potentially enabling data access or changes beyond their authorized scope.

Rucio's /credentials/signurl endpoint uses the caller-supplied X-Rucio-Account header for a permission check instead of the account established by token authentication. An authenticated low-privilege user may be able to obtain presigned URLs for cloud-backed objects, potentially enabling data access or changes beyond their authorized scope.

Affected context

The issue affects Rucio deployments with the /credentials/signurl endpoint when it relies on X-Rucio-Account rather than the authenticated issuer for authorization. The risk is particularly relevant where the endpoint can use stored S3, GCS, or Swift credentials to create URLs for reading, writing, or deleting objects. In multi-VO deployments, the X-Rucio-VO header may also affect tenant selection.

The issue affects Rucio deployments with the /credentials/signurl endpoint when it relies on X-Rucio-Account rather than the authenticated issuer for authorization. The risk is particularly relevant where the endpoint can use stored S3, GCS, or Swift credentials to create URLs for reading, writing, or deleting objects. In multi-VO deployments, the X-Rucio-VO header may also affect tenant selection.

Exploit preconditions

  • Attack surface: The Rucio /credentials/signurl endpoint
  • Required access: An authenticated account; the described issue does not require the caller to already have root privileges
  • Trigger point: Authorization when requesting a presigned URL for an object
  • Why exploitation is possible: The permission check trusts the caller-controlled X-Rucio-Account value instead of the authenticated issuer, allowing a low-privilege caller to present root for the root-only permission check
  • Additional context: Cloud-backed RSE credentials and, for cross-tenant exposure, a multi-VO deployment may increase the potential scope
  • Attack surface: The Rucio /credentials/signurl endpoint
  • Required access: An authenticated account; the described issue does not require the caller to already have root privileges
  • Trigger point: Authorization when requesting a presigned URL for an object
  • Why exploitation is possible: The permission check trusts the caller-controlled X-Rucio-Account value instead of the authenticated issuer, allowing a low-privilege caller to present root for the root-only permission check
  • Additional context: Cloud-backed RSE credentials and, for cross-tenant exposure, a multi-VO deployment may increase the potential scope

Why this happens

The endpoint makes an authorization decision using an identity supplied in a request header rather than the identity established by token authentication. This is an authorization bypass through a user-controlled key, mapping to CWE-639. Authorization checks should use a trusted, server-established principal and should consistently bind requested resources and tenant context to that principal.

The endpoint makes an authorization decision using an identity supplied in a request header rather than the identity established by token authentication. This is an authorization bypass through a user-controlled key, mapping to CWE-639. Authorization checks should use a trusted, server-established principal and should consistently bind requested resources and tenant context to that principal.

Potential impact

  • An attacker may obtain presigned read URLs and disclose data.
  • An attacker could obtain write or delete URLs and modify or remove objects.
  • Cloud-backed storage access may extend beyond the caller's intended permissions.
  • In multi-VO deployments, requests could enable unauthorized cross-tenant access.
  • An attacker may obtain presigned read URLs and disclose data.
  • An attacker could obtain write or delete URLs and modify or remove objects.
  • Cloud-backed storage access may extend beyond the caller's intended permissions.
  • In multi-VO deployments, requests could enable unauthorized cross-tenant access.

General mitigation guidance

Defensive patterns include:

  • Derive authorization identity from the authenticated server-side principal, not caller-controlled identity headers.
  • Enforce authorization for each requested operation and object using trusted identity and tenant context.
  • Treat account and VO headers as untrusted input; validate them against the authenticated principal and explicit delegation rules.
  • Apply least privilege to cloud credentials and limit their scope, permitted operations, and lifetime.
  • Avoid exposing presigned URLs with broader access or validity than the operation requires.

Defensive patterns include:

  • Derive authorization identity from the authenticated server-side principal, not caller-controlled identity headers.
  • Enforce authorization for each requested operation and object using trusted identity and tenant context.
  • Treat account and VO headers as untrusted input; validate them against the authenticated principal and explicit delegation rules.
  • Apply least privilege to cloud credentials and limit their scope, permitted operations, and lifetime.
  • Avoid exposing presigned URLs with broader access or validity than the operation requires.

How teams detect issues like this

  • Review endpoint code for permission checks that use request headers or other client-supplied identity values instead of the authenticated issuer.
  • Use static analysis and code review checks to flag authorization decisions based on untrusted identity or tenant fields.
  • Test that changing account or VO headers cannot elevate access or bypass object-level authorization.
  • Monitor sign-URL requests for mismatches between authenticated identity, requested account, tenant, object, and operation.
  • Enforce policies requiring server-established identities for authorization decisions.
  • Review endpoint code for permission checks that use request headers or other client-supplied identity values instead of the authenticated issuer.
  • Use static analysis and code review checks to flag authorization decisions based on untrusted identity or tenant fields.
  • Test that changing account or VO headers cannot elevate access or bypass object-level authorization.
  • Monitor sign-URL requests for mismatches between authenticated identity, requested account, tenant, object, and operation.
  • Enforce policies requiring server-established identities for authorization decisions.

Sources

SourceLink
github.comgithub.com/rucio/rucio/commit/64c0e6a6a93ae88427ff3b7d77532ce08c8a69ec
github.comgithub.com/rucio/rucio/commit/8bdc38994a8766658d0314d36afc104c9242c96f
github.comgithub.com/rucio/rucio/commit/8d9ba31514e6f5dca32b8c1db4738582cb37ec3a
github.comgithub.com/rucio/rucio/releases/tag/35.9.0
github.comgithub.com/rucio/rucio/releases/tag/38.6.0
github.comgithub.com/rucio/rucio/releases/tag/41.0.0rc1
github.comgithub.com/rucio/rucio/security/advisories/GHSA-5j9r-fx4x-rpvg

Frequently asked

questions

It can be reached through the Rucio endpoint by an authenticated user, subject to the deployment's network and access controls.

No. The described issue allows a low-privilege authenticated user to supply root in the account header; the vulnerable check trusts that header instead of the authenticated issuer.

Base authorization on the server-established authenticated identity, and bind object and tenant checks to that identity.

Treat identity and tenant headers as untrusted, enforce object-level authorization, and test that caller-controlled values cannot change the effective principal or permissions.

It can be reached through the Rucio endpoint by an authenticated user, subject to the deployment's network and access controls.

No. The described issue allows a low-privilege authenticated user to supply root in the account header; the vulnerable check trusts that header instead of the authenticated issuer.

Base authorization on the server-established authenticated identity, and bind object and tenant checks to that identity.

Treat identity and tenant headers as untrusted, enforce object-level authorization, and test that caller-controlled values cannot change the effective principal or permissions.

Find out what's already
exploitable in your codebase.