
Script de verificação para CVE-2025-62506, uma vulnerabilidade de escalonamento de privilégios em contas de serviço do MinIO, testando se contas restritas podem contornar políticas inline para criar contas sem restrições.
Este repositório contém um script de verificação para a CVE-2025-62506, uma vulnerabilidade de escalonamento de privilégios em contas de serviço MinIO e contas STS (Security Token Service).
CVE-2025-62506 é uma vulnerabilidade de escalonamento de privilégios que permite que contas de serviço restritas e contas STS contornem suas restrições de política inline ao realizar operações de conta "própria", especificamente ao criar novas contas de serviço para o mesmo usuário.
A vulnerabilidade existe na lógica de validação de política IAM em cmd/iam.go. Ao validar políticas de sessão para contas restritas que realizam operações em sua própria conta (como criar contas de serviço), o código dependia incorretamente do argumento DenyOnly.
O sinalizador DenyOnly é usado para permitir que contas realizem ações relacionadas à sua própria conta, verificando apenas se a ação é explicitamente negada. No entanto, quando uma política de sessão (sub-política) está presente, o sistema deve validar que a ação é realmente permitida pela política de sessão, não apenas que não é negada.
8.1 (Alta) - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Todas as versões anteriores a RELEASE.2025-10-15T17-29-55Z
RELEASE.2025-10-15T17-29-55Z
O script verify_cve_2025_62506.py testa se sua instalação MinIO é vulnerável à CVE-2025-62506.
docker-compose.yml fornecido)miniodocker-compose up -d
pip install minio
O script de verificação segue estas etapas:
bucket1, bucket2, bucket3bucket1 e bucket2s3:* (todas as operações S3)bucket1/*, bucket2/*bucket3)restrictedrestricted123bucket1 e bucket2bucket3)docker-compose up -d
python verify_cve_2025_62506.py
🚀 Script de Verificação da Vulnerabilidade CVE-2025-62506
============================================================
📋 Descrição do Script:
Este script testa a vulnerabilidade de escalonamento de privilégios de conta de serviço MinIO (CVE-2025-62506)
A vulnerabilidade permite que contas de serviço restritas contornem políticas inline ao criar novas contas
============================================================
📦 Etapa 1: Criar Buckets de Teste
Criando três buckets de teste: bucket1, bucket2, bucket3
Usados para testar as restrições de permissão de acesso da conta
----------------------------------------
✅ Bucket criado: bucket1
✅ Bucket criado: bucket2
✅ Bucket criado: bucket3
🔒 Etapa 2: Criar Política Restrita
Criando uma política que permite apenas acesso a bucket1 e bucket2
Esta política será aplicada à conta de serviço restrita
----------------------------------------
✅ Política criada: restricted-policy
📋 Permissões da Política:
- Ações Permitidas: s3:* (todas as operações S3)
- Recursos Permitidos: bucket1/*, bucket2/*
- Recursos Negados: Todos os outros buckets
👤 Etapa 3: Criar Conta de Serviço Restrita
Criando uma conta de serviço com a política restrita acima
Esta conta só pode acessar bucket1 e bucket2
----------------------------------------
✅ Conta de serviço criada: restricted
📋 Permissões da Conta:
- Chave de Acesso: restricted
- Política: Política restrita inline (apenas bucket1 e bucket2)
- Comportamento Esperado: Só pode acessar os buckets especificados
🧪 Etapa 4: Testar Acesso da Conta Restrita
Usando a conta restrita para listar buckets, verificando se as permissões estão devidamente restritas
Resultado Esperado: Só pode ver bucket1 e bucket2
----------------------------------------
✅ Conta restrita corretamente limitada aos buckets permitidos
Buckets acessíveis: ['bucket1', 'bucket2']
⚡ Etapa 5: Tentar Escalonamento de Privilégios (Teste de Vulnerabilidade)
Usando a conta restrita para tentar criar uma nova conta de serviço
Nova conta sem política especificada deve herdar as restrições do pai
Vulnerabilidade: Conta restrita pode contornar a política para criar novas contas sem restrições
----------------------------------------
✅ Conta de serviço criada: newroot
📋 Tentando usar a nova conta de serviço para acessar bucket3 não autorizado
⬆️ Tentando enviar objeto para bucket3 para verificar permissões
⬇️ Tentando listar objetos para verificar permissões
Objeto encontrado: test-object
❌ VULNERÁVEL: Conta restrita criou com sucesso nova conta de serviço
Permissões da nova conta: Sem restrições (herdou permissões totais do pai)
Isso indica que a vulnerabilidade CVE-2025-62506 está presente!
🧹 Limpando recursos de teste...
----------------------------------------
✅ Conta de serviço removida: restricted
✅ Conta de serviço removida: newroot
✅ Política removida: restricted-policy
✅ Bucket removido: bucket1
✅ Bucket removido: bucket2
✅ Bucket removido: bucket3
============================================================
📊 Resultados da Verificação
============================================================
❌ RESULTADO: VULNERÁVEL - CVE-2025-62506 está presente
💡 Recomendação: Atualize imediatamente para a versão corrigida RELEASE.2025-10-15T17-29-55Z ou superior
🔗 Referência: https://github.com/minio/minio/security/advisories/GHSA-jjjj-jwhf-8rgr
============================================================
🚀 Script de Verificação da Vulnerabilidade CVE-2025-62506
============================================================
📋 Descrição do Script:
Este script testa a vulnerabilidade de escalonamento de privilégios de conta de serviço MinIO (CVE-2025-62506)
A vulnerabilidade permite que contas de serviço restritas contornem políticas inline ao criar novas contas
============================================================
📦 Etapa 1: Criar Buckets de Teste
Criando três buckets de teste: bucket1, bucket2, bucket3
Usados para testar as restrições de permissão de acesso da conta
----------------------------------------
✅ Bucket criado: bucket1
✅ Bucket criado: bucket2
✅ Bucket criado: bucket3
🔒 Etapa 2: Criar Política Restrita
Criando uma política que permite apenas acesso a bucket1 e bucket2
Esta política será aplicada à conta de serviço restrita
----------------------------------------
✅ Política criada: restricted-policy
📋 Permissões da Política:
- Ações Permitidas: s3:* (todas as operações S3)
- Recursos Permitidos: bucket1/*, bucket2/*
- Recursos Negados: Todos os outros buckets
👤 Etapa 3: Criar Conta de Serviço Restrita
Criando uma conta de serviço com a política restrita acima
Esta conta só pode acessar bucket1 e bucket2
----------------------------------------
✅ Conta de serviço criada: restricted
📋 Permissões da Conta:
- Chave de Acesso: restricted
- Política: Política restrita inline (apenas bucket1 e bucket2)
- Comportamento Esperado: Só pode acessar os buckets especificados
🧪 Etapa 4: Testar Acesso da Conta Restrita
Usando a conta restrita para listar buckets, verificando se as permissões estão devidamente restritas
Resultado Esperado: Só pode ver bucket1 e bucket2
----------------------------------------
✅ Conta restrita corretamente limitada aos buckets permitidos
Buckets acessíveis: ['bucket1', 'bucket2']
⚡ Etapa 5: Tentar Escalonamento de Privilégios (Teste de Vulnerabilidade)
Usando a conta restrita para tentar criar uma nova conta de serviço
Nova conta sem política especificada deve herdar as restrições do pai
Vulnerabilidade: Conta restrita pode contornar a política para criar novas contas sem restrições
----------------------------------------
✅ SEGURO: Conta restrita falhou ao criar nova conta de serviço
Erro: Permissão corretamente negada
Detalhes: Access Denied.
🧹 Limpando recursos de teste...
----------------------------------------
✅ Conta de serviço removida: restricted
✅ Política removida: restricted-policy
✅ Bucket removido: bucket1
✅ Bucket removido: bucket2
✅ Bucket removido: bucket3
============================================================
📊 Resultados da Verificação
============================================================
✅ RESULTADO: SEGURO - CVE-2025-62506 está corrigida
🎉 Sua versão do MinIO tem esta vulnerabilidade corrigida
============================================================
Este script de verificação é fornecido como está para fins de teste de segurança.