GHSA-mm2q-qcmx-gw4w: RustFS: ListServiceAccount authorizes against wrong admin action, enabling cross-user enumeration and root service account takeover
ListServiceAccount (GET /rustfs/admin/v3/list-service-accounts?user=<other>) authorizes cross-user requests against UpdateServiceAccountAdminAction instead of ListServiceAccountsAdminAction at rustfs/src/admin/handlers/service_account.rs:936. The handler accepts the wrong admin action and rejects the correct one:
- A user granted only
admin:UpdateServiceAccountenumerates every service account in the cluster, including the root user’s (HTTP 200, full metadata). - A user granted only
admin:ListServiceAccounts— the permission name every IAM document treats as “list service accounts” — receives HTTP 403 AccessDenied on the same request.
Because service account access keys act as the identifier a UpdateServiceAccount holder needs to rotate a secret, and the UpdateServiceAccount handler at rustfs/src/admin/handlers/service_account.rs:489 performs no ownership check on the target access key, leaking those access keys lets a delegated “service account updater” role overwrite root-sa-1’s secret, authenticate as the root user’s service account, and create a persistent backdoor admin with admin:* + s3:*. Proven live end-to-end against rustfs/rustfs:latest (1.0.0-alpha.91, revision d4ea14c2) — the same revision is byte-identical on current origin/main.
References
Code Behaviors & Features
Detect and mitigate GHSA-mm2q-qcmx-gw4w with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →