← voltar
CVE-2017-8291highsob ataqueCWE-843

CVE-2017-8291

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 7.8epss 96%
da publicação à arma5 dias
Publicada no NVD27 de abr.
1ª PoC+5d
metasploit27 de abr.
CISA KEV+1853d
probabilidade de exploração
96%top 1% das CVEs
exploração observada
simCISA + VulnCheck
9 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-06-14

Apply updates per vendor instructions.

Resumo

Falha de type confusion no interpretador PostScript do Ghostscript permite que um documento .eps/.ps malicioso desative a proteção -dSAFER e execute comandos arbitrários no sistema, através do pseudo-dispositivo de saída %pipe%. Foi explorada in the wild em abril de 2017 antes de existir qualquer patch público, o que motivou sua inclusão no catálogo KEV da CISA. O risco real está em qualquer software que invoque o gs internamente para renderizar imagens — não só em quem chama o binário gs diretamente.

Detalhamento técnico

O operador .rsdparams do interpretador PostScript do Ghostscript não validava corretamente o tipo do operando recebido na pilha (CWE-843, type confusion / missing type check). Tavis Ormandy demonstrou que basta um valor numérico malformado passado a .rsdparams (ele cita o teste mínimo "16#41414141 .rsdparams", sem o prefixo hexadecimal) para corromper a pilha de operandos de um jeito que engana o interpretador sobre o tipo do dado manipulado. O operador .eqproc tinha o mesmo problema e também precisou ser corrigido.

Essa corrupção é usada para desativar a flag -dSAFER, que existe justamente para impedir que um documento PostScript acesse o sistema de arquivos ou o shell. Com -dSAFER neutralizado, o atacante usa a diretiva /OutputFile combinada com o pseudo-dispositivo %pipe% do Ghostscript — um recurso legítimo que permite direcionar a saída de renderização para um processo externo via shell — para forçar o gs a executar um comando arbitrário do sistema operacional.

O vetor de entrada é um arquivo .eps (Encapsulated PostScript) construído para acionar essa sequência: corromper a pilha via .rsdparams/.eqproc, burlar o SAFER, e então declarar um /OutputFile contendo a string "%pipe%" seguida do comando desejado. O atacante controla integralmente o conteúdo do arquivo PostScript e, por consequência, o comando executado.

O relatório inicial foi feito à Atlassian pelo próprio time de segurança da empresa, que identificou o problema em produtos que processavam arquivos enviados por usuários. O bug upstream (697808) foi marcado como duplicata do bug 697799, que trata da correção definitiva no código do Ghostscript.

Como é explorada

O vetor mais comum não é chamar o binário gs diretamente, mas sim qualquer aplicação que delega renderização de imagem a bibliotecas que internamente invocam o Ghostscript para tipos PostScript/EPS/PDF — ImageMagick, GraphicsMagick e Pillow são citados explicitamente pela Atlassian como caminhos de exposição. Isso significa que um simples upload de "imagem" — na prática um arquivo PostScript disfarçado ou com extensão trocada — processado por uma rotina de thumbnail, conversão ou validação de imagem pode disparar a execução.

O CVSS classificado como AV:L reflete que a exploração ocorre localmente dentro do processo que interpreta o arquivo (o próprio gs), não que exija acesso à rede da máquina — o vetor de entrega do arquivo malicioso pode perfeitamente ser remoto (upload web, anexo de e-mail, pipeline de processamento de mídia). UI:R indica que é necessária uma ação que dispare o processamento do arquivo (abrir, converter, gerar thumbnail), mas não exige interação sofisticada da vítima. Não há exigência de autenticação (PR:N) nem de configuração não padrão: -dSAFER é o comportamento default do Ghostscript e é justamente o que a falha contorna.

A exploração ativa registrada em abril de 2017 ocorreu antes da publicação do patch, o que a torna um caso clássico de zero-day explorado in the wild — daí a listagem no catálogo KEV. Existem módulo público no Metasploit e PoCs publicadas, o que baixou bastante a barreira técnica para replicar o ataque depois da divulgação.

Versões

Afetadas
Ghostscript (Artifex) em todas as versões até 9.21 inclusive, e builds até 26/04/2017 antes da aplicação do patch ("through 2017-04-26" segundo a descrição oficial). Afeta também qualquer software que embuta ou invoque o interpretador Ghostscript para processar PostScript/EPS/PDF, como bibliotecas de imagem que o usam como backend.
Corrigidas em
Corrigido via os commits 04b37bbce1 e 4f83478c88 no repositório git do ghostpdl, com patches adicionais 57f20719 e ccfd2c75ac para regressões subsequentes. Distribuições aplicaram como backport: RHEL 6 e 7 via RHSA-2017:1230 (pacote ghostscript-9.07-20.el7_3.5 e correspondentes), SUSE (bug 1036453) e Gentoo via GLSA 201708-06.

Como se proteger

A correção definitiva está nos patches aplicados diretamente no repositório git do Ghostscript (ghostpdl), commits 04b37bbce1 e 4f83478c88, com duas correções adicionais posteriores para regressões: 57f20719 (problema com a feature DELAYBIND) e ccfd2c75ac (correção de checagem de underflow da pilha de operandos). Quem compila o Ghostscript a partir do código-fonte deve aplicar essa cadeia completa de patches, não apenas o primeiro commit.

Para quem usa pacotes de distribuição, a correção chegou via backport: Red Hat publicou RHSA-2017:1230 para RHEL 6 e 7 (ghostscript-9.07-20.el7_3.5 e equivalentes), SUSE tratou no bug 1036453, e Gentoo publicou o GLSA 201708-06. Atualizar para o pacote ghostscript da distribuição igual ou posterior a essas correções resolve o problema nessas plataformas.

Como -dSAFER é justamente o mecanismo neutralizado pela falha, confiar apenas nessa flag como controle compensatório é o mito a evitar — ela não protege contra este bug específico. Um paliativo real e de baixo custo usado amplamente na época (no mesmo contexto do ImageTragick) é remover ou desabilitar, na política do consumidor de imagens (por exemplo policy.xml do ImageMagick), o suporte a coders PS, EPS e PDF que acionam o Ghostscript internamente, além de evitar que arquivos enviados por usuários sejam processados por essas rotinas sem sandboxing (chroot, contêiner isolado, seccomp) restringindo acesso a shell e sistema de arquivos do processo que roda o gs.

Como detectar

Buscar em arquivos PostScript/EPS recebidos ou armazenados pela ocorrência simultânea das strings ".rsdparams" (ou ".eqproc") com "/OutputFile" e "%pipe%" — essa combinação é o indicador mais direto de tentativa de exploração, já presente na própria descrição da CVE. Também vale monitorar processos filhos inesperados spawnados a partir do processo gs (via auditd/EDR), já que a exploração bem-sucedida resulta em execução de shell a partir do interpretador. Não há assinatura de rede confiável, porque a entrega do arquivo malicioso pode ocorrer por qualquer canal (upload HTTP, e-mail, compartilhamento de arquivo) e o processamento é local ao host que roda o Ghostscript.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
Artifex Ghostscript through 2017-04-26 allows -dSAFER bypass and remote command execution via .rsdparams type confusion with a "/OutputFile (%pipe%" substring in a crafted .eps document that is an input to the gs program, as exploited in the wild in April 2017.
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.