Falha no Ghostscript CVE-2026-39919: como um único PDF pode tomar conta de um servidor e quem está realmente em risco

Um gatinho mascarado de pequeno fantasma debaixo de um pano branco numa secretária de uma sala de servidores, uma mulher levanta a ponta do pano

A maioria das pessoas nunca instalou o Ghostscript e não sabe que o usa. Ainda assim, este programa está por baixo de um número enorme de servidores: é ele que transforma um PDF carregado numa miniatura no WordPress, em sistemas de gestão documental, em gateways de correio e em serviços do género «comprima o seu PDF online». Em setembro de 2026 foi corrigida nele uma falha através da qual um PDF manipulado pode levar à execução de código alheio na máquina que processa o ficheiro.

Segue-se o que se sabe com certeza, o que não se sabe, como verificar o seu próprio servidor e o que esta história significa para quem envia os seus documentos para serem processados na internet.

Em resumo

  • A falha: CVE-2026-39919, um transbordo de buffer na heap no tratamento de imagens JPEG 2000 do Ghostscript. Basta um PDF com uma imagem preparada para o efeito.
  • Versões afetadas: da 9.21 à 10.07.1, segundo quem a descobriu (o registo CVE diz, de forma geral, «anteriores à 10.08.0»).
  • A correção: Ghostscript 10.08.0, lançado a 8 de setembro de 2026. As distribuições Linux transportam a correção para números de versão mais antigos, por isso o que conta é a revisão completa do pacote, não o que mostra gs --version.
  • Gravidade: 9,8 em CVSS 3.1 segundo o registo CVE, 7,8 («Moderate») segundo a Red Hat. Os dois números são honestos, apenas descrevem cenários diferentes.
  • Ataques reais: nenhum confirmado até agora. O exploit que funcionou foi criado em laboratório e ajustado a uma compilação específica.
  • -dSAFER não protege. A falha ocorre também com a sandbox ativada.

O que aconteceu

A falha foi descoberta pela Wordfence, uma empresa de segurança para WordPress, com o Argus, o seu sistema de testes assistido por IA. Foi a 23 de agosto de 2026, durante uma auditoria de segurança ao WordPress 7.1. A ferramenta seguiu um ficheiro carregado para lá do código PHP que o aceitou: pela extensão Imagick, pelo ImageMagick, até ao Ghostscript e ao descodificador JPEG 2000 lá no fundo.

A Artifex, a empresa que desenvolve o Ghostscript, confirmou a comunicação no dia seguinte e lançou a versão 10.08.0 com a correção a 8 de setembro. O registo CVE foi publicado a 15 de setembro. A Wordfence divulgou os pormenores técnicos a 12 de outubro e, um dia depois, o BleepingComputer e o resto da imprensa especializada pegaram no tema.

Como funciona a falha

Não é preciso saber C para perceber. Uma imagem é uma grelha de amostras. O JPEG 2000 permite que os componentes de uma imagem (por exemplo, o brilho e a transparência) tenham resoluções diferentes e que uma única amostra ocupe menos de 8 bits. Com amostras de 2 bits, cabem quatro num byte.

No exemplo descrito pelos investigadores, uma linha da imagem tem 1024 dessas amostras. Compactadas, ocupam 256 bytes, e o Ghostscript reserva corretamente 256 bytes. Só que, quando as duas condições acima ocorrem em simultâneo, o ciclo que preenche a linha escreve um byte inteiro por amostra, em vez de compactar quatro em cada byte. Num buffer de 256 bytes vão parar 1024. Os 768 bytes em excesso de cada linha sobrescrevem a memória onde o Ghostscript guarda os seus próprios dados de gestão. E, como esses bytes vêm da imagem, o conteúdo é escolhido por quem cria o ficheiro.

Cacifos de madeira para cartas numa antiga estação de correios, um gatinho em cada cacifo e, no fim da fila, gatinhos a cair para o chão

É o caminho clássico de «o programa foi abaixo» para «o programa fez o que o atacante queria». Os sistemas modernos dificultam muito este caminho (disposição aleatória da memória e outras proteções), mas não o fecham por completo.

Como um PDF chega ao Ghostscript no WordPress

O WordPress não desenha sozinho as pré-visualizações de PDF. Desde a versão 4.7 consegue gerar uma imagem da primeira página de um documento carregado, e fá-lo com a ajuda de outros programas. A cadeia é esta:

WordPress → extensão PHP Imagick → ImageMagick → Ghostscript

O Ghostscript corre como um processo separado, normalmente com a mesma conta do servidor web. Só arranca quando alguém pede uma imagem do PDF. Um formulário que guarda o ficheiro em disco e não faz mais nada com ele nunca o põe a correr.

