Falhas no GDI do Windows permitem execução remota de código e exposição de memória via metarquivos

Falhas no GDI do Windows permitem execução remota de código e exposição de memória via metarquivos

Vulnerabilidades em GdiPlus.dll e gdi32full.dll permitem escrita fora dos limites e leitura de memória durante o processamento de registros EMF+ e EMR_STARTDOC.

ComponenteGraphics Device Interface, GdiPlus.dll e gdi32full.dll no Windows, com processamento de metarquivos EMF e EMF+.
VetorMetarquivo especialmente construído com registros como EmfPlusSetTSClip, EmfPlusDrawString, EmfPlusDrawRects, EmfPlusFillRects, EmfPlusClear ou EMR_STARTDOC, processado por aplicação, serviço ou fluxo que renderize conteúdo gráfico.
ImpactoLeitura ou escrita fora dos limites da memória, com risco de exposição de bytes de heap, encerramento inesperado do processo e execução remota de código em cenários de renderização vulnerável.
PrioridadeAplicar as atualizações da Microsoft de maio, julho e agosto de 2025, bloquear processamento desnecessário de metarquivos e revisar serviços que renderizam imagens ou documentos recebidos de fontes não confiáveis.
VersõesFalhas observadas em GdiPlus.dll 10.0.26100.3037 e 10.0.26100.4202, e em gdi32full.dll 10.0.26100.3624; correções citadas em GdiPlus.dll 10.0.26100.4061 e 10.0.26100.4946, e gdi32full.dll 10.0.26100.4652.
ArtefatosCVE-2025-30388, CVE-2025-53766, CVE-2025-47984, KB5058411, KB5063878, KB5062553, EmfPlusARGB, RECT, DOCINFO, lpszDocName, lpszOutput.
MitigaçãoValidar aplicação de patches, restringir renderização automática, isolar conversores de documentos, reduzir privilégios de serviços de pré-visualização e monitorar travamentos em rotinas de GDI/GDI+.
Resumo técnico

Três vulnerabilidades corrigidas em 2025 afetam o processamento de gráficos no Windows por meio do Graphics Device Interface e de rotinas associadas a GdiPlus.dll e gdi32full.dll. As falhas foram acionadas por metarquivos EMF e EMF+ com registros malformados, explorando diferenças entre o tamanho real de buffers, a posição de desenho calculada pelo renderizador e validações insuficientes de estruturas usadas por operações gráficas. O resultado técnico inclui escrita fora dos limites, leitura além do buffer alocado e vazamento visual de bytes de heap quando a saída renderizada retorna ao atacante ou a outro componente controlado.

CVE-2025-30388 foi corrigida no KB5058411, em maio de 2025, e envolve objetos RECT inválidos dentro de EmfPlusSetTSClip, que preparavam o estado de recorte antes de registros como EmfPlusDrawString, EmfPlusFillRects e EmfPlusFillClosedCurve. CVE-2025-53766 foi corrigida no KB5063878, em agosto de 2025, e envolve EmfPlusDrawRects com objetos EmfPlusRect capazes de levar o rasterizador a processar linhas além da altura do bitmap. CVE-2025-47984 foi corrigida no KB5062553, em julho de 2025, e expõe uma leitura fora dos limites em EMR_STARTDOC, associada ao tratamento de strings em DOCINFO por MRSTARTDOC::bPlay() e StringLengthWorkerW().

Fluxo técnico

No caso de CVE-2025-30388, o estado perigoso nasce antes do registro que efetivamente causa o travamento. Um EmfPlusSetTSClip com objetos RECT inválidos altera a área de recorte usada pela sequência de renderização. Quando registros posteriores são processados, a combinação de dimensões inconsistentes e cálculos de varredura leva funções como ScanOperation::AlphaMultiply_sRGB(), ScanOperation::Blend_sRGB_sRGB_MMX() e EpAntialiasedFiller::OutputSpan() a acessar memória no fim de um bloco de heap de 4000 bytes, ou em área reservada sem alocação efetiva. Em um cenário com EmfPlusClear antes de EmfPlusDrawString, o campo Color contém um objeto EmfPlusARGB que define os componentes vermelho, verde, azul e alfa usados para preencher o buffer. Quando o alfa é 0xFF, os valores RGB permanecem praticamente preservados após a multiplicação, dando ao atacante controle significativo sobre os bytes escritos.

