← back
CVE-2025-27363highunder attackCWE-787

CVE-2025-27363

78Vexday Risk Score

Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.

ssvc Actcvss 8.1epss 28%
from disclosure to weapon12 days
Published on NVDMar 11
1st PoC+12d
CISA KEV+56d
exploitation probability
28%top 2% of all CVEs
observed exploitation
yesCISA + VulnCheck
5 public exploit(s)
Action required by CISAfederal deadline: 2025-05-27

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Summary

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.

Technical detail

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.

How it’s exploited

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.

Versions

Affected
FreeType 2.13.0 e todas as versões anteriores (<= 2.13.0)
Fixed in
FreeType 2.13.3 corrige definitivamente (inclui a correção de tipo). Diversas distribuições Linux publicaram backports do patch de mitigação para seus pacotes em ramos anteriores a 2.13.0 (ex.: Debian, RHEL/derivados, openSUSE, Ubuntu 22.04) — consulte o advisory específico de cada distribuição para a versão exata do pacote corrigido.

How to protect

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.

How to detect

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.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
An out of bounds write exists in FreeType versions 2.13.0 and below (newer versions of FreeType are not vulnerable) when attempting to parse font subglyph structures related to TrueType GX and variable font files. The vulnerable code assigns a signed short value to an unsigned long and then adds a static value causing it to wrap around and allocate too small of a heap buffer. The code then writes up to 6 signed long integers out of bounds relative to this buffer. This may result in arbitrary code execution. This vulnerability may have been exploited in the wild.
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H/E:F/RL:O/RC:C/CR:H/IR:H/AR:H/MAV:N/MAC:L/MPR:N/MUI:N/MS:U/MC:H/MI:H/MA:H
Affected products
FreeType · FreeType
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.