Múltiplas vulnerabilidades críticas descobertas no X.Org X server e Xwayland: um alerta para a segurança gráfica no Linux

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...

Múltiplas vulnerabilidades críticas (CVEs) descobertas no X.Org X server e XWayland. Saiba sobre Integer Overflows, Out-of-bounds e DoS que afetam a segurança gráfica no Linux.

O X.Org X server, o pilar fundamental do ambiente gráfico Linux por décadas, e sua camada de compatibilidade XWayland, estão sob os holofotes da segurança. Uma divulgação detalhada da Insinuator.net, por Nils Emmerich, revelou múltiplas vulnerabilidades críticas (CVEs) que afetam versões anteriores à 21.1.17 do X.Org X server e 24.1.7 do XWayland. Essas falhas, que datam de estágios iniciais de design quando a segurança não era prioridade, persistiram por anos e agora representam um risco significativo.

As vulnerabilidades abrangem desde Integer Overflows e acessos fora dos limites (Out-of-bounds Accesses) até ataques de Negação de Serviço (DoS), impactando diversas extensões do X11 Window System. Embora a maioria dos desktops modernos não exponha o servidor X diretamente à rede, a utilização de X forwarding via SSH abre um vetor de ataque que exige atenção imediata.

Este artigo fará uma análise aprofundada dessas falhas, explicando sua natureza técnica e as implicações de segurança para administradores de sistemas e usuários de Linux. Mais importante, forneceremos recomendações cruciais para proteger seus sistemas contra essas ameaças legadas, mas ainda perigosas.

Vulnerabilidades de Integer Overflows: o perigo dos números grandes

As falhas de Integer Overflow exploram limites de representação de inteiros, permitindo que números grandes ultrapassem os valores máximos e “reiniciem”, gerando comportamentos inesperados. Isso pode corromper alocações de memória, comprometer verificações de segurança e permitir acessos indevidos.

CVE-2025-49176: Big-Requests Extension

O problema: O X.Org X server trabalha primariamente com inteiros de 32 bits. A Big-Requests Extension, que permite requisições maiores que o limite padrão, sofre de Integer Overflow. Na função ReadRequestFromClient, ao converter o tamanho da requisição (em unidades de 4 bytes) para bytes, bits superiores são descartados, gerando um valor truncado.

Exploração: Apesar do overflow, o campo client->req_len mantém o valor original, levando a verificações de limite incorretas. Isso permite que manipuladores como ProcRenderAddGlyphs leiam ou escrevam fora dos limites da memória, por exemplo, ao calcular um hash de dados out-of-bounds.

Para iniciantes: Integer Overflow ocorre quando um número ultrapassa o valor máximo que um tipo de dado pode representar. Em um sistema de 32 bits, o número pode “voltar a zero”, causando comportamentos imprevisíveis em cálculos e verificações de memória.

CVE-2025-49179: Record Extension

O problema: A função RecordSanityCheckRegisterClients, da Record Extension, sofre de overflow ao multiplicar os campos stuff->nClients e stuff->nRanges.

Exploração: Se nClients for interpretado como negativo em um contexto assinado, a verificação de segurança pode ser ignorada. Isso faz com que ponteiros como pRange apontem para áreas inválidas de memória, levando a falhas de segmentação (segmentation fault).

CVE-2025-49180: RandR Extension

O problema: A RandR Extension permite a modificação de propriedades de provedores. Na função RRChangeProviderProperty, a combinação de tamanho antigo e novo pode causar overflow ao ser truncada para 32 bits.

Exploração: O resultado é uma alocação de memória subdimensionada, onde chamadas subsequentes como memcpy podem escrever fora dos limites, causando corrupção de memória.

Out-of-bounds Accesses: acessando o inesperado

A segunda classe de falhas envolve acesso fora dos limites de memória, uma vulnerabilidade clássica em linguagens como C, que não impõem checagem automática de limites.

Vulnerabilidades de acesso fora dos limites em C

