
Скрипт проверки для 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']