Conversão de bloqueio de PDF da política de segurança ImageMagick


176

A política de segurança do Imagemagick parece não estar me permitindo realizar essa conversão de pdf para png. A conversão de outras extensões parece estar funcionando, mas não do pdf. Não alterei nenhuma das configurações de imagemagick desde que a instalei ... Estou usando o Arch Linux, se o sistema operacional importa.

user@machine $ convert -density 300 -depth 8 -quality 90 input.pdf output.png
convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert: no images defined `output.png' @ error/convert.c/ConvertImageCommand/3288.

Respostas:


212

Eu adicionei

  <policy domain="coder" rights="read | write" pattern="PDF" />

pouco antes </policymap>em /etc/ImageMagick-7/policy.xmle que faz com que funcione de novo, mas não tem certeza sobre as implicações dessa segurança.


3
Acredito que a política do PDF foi adicionada devido a um erro no Ghostscript, que acredito ter sido corrigido. Portanto, se você estiver usando o Ghostscript atual, não se preocupe em conceder a essa política direitos de leitura e gravação.
fmw42

30
Encontrei a linha <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />e apenas a descomentei para fazê-la funcionar.
precisa

8
A vulnerabilidade de segurança que as distribuições causados a implementar a política é referenciado aqui: kb.cert.org/vuls/id/332928
Jason Siefken

17
@ jakob-r: Suponho que você tenha comentado ... ;-)
AstroFloyd

1
Certifique-se de que o ghostscript seja atualizado kb.cert.org/vuls/id/332928
ykay diz Restabelecer Monica 5/19/19

98

Conforme indicado em alguns comentários, você precisa editar as políticas do ImageMagick no /etc/ImageMagick-7/policy.xml. Mais particularmente, no ArchLinux no momento da redação deste documento (01/01/2019), a seguinte linha não é comentada:

<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />

Basta envolvê-lo <!--e -->comentá-lo, e a conversão de pdf deve funcionar novamente.


1
verifique se o ghostscript está atualizado kb.cert.org/vuls/id/332928
ykay diz Restabelecer Monica 5/19/19

6
Qual é o objetivo dessa funcionalidade? Para impedir que os usuários criem PDFs?
Expiação limitada

6
Parcialmente sim. Como o ImageMagick é frequentemente usado por sites para processar arquivos enviados - e o PDF está entre um dos formatos de arquivo que podem basicamente conter qualquer código executável - qualquer pessoa com permissão de upload pode executar qualquer tarefa a que seu usuário da Web tenha acesso. O mesmo se alguém o enganar para converter pessoalmente um PDF mal-intencionado em qualquer outro formato.
TwoD


25

Isso ocorre devido a uma vulnerabilidade de segurança abordada no Ghostscript 9.24 ( fonte ). Se você possui uma versão mais recente, não precisa mais dessa solução alternativa. No Ubuntu 19.10 com Ghostscript 6, isso significa:

  1. Verifique se você possui o Ghostscript ≥9.24:

    gs --version
    
  2. Se sim, remova toda a seção a seguir de /etc/ImageMagick-6/policy.xml:

    <!-- disable ghostscript format types -->
    <policy domain="coder" rights="none" pattern="PS" />
    <policy domain="coder" rights="none" pattern="PS2" />
    <policy domain="coder" rights="none" pattern="PS3" />
    <policy domain="coder" rights="none" pattern="EPS" />
    <policy domain="coder" rights="none" pattern="PDF" />
    <policy domain="coder" rights="none" pattern="XPS" />
    

Somente correção que funcionou para mim no Ubuntu 19.04 com o gs 9.26.
ManuelTS

2
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmlfuncionou bem para mim.
Richard Kiefer

1
Trabalhou para o Ubuntu 20.04
Alex K.

21

para mim no arch linux eu tive que comentar:

  <policy domain="delegate" rights="none" pattern="gs" />

No meu sistema, havia dois arquivos policy.xml: /etc/ImageMagick-6/policy.xmle /etc/ImageMagick-7/policy.xml. Tome cuidado para editar o caminho certo!
SylvainB

4

No Ubuntu 19.10, eu fiz isso em /etc/ImageMagick-6/policy.xml

descomente isso

<policy domain="module" rights="read | write" pattern="{PS,PDF,XPS}" />

e comente isso

<!-- <policy domain="coder" rights="none" pattern="PDF" /> -->

Depois disso, este comando funciona sem erros

convert -thumbnail x300 -background white -alpha remove sample.pdf sample.png 

0

Eu estava enfrentando esse problema com o nextcloud, que falhava ao criar miniaturas para arquivos pdf.

No entanto, nenhuma das etapas sugeridas resolveria o problema para mim.

Eventualmente, encontrei o motivo: A resposta aceita funcionou, mas também tive que reiniciar o php-fpm após editar o arquivo policy.xml:

 sudo systemctl restart php7.2-fpm.service
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.