Um ataque por esta via exige que as quatro condições se verifiquem ao mesmo tempo:

  1. alguém de fora (anonimamente ou com uma conta de poucas permissões) consegue carregar um PDF,
  2. o site pede uma pré-visualização ou miniatura desse ficheiro,
  3. o servidor tem o Imagick ou outra ferramenta que chama o Ghostscript para isso, e a política do ImageMagick permite ler PDF,
  4. o Ghostscript instalado não tem a correção.

Uma ressalva importante: um WordPress de origem não permite que visitantes anónimos carreguem ficheiros para a biblioteca multimédia. O atacante precisa de um plugin, de um formulário com campo de anexo ou de uma conta que abra esse caminho. A Wordfence analisou também a imagem oficial do WordPress para Docker: tinha um Ghostscript 10.05.1 vulnerável, a extensão Imagick e um caminho de pré-visualização de PDF a funcionar. Mesmo assim, por si só não chegava para um ataque anónimo.

Há um pormenor que favorece o atacante: quando a primeira tentativa de gerar a pré-visualização falha, o WordPress tenta automaticamente uma segunda vez com outras definições. Três anexos maliciosos significam, portanto, seis execuções do Ghostscript. No teste da Wordfence, o formulário continuava a indicar que o carregamento tinha corrido bem, enquanto o Ghostscript falhava silenciosamente em segundo plano.

Não é uma falha do WordPress nem do plugin de formulários. Foram apenas o caminho pelo qual o ficheiro chegou ao Ghostscript.

Qual é o perigo real

Vale a pena parar aqui, porque títulos como «um PDF sequestra o seu servidor» só contam metade da verdade.

Porquê duas pontuações diferentes. O registo CVE atribui 9,8 em 10 (CVSS 3.1) e 9,3 (CVSS 4.0). Estes números descrevem o pior caso: uma aplicação exposta à rede que aceita PDF sem início de sessão e sem intervenção humana. A Red Hat avalia a mesma falha com 7,8 e chama-lhe «Moderate», porque pontua o cenário em que um utilizador abre um ficheiro malicioso no seu próprio computador. Nenhuma das avaliações está errada: respondem a perguntas diferentes.

Quantas tentativas, quantos êxitos. A Wordfence criou dois exploits funcionais para a sua compilação de laboratório e depois executou-os 10 240 vezes em dez outros ambientes: Debian, Ubuntu, Fedora, AlmaLinux, Alpine e o contentor oficial do WordPress. Não funcionaram uma única vez. Na compilação para a qual foram feitos continuaram a funcionar, mesmo depois de alterados os tipos de letra, as definições de idioma e uma biblioteca base do sistema, embora não em todas as tentativas.

A conclusão tem dois lados. Não existe um ficheiro único que abra qualquer servidor do mundo. Mas um atacante não precisa de um ficheiro universal se visar uma empresa concreta, ou um alojamento onde centenas de sites correm sobre uma imagem de sistema idêntica. Os investigadores lembram que, num caso semelhante com a biblioteca libheif, outra equipa, com ajuda de IA, adaptava um exploit a cada novo alvo em um ou dois dias.

Com que permissões. O código do atacante corre com a conta que processa o PDF, normalmente a do servidor web. Isso não é automaticamente root, mas essa conta costuma conseguir ler os ficheiros do site, incluindo a configuração com a palavra-passe da base de dados.

Ataques reais: à data deste texto, ninguém comunicou a exploração desta falha fora de um laboratório.

Como verificar o seu próprio servidor

Uma mulher de óculos ao portátil e, ao seu lado, um gatinho malhado a olhar atentamente para o ecrã; em cima da secretária está uma lupa

Se tiver acesso à linha de comandos, comece por três perguntas.

1. Existe aqui Ghostscript e em que revisão do pacote?

  • Debian e Ubuntu: dpkg -s ghostscript | grep Version
  • Fedora, RHEL, AlmaLinux: rpm -q ghostscript
  • Para completar: gs --version, mas esse número, sozinho, não decide nada.

Porque é que o número não chega? O Ubuntu 22.04 corrigiu a falha no pacote 9.55.0~dfsg1-0ubuntu5.14, que continua a responder «9.55.0» quando se lhe pergunta a versão. O Debian 13 tem a correção em 10.05.1~dfsg-1+deb13u2 (boletim DSA-6516-1). A Red Hat lançou correções para o RHEL 10, 9 e 8 entre 1 e 6 de outubro. Segundo o tracker do Debian, o Debian 12 (bookworm) continua marcado como vulnerável. Compare sempre com o boletim da sua distribuição.

Há também uma armadilha no sentido inverso: a versão candidata 10.08.0 (RC) apresenta-se como 10.08.0 e não tem a correção. Era precisamente essa que corria na máquina de testes da Wordfence. Se compilou o Ghostscript a partir do código-fonte, confirme que é a versão final.

