Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-66628 | Kitploit
Herramientas/GitHubGitHub/sumitshah00/cve-2025-66628
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónAnálisis de BinariosPapers e InvestigaciónAprendizaje y Educación
GitHubsumitshah00/cve-2025-66628

CVE-2025-66628

Ver Repositorio
1hace 8 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2025-66628: Desbordamiento de Enteros en el Analizador TIM de ImageMagick

AtributoDetalles
ID de CVECVE-2025-66628
ProveedorImageMagick Studio LLC
ProductoImageMagick
Versiones Afectadas< 7.1.2-10
Versión Corregida7.1.2-10
Tipo de VulnerabilidadCWE-190 (Desbordamiento de Enteros)
Puntuación CVSS v3.17.5 (Alta)
Vector CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
InvestigadorSumit Shah

Resumen

Existe una vulnerabilidad de desbordamiento de enteros en la función ReadTIMImage dentro de coders/tim.c de ImageMagick. Al procesar archivos de imagen TIM (PlayStation) en sistemas de 32 bits, la multiplicación no verificada de los valores de ancho y alto controlados por el usuario provoca una subasignación de memoria, lo que conduce a lecturas fuera de los límites durante el procesamiento de píxeles.


Detalles Técnicos

Código Afectado

La lógica vulnerable reside en coders/tim.c:

root@kitploit:~
/* coders/tim.c - Analizador de Imágenes TIM */

// Entrada controlada por el usuario desde la cabecera del archivo TIM
width = ReadBlobLSBShort(image);   // 2 bytes (0-65535)
height = ReadBlobLSBShort(image);  // 2 bytes (0-65535)

// VULNERABLE: Desbordamiento de enteros en sistemas de 32 bits
image_size = 2 * width * height;  // Sin comprobación de desbordamiento

// Memoria asignada con un tamaño truncado
pixels = (unsigned char *) AcquireQuantumMemory(image_size, sizeof(*pixels));

// El bucle procesa las dimensiones COMPLETAS, leyendo más allá del búfer
for (y = 0; y < height; y++) {
    for (x = 0; x < width; x++) {
        pixel_index = (y * width + x) * 2;
        pixels[pixel_index] = ReadBlobByte(image);
        pixels[pixel_index + 1] = ReadBlobByte(image);
    }
}

Causa Raíz

En arquitecturas de 32 bits, size_t está limitado a 32 bits con un valor máximo de UINT_MAX = 4.294.967.295.

Cuando tanto el ancho como el alto se establecen en los valores máximos sin signo de 16 bits:

root@kitploit:~
width = 65535 (0xFFFF)
height = 65535 (0xFFFF)

Cálculo esperado:
2 × 65535 × 65535 = 8.589.869.050 bytes (~8,5 GB)

Resultado real (ajuste por desbordamiento de 32 bits):
8.589.869.050 % 4.294.967.296 = 4.294.901.754
Resultado tras el truncamiento: Búfer asignado pequeño

El desbordamiento hace que el asignador de memoria reserve un búfer drásticamente más pequeño que el necesario, mientras que el bucle de procesamiento sigue iterando sobre la cuadrícula completa de píxeles de 65535 × 65535, lo que produce lecturas fuera de los límites.

Explotación

Paso 1: El atacante crea un archivo TIM con dimensiones que provocan el desbordamiento

root@kitploit:~
[Magic: 0x10]
[Type: 0x02]
[Width: 0xFFFF]   # 65535
[Height: 0xFFFF]  # 65535
[Pixel Data...]

Paso 2: La víctima procesa el archivo malicioso

root@kitploit:~
convert malicious.tim output.png

Paso 3: Se produce una lectura fuera de los límites, que conduce a:

  • Divulgación de memoria del montículo (filtrada en la imagen de salida u observable mediante temporización)
  • Violación de segmento (denegación de servicio)

Plataformas Afectadas