Para iniciantes: Um acesso fora dos limites ocorre quando um programa tenta acessar um elemento além do tamanho real de um array. Isso pode corromper dados, causar falhas ou até permitir a execução de código arbitrário.

CVE-2025-49175: Rendering Extension (Animated Cursor)

O problema: A função AnimCursorCreate assume que a lista de cursores tem ao menos um elemento, mas não verifica isso explicitamente.

Exploração: Se ncursor = 0, o array alocado pode retornar um ponteiro válido, e o acesso a cursors[0] se torna uma leitura fora dos limites da memória. Isso pode causar comportamentos indefinidos e falhas difíceis de rastrear.

Vulnerabilidade de DoS (Negação de Serviço): CVE-2025-49178

CVE-2025-49178: compartilhamento de buffers e ignorância de requisições

O problema: O X server compartilha buffers de recebimento entre clientes. Em ReadRequestFromClient, se um buffer for compartilhado com ignoreBytes != 0, um segundo cliente pode receber o buffer em estado inconsistente.

Impacto: Esse comportamento pode levar a uma negação de serviço (DoS), onde o servidor X ignora requisições válidas, tornando a interface gráfica inutilizável. Embora difícil de explorar de forma coordenada, o impacto é real.

Impacto e contexto de segurança: quem está em risco e como se proteger

Impacto geral e cenários de ataque

  • Acesso à rede: Hoje, poucos sistemas expõem o X.Org X server diretamente à rede, reduzindo o risco externo.
  • Privilégios de execução: Normalmente, o X server roda como usuário comum, não root.
  • X forwarding via SSH: Atenção especial deve ser dada a quem usa SSH com X forwarding, pois isso permite que aplicações remotas interajam com o servidor X local e potencialmente explorem essas falhas.

Consequências possíveis:

  • Crash do servidor X
  • Perda de sessão gráfica
  • Corrupção de memória
  • Execução de código arbitrário por atacantes locais

Um projeto maduro com desafios de segurança

  • Idade do projeto: O X.Org X server é um software antigo, com raízes nos anos 1980.
  • Legado: Essas vulnerabilidades refletem a herança de um design que antecede práticas modernas de segurança.
  • Referência icônica: A frase usada no post original — party_like_its_1989 = TRUE; — simboliza a antiguidade do código-base e os riscos que ela carrega.

Linha do tempo da divulgação e a correção

Processo de divulgação responsável

  • 27 de março de 2025: A ERNW notifica a equipe de segurança da X.Org.
  • 28 de março: A Red Hat confirma a vulnerabilidade.
  • 03 de abril: Integer Overflow na Big-Requests Extension relatado.
  • 15 de abril: Outras vulnerabilidades notificadas.
  • 17 de junho: Correções publicadas e alerta de segurança divulgado.

As versões corrigidas

  • X.Org X server: versão 21.1.18
  • XWayland: versão 24.1.8

Atualização é mandatória: Administre pacotes com atenção redobrada. Ambientes que usam distribuições com suporte a longo prazo (como RHEL, Debian, Ubuntu LTS) devem garantir que os patches sejam aplicados via backport ou atualização direta.

Agradecimento: Agradecimentos à ERNW e ao pesquisador Nils Emmerich pelo trabalho de análise e à Red Hat pela coordenação e mitigação das vulnerabilidades.

Conclusão: a segurança do seu desktop Linux é sua responsabilidade

A descoberta de múltiplas vulnerabilidades críticas no X.Org X server e XWayland é um alerta sério para a comunidade Linux. Embora a transição para Wayland esteja em curso, a base X11 ainda é amplamente utilizada, especialmente em sistemas legados e profissionais.

Não ignore este aviso! Atualize seu X.Org X server para a versão 21.1.18 e o XWayland para a 24.1.8 (ou mais recentes) imediatamente. Se você utiliza X forwarding via SSH, redobre a atenção.

Para mais notícias e guias sobre segurança Linux e ambientes gráficos, continue acompanhando o SempreUpdate.

Compartilhe este artigo