
Verifikationsskript für CVE-2025-62506, eine Privilege-Escalation-Schwachstelle in MinIO-Dienstkonten, das testet, ob eingeschränkte Konten Inline-Richtlinien umgehen können, um uneingeschränkte Konten zu erstellen.
Dieses Repository enthält ein Verifizierungsskript für CVE-2025-62506, eine Privilegienausweitungsschwachstelle in MinIO-Dienstkonten und STS-Konten (Security Token Service).
CVE-2025-62506 ist eine Privilegienausweitungsschwachstelle, die es eingeschränkten Dienstkonten und STS-Konten ermöglicht, ihre Inline-Policy-Einschränkungen bei der Durchführung von "eigenen" Kontovorgängen zu umgehen, insbesondere beim Erstellen neuer Dienstkonten für denselben Benutzer.
Die Schwachstelle existiert in der IAM-Policy-Validierungslogik in cmd/iam.go. Bei der Validierung von Sitzungsrichtlinien für eingeschränkte Konten, die Vorgänge an ihrem eigenen Konto durchführen (z. B. das Erstellen von Dienstkonten), stützte sich der Code fälschlicherweise auf das Argument DenyOnly.
Das Flag DenyOnly wird verwendet, um Konten die Durchführung von Aktionen im Zusammenhang mit ihrem eigenen Konto zu ermöglichen, indem nur geprüft wird, ob die Aktion explizit verweigert wird. Wenn jedoch eine Sitzungsrichtlinie (Unterrichtlinie) vorhanden ist, sollte das System validieren, dass die Aktion tatsächlich von der Sitzungsrichtlinie erlaubt wird, nicht nur, dass sie nicht verweigert wird.
8.1 (Hoch) - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Alle Versionen vor RELEASE.2025-10-15T17-29-55Z
RELEASE.2025-10-15T17-29-55Z
Das Skript verify_cve_2025_62506.py testet, ob Ihre MinIO-Installation anfällig für CVE-2025-62506 ist.
docker-compose.yml gestartet werden)miniodocker-compose up -d
pip install minio
Das Verifizierungsskript folgt diesen Schritten:
bucket1, bucket2, bucket3bucket1 und bucket2 erlaubts3:* (alle S3-Operationen)bucket1/*, bucket2/*bucket3)restrictedrestricted123bucket1 und bucket2 sehenbucket3)docker-compose up -d
python verify_cve_2025_62506.py
🚀 CVE-2025-62506 Verifizierungsskript für Sicherheitslücken
============================================================
📋 Skriptbeschreibung:
Dieses Skript testet auf die MinIO-Dienstkonto-Privilegienausweitungsschwachstelle (CVE-2025-62506)
Die Schwachstelle ermöglicht es eingeschränkten Dienstkonten, Inline-Policies beim Erstellen neuer Konten zu umgehen
============================================================
📦 Schritt 1: Test-Buckets erstellen
Erstellt drei Test-Buckets: bucket1, bucket2, bucket3
Wird verwendet, um die Zugriffsberechtigungseinschränkungen des Kontos zu testen
----------------------------------------
✅ Bucket erstellt: bucket1
✅ Bucket erstellt: bucket2
✅ Bucket erstellt: bucket3
🔒 Schritt 2: Eingeschränkte Policy erstellen
Erstellt eine Policy, die nur Zugriff auf bucket1 und bucket2 erlaubt
Diese Policy wird auf das eingeschränkte Dienstkonto angewendet
----------------------------------------
✅ Policy erstellt: restricted-policy
📋 Policy-Berechtigungen:
- Erlaubte Aktionen: s3:* (alle S3-Operationen)
- Erlaubte Ressourcen: bucket1/*, bucket2/*
- Verweigerte Ressourcen: Alle anderen Buckets
👤 Schritt 3: Eingeschränktes Dienstkonto erstellen
Erstellt ein Dienstkonto mit der oben genannten eingeschränkten Policy
Dieses Konto kann nur auf bucket1 und bucket2 zugreifen
----------------------------------------
✅ Dienstkonto erstellt: restricted
📋 Kontoberechtigungen:
- Zugriffsschlüssel: restricted
- Policy: Inline-eingeschränkte Policy (nur bucket1 und bucket2)
- Erwartetes Verhalten: Kann nur auf angegebene Buckets zugreifen
🧪 Schritt 4: Zugriff des eingeschränkten Kontos testen
Verwendet das eingeschränkte Konto, um Buckets aufzulisten und zu verifizieren, dass die Berechtigungen ordnungsgemäß eingeschränkt sind
Erwartetes Ergebnis: Kann nur bucket1 und bucket2 sehen
----------------------------------------
✅ Eingeschränktes Konto korrekt auf erlaubte Buckets begrenzt
Zugängliche Buckets: ['bucket1', 'bucket2']
⚡ Schritt 5: Privilegienausweitung versuchen (Schwachstellentest)
Verwendet das eingeschränkte Konto, um zu versuchen, ein neues Dienstkonto zu erstellen
Neues Konto ohne angegebene Policy sollte übergeordnete Einschränkungen erben
Schwachstelle: Eingeschränktes Konto kann Policy umgehen, um uneingeschränkte neue Konten zu erstellen
----------------------------------------
✅ Dienstkonto erstellt: newroot
📋 Versuche, mit dem neuen Dienstkonto auf nicht autorisiertes bucket3 zuzugreifen
⬆️ Versuche, ein Objekt in bucket3 hochzuladen, um Berechtigungen zu verifizieren
⬇️ Versuche, Objekte aufzulisten, um Berechtigungen zu verifizieren
Objekt gefunden: test-object
❌ ANFÄLLIG: Eingeschränktes Konto hat erfolgreich ein neues Dienstkonto erstellt
Berechtigungen des neuen Kontos: Uneingeschränkt (vollständige übergeordnete Berechtigungen geerbt)
Dies weist auf das Vorhandensein von CVE-2025-62506 hin!
🧹 Testressourcen werden bereinigt...
----------------------------------------
✅ Dienstkonto entfernt: restricted
✅ Dienstkonto entfernt: newroot
✅ Policy entfernt: restricted-policy
✅ Bucket entfernt: bucket1
✅ Bucket entfernt: bucket2
✅ Bucket entfernt: bucket3
============================================================
📊 Verifizierungsergebnisse
============================================================
❌ ERGEBNIS: ANFÄLLIG - CVE-2025-62506 ist vorhanden
💡 Empfehlung: Aktualisieren Sie sofort auf die gepatchte Version RELEASE.2025-10-15T17-29-55Z oder höher
🔗 Referenz: https://github.com/minio/minio/security/advisories/GHSA-jjjj-jwhf-8rgr
============================================================
🚀 CVE-2025-62506 Verifizierungsskript für Sicherheitslücken
============================================================
📋 Skriptbeschreibung:
Dieses Skript testet auf die MinIO-Dienstkonto-Privilegienausweitungsschwachstelle (CVE-2025-62506)
Die Schwachstelle ermöglicht es eingeschränkten Dienstkonten, Inline-Policies beim Erstellen neuer Konten zu umgehen
============================================================
📦 Schritt 1: Test-Buckets erstellen
Erstellt drei Test-Buckets: bucket1, bucket2, bucket3
Wird verwendet, um die Zugriffsberechtigungseinschränkungen des Kontos zu testen
----------------------------------------
✅ Bucket erstellt: bucket1
✅ Bucket erstellt: bucket2
✅ Bucket erstellt: bucket3
🔒 Schritt 2: Eingeschränkte Policy erstellen
Erstellt eine Policy, die nur Zugriff auf bucket1 und bucket2 erlaubt
Diese Policy wird auf das eingeschränkte Dienstkonto angewendet
----------------------------------------
✅ Policy erstellt: restricted-policy
📋 Policy-Berechtigungen:
- Erlaubte Aktionen: s3:* (alle S3-Operationen)
- Erlaubte Ressourcen: bucket1/*, bucket2/*
- Verweigerte Ressourcen: Alle anderen Buckets
👤 Schritt 3: Eingeschränktes Dienstkonto erstellen
Erstellt ein Dienstkonto mit der oben genannten eingeschränkten Policy
Dieses Konto kann nur auf bucket1 und bucket2 zugreifen
----------------------------------------
✅ Dienstkonto erstellt: restricted
📋 Kontoberechtigungen:
- Zugriffsschlüssel: restricted
- Policy: Inline-eingeschränkte Policy (nur bucket1 und bucket2)
- Erwartetes Verhalten: Kann nur auf angegebene Buckets zugreifen
🧪 Schritt 4: Zugriff des eingeschränkten Kontos testen
Verwendet das eingeschränkte Konto, um Buckets aufzulisten und zu verifizieren, dass die Berechtigungen ordnungsgemäß eingeschränkt sind
Erwartetes Ergebnis: Kann nur bucket1 und bucket2 sehen
----------------------------------------
✅ Eingeschränktes Konto korrekt auf erlaubte Buckets begrenzt
Zugängliche Buckets: ['bucket1', 'bucket2']
⚡ Schritt 5: Privilegienausweitung versuchen (Schwachstellentest)
Verwendet das eingeschränkte Konto, um zu versuchen, ein neues Dienstkonto zu erstellen
Neues Konto ohne angegebene Policy sollte übergeordnete Einschränkungen erben
Schwachstelle: Eingeschränktes Konto kann Policy umgehen, um uneingeschränkte neue Konten zu erstellen
----------------------------------------
✅ SICHER: Eingeschränktes Konto konnte kein neues Dienstkonto erstellen
Fehler: Berechtigung korrekt verweigert
Details: Access Denied.
🧹 Testressourcen werden bereinigt...
----------------------------------------
✅ Dienstkonto entfernt: restricted
✅ Policy entfernt: restricted-policy
✅ Bucket entfernt: bucket1
✅ Bucket entfernt: bucket2
✅ Bucket entfernt: bucket3
============================================================
📊 Verifizierungsergebnisse
============================================================
✅ ERGEBNIS: SICHER - CVE-2025-62506 ist gepatcht
🎉 Ihre MinIO-Version hat diese Schwachstelle gepatcht
============================================================
Dieses Verifizierungsskript wird wie besehen für Sicherheitstestzwecke bereitgestellt.