CVE-2025-53766 tem uma mecânica distinta, mas permanece dentro do mesmo domínio de falhas de renderização. Um registro EmfPlusDrawRects com uma sequência de EmfPlusRect malformados é precedido por EmfPlusObject, que define um EmfPlusPen e uma escova sólida com valor EmfPlusARGB. A função vulnerável, EpScanBitmap::NextBuffer(), não verificava se a quantidade de scan-lines solicitada ainda cabia no bitmap de destino. Se um bitmap destinado à geração de miniatura tiver dimensões como 100x100, retângulos com coordenadas de Y além do intervalo 0-99 podem forçar o rasterizador a avançar para fora da borda inferior, resultando em escrita fora dos limites em ScanOperation::AlphaDivide_sRGB().

CVE-2025-47984 fica no caminho de impressão e documentação de metarquivos. O registro EMR_STARTDOC contém uma estrutura DOCINFO com campos como lpszDocName e lpszOutput. A rotina MRSTARTDOC::bPlay() validava offsets dentro do registro, mas a aritmética usada após copiar a primeira string criava uma diferença entre a base usada para validar e a base efetivamente dereferenciada. Um documento construído com a primeira string próxima ao fim do registro e com EMF_HEADER.nBytes definido como 0x120 bytes podia induzir StringLengthWorkerW() a procurar terminador nulo fora do bloco alocado. Essa condição transforma a ausência de terminação correta em leitura de memória adjacente, com risco de divulgação de informação.

Superfície afetada

A superfície de ataque inclui qualquer fluxo que aceite, gere pré-visualização, converta, indexe ou renderize metarquivos EMF e EMF+ sem isolamento adequado. Isso abrange estáções de trabalho que abrem documentos com conteúdo gráfico incorporado, aplicações de produtividade que renderizam imagens ou objetos vetoriais, serviços de backend que produzem miniaturas e pipelines que extraem visualizações de arquivos enviados por usuários. A exploração não exige necessariamente que o componente vulnerável esteja exposto como um aplicativo gráfico tradicional; basta que o arquivo malformado alcance uma rotina de GDI/GDI+ capaz de interpretar os registros envolvidos.

CVE-2025-30388 também afeta Microsoft Office para Mac e Android, o que amplia a revisão para ambientes onde documentos trafegam entre plataformas. CVE-2025-53766 recebeu classificação crítica e é especialmente importante para serviços de rede que processam metarquivos, pois o cenário descrito não requer privilégios nem interação do usuário. CVE-2025-47984 é uma falha de divulgação de informação, mas seu valor operacional cresce quando o atacante consegue recuperar a imagem renderizada, observar saída gerada automaticamente ou combinar a leitura de heap com outro defeito de corrupção de memória.

A avaliação defensiva deve separar estáções de usuário, servidores de conversão, filas de impressão, sistemas de colaboração e componentes de indexação de conteúdo. Em cada caso, o risco depende de três condições: entrada de arquivo não confiável, renderização por biblioteca vulnerável e possibilidade de o resultado, o crash ou a memória exposta produzir um sinal acessível ao atacante.

  • Sistemas Windows que processam EMF ou EMF+ por meio de GdiPlus.dll ou gdi32full.dll sem os patches de 2025.
  • Aplicações que abrem documentos com metarquivos incorporados, incluindo fluxos de pré-visualização e miniatura.
  • Serviços web ou internos que renderizam arquivos enviados por usuários e executam conversores com privilégios elevados.
  • Ambientes com Microsoft Office para Mac ou Android expostos a documentos que contenham conteúdo gráfico malformado associado a CVE-2025-30388.
Hunting e telemetria

A caça deve começar por eventos de travamento e exceção em processos que renderizam documentos, imagens ou miniaturas. Sinais como falhas em ScanOperation::AlphaMultiply_sRGB(), ScanOperation::AlphaDivide_sRGB(), ScanOperation::Blend_sRGB_sRGB_MMX(), EpAntialiasedFiller::OutputSpan() e StringLengthWorkerW() merecem correlação com abertura recente de arquivos, uploads, conversões ou pré-visualizações. A presença de GdiPlus.dll ou gdi32full.dll em pilhas de crash próximas a entradas externas é mais relevante quando acompanhada de registros de arquivo com extensão, tipo MIME ou assinatura compatível com metarquivos.

