
Скрипт проверки для CVE-2025-62506, уязвимости повышения привилегий в сервисных аккаунтах MinIO, проверяющий, могут ли ограниченные аккаунты обходить встроенные политики для создания неограниченных аккаунтов.
Этот репозиторий содержит скрипт проверки для CVE-2025-62506 — уязвимости повышения привилегий в сервисных аккаунтах MinIO и аккаунтах STS (Security Token Service).
CVE-2025-62506 — это уязвимость повышения привилегий, которая позволяет ограниченным сервисным аккаунтам и аккаунтам STS обходить ограничения своих встроенных политик при выполнении операций с «собственным» аккаунтом, в частности при создании новых сервисных аккаунтов для того же пользователя.
Уязвимость существует в логике проверки политик IAM в cmd/iam.go. При проверке сессионных политик для ограниченных аккаунтов, выполняющих операции со своим собственным аккаунтом (например, создание сервисных аккаунтов), код некорректно полагался на аргумент DenyOnly.
Флаг DenyOnly используется для того, чтобы позволить аккаунтам выполнять действия, связанные с их собственным аккаунтом, проверяя только, явно ли запрещено действие. Однако, когда присутствует сессионная политика (суб-политика), система должна проверять, что действие действительно разрешено сессионной политикой, а не только то, что оно не запрещено.
8.1 (Высокая) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Все версии до RELEASE.2025-10-15T17-29-55Z
RELEASE.2025-10-15T17-29-55Z
Скрипт verify_cve_2025_62506.py проверяет, уязвима ли ваша установка MinIO к CVE-2025-62506.
docker-compose.yml)miniodocker-compose up -d
pip install minio
Скрипт проверки выполняет следующие шаги:
bucket1, bucket2, bucket3bucket1 и bucket2s3:* (все операции S3)bucket1/*, bucket2/*bucket3)restrictedrestricted123bucket1 и bucket2bucket3)docker-compose up -d
python verify_cve_2025_62506.py
🚀 Скрипт проверки уязвимости CVE-2025-62506
============================================================
📋 Описание скрипта:
Этот скрипт проверяет уязвимость повышения привилегий сервисных аккаунтов MinIO (CVE-2025-62506)
Уязвимость позволяет ограниченным сервисным аккаунтам обходить встроенные политики при создании новых аккаунтов
============================================================
📦 Шаг 1: Создание тестовых bucket'ов
Создание трех тестовых bucket'ов: bucket1, bucket2, bucket3
Используются для проверки ограничений прав доступа аккаунта
----------------------------------------
✅ Создан bucket: bucket1
✅ Создан bucket: bucket2
✅ Создан bucket: bucket3
🔒 Шаг 2: Создание ограниченной политики
Создание политики, которая разрешает доступ только к bucket1 и bucket2
Эта политика будет применена к ограниченному сервисному аккаунту
----------------------------------------
✅ Создана политика: restricted-policy
📋 Разрешения политики:
- Разрешенные действия: s3:* (все операции S3)
- Разрешенные ресурсы: bucket1/*, bucket2/*
- Запрещенные ресурсы: Все остальные bucket'и
👤 Шаг 3: Создание ограниченного сервисного аккаунта
Создание сервисного аккаунта с указанной выше ограниченной политикой
Этот аккаунт может получить доступ только к bucket1 и bucket2
----------------------------------------
✅ Создан сервисный аккаунт: restricted
📋 Разрешения аккаунта:
- Ключ доступа: restricted
- Политика: Встроенная ограниченная политика (только bucket1 и bucket2)
- Ожидаемое поведение: Может получить доступ только к указанным bucket'ам
🧪 Шаг 4: Проверка доступа ограниченного аккаунта
Использование ограниченного аккаунта для вывода списка bucket'ов, проверка правильности ограничений разрешений
Ожидаемый результат: Может видеть только bucket1 и bucket2
----------------------------------------
✅ Ограниченный аккаунт корректно ограничен разрешенными bucket'ами
Доступные bucket'и: ['bucket1', 'bucket2']
⚡ Шаг 5: Попытка повышения привилегий (тест уязвимости)
Использование ограниченного аккаунта для попытки создания нового сервисного аккаунта
Новый аккаунт без указанной политики должен наследовать ограничения родительского аккаунта
Уязвимость: Ограниченный аккаунт может обойти политику для создания неограниченных новых аккаунтов
----------------------------------------
✅ Создан сервисный аккаунт: newroot
📋 Попытка использования нового сервисного аккаунта для доступа к неавторизованному bucket3
⬆️ Попытка загрузки объекта в bucket3 для проверки разрешений
⬇️ Попытка вывода списка объектов для проверки разрешений
Найден объект: test-object
❌ УЯЗВИМА: Ограниченный аккаунт успешно создал новый сервисный аккаунт
Разрешения нового аккаунта: Без ограничений (унаследованы полные разрешения родительского аккаунта)
Это указывает на наличие уязвимости CVE-2025-62506!
🧹 Очистка тестовых ресурсов...
----------------------------------------
✅ Удален сервисный аккаунт: restricted
✅ Удален сервисный аккаунт: newroot
✅ Удалена политика: restricted-policy
✅ Удален bucket: bucket1
✅ Удален bucket: bucket2
✅ Удален bucket: bucket3
============================================================
📊 Результаты проверки
============================================================
❌ РЕЗУЛЬТАТ: УЯЗВИМА — присутствует CVE-2025-62506
💡 Рекомендация: Немедленно обновитесь до исправленной версии RELEASE.2025-10-15T17-29-55Z или выше
🔗 Ссылка: https://github.com/minio/minio/security/advisories/GHSA-jjjj-jwhf-8rgr
============================================================
🚀 Скрипт проверки уязвимости CVE-2025-62506
============================================================
📋 Описание скрипта:
Этот скрипт проверяет уязвимость повышения привилегий сервисных аккаунтов MinIO (CVE-2025-62506)
Уязвимость позволяет ограниченным сервисным аккаунтам обходить встроенные политики при создании новых аккаунтов
============================================================
📦 Шаг 1: Создание тестовых bucket'ов
Создание трех тестовых bucket'ов: bucket1, bucket2, bucket3
Используются для проверки ограничений прав доступа аккаунта
----------------------------------------
✅ Создан bucket: bucket1
✅ Создан bucket: bucket2
✅ Создан bucket: bucket3
🔒 Шаг 2: Создание ограниченной политики
Создание политики, которая разрешает доступ только к bucket1 и bucket2
Эта политика будет применена к ограниченному сервисному аккаунту
----------------------------------------
✅ Создана политика: restricted-policy
📋 Разрешения политики:
- Разрешенные действия: s3:* (все операции S3)
- Разрешенные ресурсы: bucket1/*, bucket2/*
- Запрещенные ресурсы: Все остальные bucket'и
👤 Шаг 3: Создание ограниченного сервисного аккаунта
Создание сервисного аккаунта с указанной выше ограниченной политикой
Этот аккаунт может получить доступ только к bucket1 и bucket2
----------------------------------------
✅ Создан сервисный аккаунт: restricted
📋 Разрешения аккаунта:
- Ключ доступа: restricted
- Политика: Встроенная ограниченная политика (только bucket1 и bucket2)
- Ожидаемое поведение: Может получить доступ только к указанным bucket'ам
🧪 Шаг 4: Проверка доступа ограниченного аккаунта
Использование ограниченного аккаунта для вывода списка bucket'ов, проверка правильности ограничений разрешений
Ожидаемый результат: Может видеть только bucket1 и bucket2
----------------------------------------
✅ Ограниченный аккаунт корректно ограничен разрешенными bucket'ами
Доступные bucket'и: ['bucket1', 'bucket2']
⚡ Шаг 5: Попытка повышения привилегий (тест уязвимости)
Использование ограниченного аккаунта для попытки создания нового сервисного аккаунта
Новый аккаунт без указанной политики должен наследовать ограничения родительского аккаунта
Уязвимость: Ограниченный аккаунт может обойти политику для создания неограниченных новых аккаунтов
----------------------------------------
✅ БЕЗОПАСНО: Ограниченный аккаунт не смог создать новый сервисный аккаунт
Ошибка: В доступе корректно отказано
Детали: Access Denied.
🧹 Очистка тестовых ресурсов...
----------------------------------------
✅ Удален сервисный аккаунт: restricted
✅ Удалена политика: restricted-policy
✅ Удален bucket: bucket1
✅ Удален bucket: bucket2
✅ Удален bucket: bucket3
============================================================
📊 Результаты проверки
============================================================
✅ РЕЗУЛЬТАТ: БЕЗОПАСНО — CVE-2025-62506 исправлена
🎉 Ваша версия MinIO имеет исправление этой уязвимости
============================================================
Этот скрипт проверки предоставляется как есть для целей тестирования безопасности.