
Script de verificación para CVE-2025-62506, una vulnerabilidad de escalada de privilegios en cuentas de servicio de MinIO, que prueba si las cuentas restringidas pueden eludir las políticas integradas para crear cuentas sin restricciones.
Este repositorio contiene un script de verificación para CVE-2025-62506, una vulnerabilidad de escalada de privilegios en cuentas de servicio de MinIO y cuentas STS (Servicio de Token de Seguridad).
CVE-2025-62506 es una vulnerabilidad de escalada de privilegios que permite a cuentas de servicio restringidas y cuentas STS eludir sus restricciones de políticas integradas al realizar operaciones de cuenta "propia", específicamente al crear nuevas cuentas de servicio para el mismo usuario.
La vulnerabilidad existe en la lógica de validación de políticas IAM en cmd/iam.go. Al validar políticas de sesión para cuentas restringidas que realizan operaciones en su propia cuenta (como crear cuentas de servicio), el código se basaba incorrectamente en el argumento DenyOnly.
El indicador DenyOnly se utiliza para permitir que las cuentas realicen acciones relacionadas con su propia cuenta verificando únicamente si la acción está explícitamente denegada. Sin embargo, cuando hay una política de sesión (sub-política) presente, el sistema debería validar que la acción está realmente permitida por la política de sesión, no solo que no esté denegada.
8.1 (Alta) - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Todas las versiones anteriores a RELEASE.2025-10-15T17-29-55Z
RELEASE.2025-10-15T17-29-55Z
El script verify_cve_2025_62506.py comprueba si su instalación de MinIO es vulnerable a CVE-2025-62506.
docker-compose.yml proporcionado)miniodocker-compose up -d
pip install minio
El script de verificación sigue estos pasos:
bucket1, bucket2, bucket3bucket1 y bucket2s3:* (todas las operaciones S3)bucket1/*, bucket2/*bucket3)restrictedrestricted123bucket1 y bucket2bucket3)docker-compose up -d
python verify_cve_2025_62506.py
🚀 Script de Verificación de Vulnerabilidad CVE-2025-62506
============================================================
📋 Descripción del Script:
Este script prueba la vulnerabilidad de escalada de privilegios de cuentas de servicio de MinIO (CVE-2025-62506)
La vulnerabilidad permite a cuentas de servicio restringidas eludir políticas integradas al crear nuevas cuentas
============================================================
📦 Paso 1: Crear Buckets de Prueba
Creando tres buckets de prueba: bucket1, bucket2, bucket3
Utilizados para probar las restricciones de permisos de acceso de la cuenta
----------------------------------------
✅ Bucket creado: bucket1
✅ Bucket creado: bucket2
✅ Bucket creado: bucket3
🔒 Paso 2: Crear Política Restringida
Creando una política que solo permite acceso a bucket1 y bucket2
Esta política se aplicará a la cuenta de servicio restringida
----------------------------------------
✅ Política creada: restricted-policy
📋 Permisos de la Política:
- Acciones Permitidas: s3:* (todas las operaciones S3)
- Recursos Permitidos: bucket1/*, bucket2/*
- Recursos Denegados: Todos los demás buckets
👤 Paso 3: Crear Cuenta de Servicio Restringida
Creando una cuenta de servicio con la política restringida anterior
Esta cuenta solo puede acceder a bucket1 y bucket2
----------------------------------------
✅ Cuenta de servicio creada: restricted
📋 Permisos de la Cuenta:
- Clave de Acceso: restricted
- Política: Política restringida integrada (solo bucket1 y bucket2)
- Comportamiento Esperado: Solo puede acceder a los buckets especificados
🧪 Paso 4: Probar Acceso de la Cuenta Restringida
Usando la cuenta restringida para listar buckets, verificando que los permisos estén correctamente restringidos
Resultado Esperado: Solo puede ver bucket1 y bucket2
----------------------------------------
✅ La cuenta restringida está correctamente limitada a los buckets permitidos
Buckets accesibles: ['bucket1', 'bucket2']
⚡ Paso 5: Intentar Escalada de Privilegios (Prueba de Vulnerabilidad)
Usando la cuenta restringida para intentar crear una nueva cuenta de servicio
La nueva cuenta sin política especificada debería heredar las restricciones del padre
Vulnerabilidad: La cuenta restringida puede eludir la política para crear nuevas cuentas sin restricciones
----------------------------------------
✅ Cuenta de servicio creada: newroot
📋 Intentando usar la nueva cuenta de servicio para acceder al bucket3 no autorizado
⬆️ Intentando subir objeto al bucket3 para verificar permisos
⬇️ Intentando listar objetos para verificar permisos
Objeto encontrado: test-object
❌ VULNERABLE: La cuenta restringida creó exitosamente una nueva cuenta de servicio
Permisos de la nueva cuenta: Sin restricciones (heredó permisos completos del padre)
¡Esto indica que la vulnerabilidad CVE-2025-62506 está presente!
🧹 Limpiando recursos de prueba...
----------------------------------------
✅ Cuenta de servicio eliminada: restricted
✅ Cuenta de servicio eliminada: newroot
✅ Política eliminada: restricted-policy
✅ Bucket eliminado: bucket1
✅ Bucket eliminado: bucket2
✅ Bucket eliminado: bucket3
============================================================
📊 Resultados de Verificación
============================================================
❌ RESULTADO: VULNERABLE - CVE-2025-62506 está presente
💡 Recomendación: Actualice inmediatamente a la versión parcheada RELEASE.2025-10-15T17-29-55Z o superior
🔗 Referencia: https://github.com/minio/minio/security/advisories/GHSA-jjjj-jwhf-8rgr
============================================================
🚀 Script de Verificación de Vulnerabilidad CVE-2025-62506
============================================================
📋 Descripción del Script:
Este script prueba la vulnerabilidad de escalada de privilegios de cuentas de servicio de MinIO (CVE-2025-62506)
La vulnerabilidad permite a cuentas de servicio restringidas eludir políticas integradas al crear nuevas cuentas
============================================================
📦 Paso 1: Crear Buckets de Prueba
Creando tres buckets de prueba: bucket1, bucket2, bucket3
Utilizados para probar las restricciones de permisos de acceso de la cuenta
----------------------------------------
✅ Bucket creado: bucket1
✅ Bucket creado: bucket2
✅ Bucket creado: bucket3
🔒 Paso 2: Crear Política Restringida
Creando una política que solo permite acceso a bucket1 y bucket2
Esta política se aplicará a la cuenta de servicio restringida
----------------------------------------
✅ Política creada: restricted-policy
📋 Permisos de la Política:
- Acciones Permitidas: s3:* (todas las operaciones S3)
- Recursos Permitidos: bucket1/*, bucket2/*
- Recursos Denegados: Todos los demás buckets
👤 Paso 3: Crear Cuenta de Servicio Restringida
Creando una cuenta de servicio con la política restringida anterior
Esta cuenta solo puede acceder a bucket1 y bucket2
----------------------------------------
✅ Cuenta de servicio creada: restricted
📋 Permisos de la Cuenta:
- Clave de Acceso: restricted
- Política: Política restringida integrada (solo bucket1 y bucket2)
- Comportamiento Esperado: Solo puede acceder a los buckets especificados
🧪 Paso 4: Probar Acceso de la Cuenta Restringida
Usando la cuenta restringida para listar buckets, verificando que los permisos estén correctamente restringidos
Resultado Esperado: Solo puede ver bucket1 y bucket2
----------------------------------------
✅ La cuenta restringida está correctamente limitada a los buckets permitidos
Buckets accesibles: ['bucket1', 'bucket2']
⚡ Paso 5: Intentar Escalada de Privilegios (Prueba de Vulnerabilidad)
Usando la cuenta restringida para intentar crear una nueva cuenta de servicio
La nueva cuenta sin política especificada debería heredar las restricciones del padre
Vulnerabilidad: La cuenta restringida puede eludir la política para crear nuevas cuentas sin restricciones
----------------------------------------
✅ SEGURO: La cuenta restringida no pudo crear una nueva cuenta de servicio
Error: Permiso correctamente denegado
Detalles: Acceso Denegado.
🧹 Limpiando recursos de prueba...
----------------------------------------
✅ Cuenta de servicio eliminada: restricted
✅ Política eliminada: restricted-policy
✅ Bucket eliminado: bucket1
✅ Bucket eliminado: bucket2
✅ Bucket eliminado: bucket3
============================================================
📊 Resultados de Verificación
============================================================
✅ RESULTADO: SEGURO - CVE-2025-62506 está parcheado
🎉 Su versión de MinIO tiene esta vulnerabilidad parcheada
============================================================
Este script de verificación se proporciona tal cual para fines de pruebas de seguridad.