CVE-2025-27363
Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Resumo
Escrita fora dos limites (out-of-bounds write) na FreeType, biblioteca de renderização de fontes usada por navegadores, sistemas Linux, Android e inúmeras aplicações que processam TrueType/OpenType. Um overflow de inteiro no cálculo de tamanho de um buffer, ao interpretar subglyphs de fontes TrueType GX e variable fonts, aloca memória menor do que necessário e depois escreve até 6 inteiros longos além do buffer. A CISA confirma exploração ativa (catálogo KEV) e há PoC pública, o que eleva o risco prático além do que sugere o CVSS de 8.1 — o vetor de entrada (uma fonte maliciosa) é trivialmente distribuível via web, documento ou arquivo.
Detalhamento técnico
A falha está no código de parsing de subglyph structures relacionado a TrueType GX e variable fonts (formato usado para ajuste paramétrico de propriedades tipográficas, hoje comum em fontes variáveis embutidas em páginas web). Uma variável do tipo signed short é atribuída a uma unsigned long e, em seguida, recebe a soma de um valor estático; quando o short é próximo do limite (a análise da Meta indica a faixa 0xFFFD–0xFFFF), a operação sofre wraparound e o cálculo de tamanho resulta em um valor muito menor que o real. O código então aloca um buffer heap dimensionado por esse valor incorreto e escreve até 6 inteiros signed long (32 bits) fora dos limites desse buffer — um heap buffer overflow clássico originado de integer overflow (CWE-190 levando a CWE-787/CWE-122).
O atacante controla o conteúdo da fonte, especificamente os campos que alimentam esse cálculo de `limit` na estrutura de subglyph. Não há necessidade de interação complexa do usuário além de fazer a aplicação processar (renderizar/parsear) a fonte maliciosa — basta que ela seja carregada pelo motor de fontes.
A correção completa exigiu duas mudanças: primeiro um patch (commit ef636696524b081f1b8819eb0c6a0b932d35757d) que ajusta as alocações usando FT_QNEW_ARRAY em vez de FT_NEW_ARRAY, removendo o `+4` de um dos cálculos — isso faz com que, no caso do wraparound, o valor resultante fique negativo e a alocação falhe com erro, cortando o fluxo antes da escrita indevida (mitigação efetiva mesmo com `limit` ainda signed). A correção definitiva do tipo, tornando `limit` unsigned, veio no commit 73720c7c9958e87b3d134a7574d1720ad2d24442, presente apenas a partir da versão 2.13.3. Distribuidores que fizeram backport apenas do primeiro commit para ramos anteriores a 2.13.0 mitigam o overflow mas não corrigem a causa raiz de tipagem.
Como é explorada
O vetor é o processamento de um arquivo de fonte malicioso em formato TrueType GX / variable font por uma aplicação linkada à FreeType vulnerável. Isso inclui navegadores, leitores de documentos, motores de renderização de UI e qualquer software que carregue fontes de fontes não confiáveis — inclusive fontes embutidas em páginas web via CSS (Variable Fonts), anexos de documentos ou arquivos de fonte enviados diretamente. Não é necessária autenticação nem configuração especial; a única pré-condição real é que a aplicação alvo use uma versão vulnerável da FreeType (não a bundled/atualizada) e que consiga ser induzida a renderizar a fonte — ou seja, interação do usuário mínima (abrir uma página, visualizar um documento) é o suficiente na maioria dos casos.
O impacto final é execução arbitrária de código no contexto do processo que renderiza a fonte, dado o controle sobre a escrita fora dos limites do heap. A CISA já classificou a falha como explorada ativamente (KEV), sem detalhar o setor ou campanha; a Meta, que reportou a vulnerabilidade, sinalizou possível exploração in-the-wild na própria descrição. Existe PoC pública, o que reduz a barreira para réplicas de exploração fora do incidente original.
Um ponto relevante para avaliar exposição real: muitos navegadores modernos empacotam sua própria cópia (bundled) da FreeType, já atualizada para 2.13.3 ou superior, independente da versão do sistema operacional — reduzindo o risco via navegador nesses casos. O risco maior recai sobre distribuições Linux e aplicações que dependem da FreeType do sistema, que em várias distros estáveis (Debian, RHEL/derivados, Ubuntu 22.04, entre outras) ainda estavam em versões vulneráveis (<2.13.0) no momento da divulgação.
Versões
Como se proteger
A correção definitiva é atualizar para FreeType 2.13.3 ou superior, que inclui a mudança de tipo (`limit` unsigned) e o ajuste das alocações. Para quem não pode migrar imediatamente, distribuidores aplicaram backports do commit de mitigação (ef636696524b081f1b8819eb0c6a0b932d35757d) em pacotes de ramos anteriores — esse patch impede a escrita fora dos limites ao forçar a falha da alocação no caso de wraparound, mas mantém `limit` como signed short, ou seja, corrige o efeito sem eliminar a causa de tipagem; ainda assim é uma mitigação funcional contra este CVE especificamente. Verifique os avisos de segurança da sua distribuição (Debian LTS, RHEL/CentOS/Alma, openSUSE, Slackware, Mageia, OpenMandriva, entre outras listadas como afetadas) para confirmar se o pacote `freetype`/`libfreetype6` já recebeu o backport.
Como controle compensatório sem patch, não há flag de configuração em runtime que desative o parsing de subglyphs em variable fonts sem comprometer a renderização de fontes legítimas — a mitigação real depende do código corrigido. Evitar processar fontes de origem não confiável (bloquear upload/carregamento de arquivos .ttf/.otf/variable font de fontes externas, ou desabilitar fontes web customizadas em navegadores que usem a FreeType do sistema) reduz a superfície, mas não é substituto — é medida temporária.
Não superestime a proteção apenas por estar em uma distribuição Linux recente: verifique a versão exata do pacote FreeType instalado, já que muitos ramos estáveis ainda distribuíam versões abaixo de 2.13.0 na época da divulgação. Também não assuma que atualizar o navegador resolve — se o navegador usa a FreeType do sistema (unbundled) em vez de uma cópia própria, a exposição persiste até a atualização do pacote do sistema operacional.
Como detectar
Não há assinatura de rede confiável, já que a exploração ocorre no parsing local de um arquivo de fonte entregue por qualquer canal (web, documento, e-mail) — o tráfego de entrega pode ser HTTP/HTTPS comum, indistinguível de download de fonte legítimo. Em nível de host, crashes do processo que renderiza fontes (navegador, visualizador de documentos, compositor gráfico) com falhas de heap corruption, ou logs de sanitizers (ASan/heap corruption) apontando para código de parsing de TrueType GX/variable fonts, são o sinal mais direto disponível. Monitorar arquivos de fonte anômalos (tamanho, campos de subglyph fora do padrão) em pipelines de análise de conteúdo é possível, mas exige instrumentação específica que a maioria dos ambientes não tem.