Em servidores, a análise deve cruzar logs de upload, filas de processamento, identificadores de job, tamanho de arquivo, hash interno e momento do crash. Para fluxos de documento, convém revisar documentos recebidos pouco antes de encerramentos inesperados de Word, componentes de visualização, indexadores ou renderizadores. O vazamento demonstrado por preenchimento de retângulo em Microsoft Word 365 indica que saídas visuais variáveis, renderizações inconsistentes e falhas repetidas ao abrir o mesmo artefato são sinais úteis para isolamento do arquivo suspeito.

Na rede, o hunting não deve procurar apenas exploração concluída. Tentativas de entrega de arquivos com EMF ou EMF+ em anexos, links de colaboração, sistemas de tickets, portais de upload e APIs de conversão já justificam inspeção. Quando a organização registra telemetria de EDR, eventos de exceção de acesso, leitura fora dos limites, escrita em memória não alocada, encerramento de processo e reabertura automática de serviços de conversão ajudam a reconstruir a sequência.

  • Crashes com pilha contendo GdiPlus.dll, gdi32full.dll, ScanOperation::AlphaMultiply_sRGB(), ScanOperation::AlphaDivide_sRGB() ou StringLengthWorkerW().
  • Arquivos EMF ou EMF+ recebidos pouco antes de falhas em Word, visualizadores, geradores de miniatura, conversores ou serviços de impressão.
  • Registros EmfPlusSetTSClip, EmfPlusDrawString, EmfPlusDrawRects, EmfPlusFillRects, EmfPlusClear ou EMR_STARTDOC em amostras analisadas por laboratório.
  • Renderizações com conteúdo visual variável, bytes aparentes de memória em áreas preenchidas ou encerramento inesperado após abrir o mesmo arquivo.
  • Serviços de processamento de documentos reiniciando após uploads de usuários externos ou arquivos vindos de caixas de entrada compartilhadas.
Mitigação

A resposta principal é confirmar a instalação de KB5058411, KB5062553 e KB5063878 nos sistemas aplicáveis, validando também as versões de GdiPlus.dll e gdi32full.dll onde a organização mantém inventário de binários. A correção de CVE-2025-30388 adicionou validação de objetos RECT por funções como ValidateAndSet() e IsRectValid() em SetTSClipEPR::Play(). A correção de CVE-2025-53766 ajustou EpScanBitmap::NextBuffer() para limitar a quantidade de scan-lines ao espaço restante no bitmap. A correção de CVE-2025-47984 corrigiu a aritmética de offsets em MRSTARTDOC::bPlay(), fazendo a revalidação corresponder ao ponteiro que será dereferenciado.

Além do patch, serviços que processam arquivos externos devem executar renderização em sandbox, com conta de baixo privilégio, sem acesso direto a segredos, tokens de produção, unidades compartilhadas sensíveis ou memória de processos de negócio. Conversores de documentos e geradores de miniatura devem ter limites rígidos de tempo, memória, tamanho de entrada e formato permitido. Quando EMF e EMF+ não forem necessários, a organização deve bloquear esses formatos em gateways, portais de upload e pipelines de conversão, ou encaminhá-los para análise manual em ambiente isolado.

Depois da atualização, a validação deve incluir reprocessamento controlado de amostras internas, revisão de crashes históricos e busca por documentos que tenham causado falhas repetidas antes da aplicação dos patches. Caso um artefato suspeito tenha sido aberto ou processado por serviço com privilégios, a contenção deve preservar o arquivo, coletar dumps quando disponíveis, registrar pilhas de exceção, revisar saídas geradas e confirmar se houve exposição de dados renderizados ou retornados ao usuário.

  • Aplicar e verificar KB5058411, KB5062553 e KB5063878 em todos os sistemas afetados e em imagens base usadas por servidores.
  • Inventariar serviços que renderizam documentos, imagens, miniaturas, anexos e metarquivos recebidos por upload ou e-mail.
  • Executar conversores e visualizadores automatizados em sandbox com baixo privilégio, sem acesso a credenciais, diretórios sensíveis ou rede interna ampla.
  • Bloquear ou isolar EMF e EMF+ quando esses formatos não forem necessários ao negócio.
  • Correlacionar crashes anteriores com arquivos recebidos, preservar amostras suspeitas e revisar se saídas renderizadas expuseram bytes de heap.
  • Reiniciar serviços de processamento após patch e validar que binários carregados correspondem às versões corrigidas, não a cópias antigas em cache ou diretórios de aplicação.

Postar um comentário

0 Comentários