Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/sumitshah00/cve-2025-66628
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoExploraçãoAnálise de BináriosPapers e PesquisaAprendizado e Educação
GitHubsumitshah00/cve-2025-66628

CVE-2025-66628

Análise técnica do CVE-2025-66628, um estouro de inteiro no parser TIM do ImageMagick que leva a leituras fora dos limites, com causa raiz, etapas de exploração e orientações de remediação.

Ver Repositório
12há 9 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2025-66628: Estouro de Inteiro no Parser TIM do ImageMagick

AtributoDetalhes
ID do CVECVE-2025-66628
FornecedorImageMagick Studio LLC
ProdutoImageMagick
Versões Afetadas< 7.1.2-10
Versão Corrigida7.1.2-10
Tipo de VulnerabilidadeCWE-190 (Estouro de Inteiro)
Pontuação CVSS v3.17.5 (Alta)
Vetor CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
PesquisadorSumit Shah

Resumo

Existe uma vulnerabilidade de estouro de inteiro na função ReadTIMImage em coders/tim.c do ImageMagick. Ao processar arquivos de imagem TIM (PlayStation) em sistemas de 32 bits, a multiplicação sem verificação dos valores de largura e altura controlados pelo usuário resulta em subalocação de memória, levando a leituras fora dos limites durante o processamento de pixels.


Detalhes Técnicos

Código Afetado

A lógica vulnerável reside em coders/tim.c:

root@kitploit:~
/* coders/tim.c - TIM Image Parser */

// User-controlled input from TIM file header
width = ReadBlobLSBShort(image);   // 2 bytes (0-65535)
height = ReadBlobLSBShort(image);  // 2 bytes (0-65535)

// VULNERABLE: Integer overflow on 32-bit systems
image_size = 2 * width * height;  // No overflow check

// Memory allocated with truncated size
pixels = (unsigned char *) AcquireQuantumMemory(image_size, sizeof(*pixels));

// Loop processes FULL dimensions, reading beyond buffer
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 Raiz

Em arquiteturas de 32 bits, size_t é limitado a 32 bits com valor máximo UINT_MAX = 4,294,967,295.

Quando largura e altura são ambas definidas para os valores máximos de 16 bits sem sinal:

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

Cálculo esperado:
2 × 65535 × 65535 = 8,589,869,050 bytes (~8.5 GB)

Resultado real (truncamento de 32 bits):
8,589,869,050 % 4,294,967,296 = 4,294,901,754
Resultado após truncamento: Buffer pequeno alocado

O estouro faz com que o alocador de memória reserve um buffer drasticamente menor do que o necessário, enquanto o laço de processamento ainda itera sobre a grade completa de pixels de 65535 × 65535, resultando em leituras fora dos limites.

Exploração

Passo 1: O atacante cria um arquivo TIM com dimensões que causam o estouro

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

Passo 2: A vítima processa o arquivo malicioso

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

Passo 3: Ocorre a leitura fora dos limites, levando a:

  • Divulgação de memória heap (vazada na imagem de saída ou observável via temporização)
  • Falha de segmentação (negação de serviço)

Plataformas Afetadas

Sistemas de 32 bits onde size_t é de 32 bits. Sistemas de 64 bits não são afetados devido à largura inteira suficiente para representar o tamanho calculado sem estouro.


Impacto

Divulgação de Informações (Principal): A memória heap do processo do ImageMagick pode ser lida durante o acesso fora dos limites. Essa memória pode conter:

  • Dados de imagens processadas anteriormente
  • Variáveis de ambiente
  • Caminhos de arquivos
  • Credenciais em cache (em ambientes multi-tenant)

Os dados vazados podem ser incorporados na imagem de saída convertida ou extraídos via análise de canal lateral.

Negação de Serviço (Secundário): A leitura de regiões de memória não mapeadas dispara SIGSEGV, causando a terminação do processo do ImageMagick e interrupção do serviço em pipelines automatizados de processamento de imagens.


Prova de Conceito

Detalhes técnicos são fornecidos para fins de validação. Nenhum código de exploração executável é distribuído.

Condições de Disparo

  • Versão do ImageMagick < 7.1.2-10 compilada para arquitetura de 32 bits
  • Arquivo TIM maliciosamente elaborado com bytes de cabeçalho especificando largura=65535, altura=65535
  • Processamento via convert, magick ou qualquer chamada à API do ImageMagick

Comportamento Esperado (Vulnerável)

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

Ou conversão bem-sucedida com dados de heap vazados incorporados na saída.

Comportamento Esperado (Corrigido)

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

Remediação

Para Administradores

Atualize o ImageMagick para a versão 7.1.2-10 ou posterior:

root@kitploit:~
# Verify current version
convert --version

# Update using package manager
apt update && apt upgrade imagemagick      # Debian/Ubuntu
yum update imagemagick                     # RHEL/CentOS
brew upgrade imagemagick                   # macOS

Para Desenvolvedores

Implemente a verificação de estouro antes das operações aritméticas:

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

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

Aplique validação de entrada e limites de sanidade nos valores das dimensões antes de realizar cálculos.


Referências

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

Metodologia de Descoberta

Esta vulnerabilidade foi identificada usando análise de variantes. Após a divulgação de um estouro de inteiro semelhante no decodificador BMP do ImageMagick, foi conduzida uma revisão sistemática dos parsers de formatos legados. A correspondência de padrões para cálculos de width * height sem verificação levou à identificação da mesma falha no parser TIM.

Os decodificadores de formatos de imagem legados (TIM, SGI, VIFF, etc.) representam alvos de alto valor devido a auditorias de segurança pouco frequentes e à dependência de aritmética C insegura.


Divulgação Responsável

Esta vulnerabilidade foi relatada privadamente aos mantenedores do ImageMagick via GitHub Security Advisories. A divulgação pública ocorreu somente após a disponibilidade do patch e a atribuição do CVE. Esta pesquisa foi conduzida eticamente sob os princípios de divulgação responsável.

Descobridor

SUMIT SHAH

Pesquisador: SUMIT SHAH

  • LinkedIn: linkedin.com/in/sumit-shah-614625350
  • Instagram: @hacksagex
Baixar ferramenta