2. O PHP tem Imagick? php -m | grep -i imagick. No painel do WordPress: Ferramentas → Saúde do site → Informação → Tratamento de multimédia. É apenas um ponto de partida: mostra se o Imagick reconhece PDF, mas nada diz sobre se o Ghostscript está corrigido.

3. O ImageMagick pode ler PDF? convert -list format | grep -i pdf (no ImageMagick 7: magick -list format). As letras rw junto a PDF significam que o caminho até ao Ghostscript está aberto.

Contentores: reiniciar não chega. Obtenha uma imagem base atualizada, reconstrua sem camadas em cache e volte a implementar.

Alojamento partilhado: normalmente não consegue verificar isto sozinho. Faça duas perguntas ao fornecedor: se o pacote Ghostscript dos seus servidores inclui a correção para a CVE-2026-39919 e se os PDF carregados pelos clientes são transformados em pré-visualizações em algum ponto dos seus sistemas.

Se não puder atualizar já

  • Deixe de aceitar PDF de visitantes anónimos e de contas com poucas permissões. Um ficheiro que não chega ao servidor não chega ao Ghostscript.
  • Desative a leitura de PDF na política do ImageMagick. No ficheiro policy.xml (normalmente em /etc/ImageMagick-6/ ou /etc/ImageMagick-7/), acrescente dentro da secção <policymap> a linha <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />. Efeito secundário: o WordPress deixa de gerar miniaturas de PDF.
  • Limite o número de ficheiros por envio e a frequência dos carregamentos. Reduz as tentativas que um atacante obtém, mas não corrige nada.
  • Isole a conversão de documentos num serviço separado, sem acesso aos segredos do site e sem ligações de rede desnecessárias. Limita os danos, mas também não é uma correção.

O que não fazer: não trate o -dSAFER como proteção. A sandbox do Ghostscript limita o que um documento pode fazer com as funções documentadas do PostScript. Não impede a corrupção de memória, e nos testes a falha ocorreu com a sandbox ligada. Nenhum plugin do WordPress resolve isto, porque o Ghostscript vem do sistema operativo ou da imagem do contentor, não do WordPress.

Não confunda esta falha com a CVE-2026-65640. É outro caso: execução remota de código no WordPress através do carregamento de um ficheiro PostScript, que também passa pelo Imagick e pelo Ghostscript, mas exige uma conta com permissão para carregar ficheiros (normalmente a função Autor ou superior). Foi corrigida no WordPress 7.0.4, com retroportes até ao ramo 4.7.

Não é só um problema do WordPress

O WordPress é apenas um dos muitos caminhos pelos quais o PDF de um desconhecido pode chegar ao Ghostscript. O mesmo vale para sistemas de gestão documental, servidores de impressão, processamento de faturas, geradores de pré-visualizações, gateways de correio que analisam anexos e API de conversão de ficheiros. A pergunta é sempre a mesma: este software renderiza PDF que vieram de outra pessoa?

Procurar a palavra «Ghostscript» no código da sua própria aplicação pode não dar em nada. Normalmente está pelo meio o ImageMagick ou outra biblioteca, e é ela que chama o Ghostscript.

O que isto significa ao enviar PDF para a internet

Esta história tem outro lado, de que se fala menos. Um serviço de «comprimir PDF», «PDF para imagem» ou «juntar PDF» no navegador é exatamente o tipo de servidor de que falámos: aceita ficheiros de desconhecidos e passa-os por ferramentas que os desmontam e voltam a montar. Não sabe com quê nem em que versão o seu documento é processado, nem se houve atualização depois de 8 de setembro. Sabe, isso sim, que o seu ficheiro fica, pelo menos durante algum tempo, na mesma máquina que os ficheiros de milhares de outras pessoas, alguns dos quais podem estar manipulados.

Isso não quer dizer que todos os serviços online estejam cheios de buracos. Quer dizer que, ao enviar um contrato, a digitalização de um documento de identificação ou resultados de análises, os entrega num sítio cuja segurança não pode verificar. Há mais sobre isto no artigo sobre o que acontece aos seus dados numa conversão online.

Para sermos justos, o processamento local não é imune por definição. Se comprime PDF sozinho com o Ghostscript, atualize-o para a 10.08.0 ou posterior. A vantagem de trabalhar offline está noutro lado: o documento nunca sai do seu computador e a versão do software que o processa é decidida por si, não por alguém que nunca conheceu.

Se costuma juntar, dividir, encriptar ou converter PDF para Word, pode fazê-lo sem os enviar para lado nenhum. O PDF Manipulator é gratuito, funciona em Windows e Linux, e cada ficheiro fica no seu computador.

Fontes

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Scroll to Top