Sistemas de 32 bits donde size_t es de 32 bits. Los sistemas de 64 bits no están afectados debido a que el ancho de entero es suficiente para representar el tamaño calculado sin desbordamiento.


Impacto

Divulgación de Información (Principal): La memoria del montículo del proceso de ImageMagick puede leerse durante el acceso fuera de los límites. Esta memoria puede contener:

  • Datos de imágenes procesados previamente
  • Variables de entorno
  • Rutas de archivos
  • Credenciales almacenadas en caché (en entornos multiinquilino)

Los datos filtrados pueden incrustarse en la imagen de salida convertida o extraerse mediante análisis de canal lateral.

Denegación de Servicio (Secundaria): La lectura de regiones de memoria no mapeadas provoca SIGSEGV, lo que causa la terminación del proceso de ImageMagick y la interrupción del servicio en canalizaciones automatizadas de procesamiento de imágenes.


Prueba de Concepto

Los detalles técnicos se proporcionan con fines de validación. No se distribuye código de explotación ejecutable.

Condiciones de Activación

  • ImageMagick versión < 7.1.2-10 compilado para arquitectura de 32 bits
  • Archivo TIM diseñado maliciosamente con bytes de cabecera que especifican width=65535, height=65535
  • Procesamiento mediante convert, magick o cualquier llamada a la API de ImageMagick

Comportamiento Esperado (Vulnerable)

root@kitploit:~
$ convert malicious.tim output.png
Segmentation fault (core dumped)

O conversión exitosa con datos del montículo filtrados incrustados en la salida.

Comportamiento Esperado (Corregido)

root@kitploit:~
$ convert malicious.tim output.png
convert: Memory allocation failed `malicious.tim' @ error/tim.c/ReadTIMImage/XXX.

Remedio

Para Administradores

Actualice ImageMagick a la versión 7.1.2-10 o posterior:

root@kitploit:~
# Verificar la versión actual
convert --version

# Actualizar mediante el gestor de paquetes
apt update && apt upgrade imagemagick      # Debian/Ubuntu
yum update imagemagick                     # RHEL/CentOS
brew upgrade imagemagick                   # macOS

Para Desarrolladores

Implemente la comprobación de desbordamiento antes de las operaciones aritméticas:

root@kitploit:~
// Inseguro
image_size = 2 * width * height;

// Seguro
if (height != 0 && width > (SIZE_MAX / 2) / height) {
    ThrowReaderException(ResourceLimitError, "MemoryAllocationFailed");
}
image_size = 2 * width * height;

Aplique validación de entrada y límites de cordura en los valores de las dimensiones antes de realizar los cálculos.


Referencias

  • Registro CVE: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66628
  • Aviso de GitHub: https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-6hjr-v6g4-3fm8
  • Repositorio de ImageMagick: https://github.com/ImageMagick/ImageMagick
  • CWE-190: https://cwe.mitre.org/data/definitions/190.html

Metodología de Descubrimiento

Esta vulnerabilidad se identificó mediante análisis de variantes. Tras la divulgación de un desbordamiento de enteros similar en el decodificador BMP de ImageMagick, se realizó una revisión sistemática de los analizadores de formatos heredados. La coincidencia de patrones para cálculos no verificados de width * height condujo a la identificación del mismo fallo en el analizador TIM.

Los decodificadores de formatos de imagen heredados (TIM, SGI, VIFF, etc.) representan objetivos de alto valor debido a las auditorías de seguridad poco frecuentes y a la dependencia de la aritmética insegura en C.


Divulgación Responsable

Esta vulnerabilidad se notificó de forma privada a los mantenedores de ImageMagick a través de GitHub Security Advisories. La divulgación pública se produjo solo después de la disponibilidad del parche y la asignación del CVE. Esta investigación se llevó a cabo de forma ética bajo los principios de divulgación responsable.

Descubridor

SUMIT SHAH

Investigador: SUMIT SHAH

  • LinkedIn: linkedin.com/in/sumit-shah-614625350
  • Instagram: @hacksagex
Descargar herramienta