Politica di sicurezza ImageMagick 'PDF' che blocca la conversione


176

La politica di sicurezza di Imagemagick sembra non consentirmi di eseguire questa conversione da pdf a png. La conversione di altre estensioni sembra funzionare, ma non da pdf. Non ho modificato nessuna delle impostazioni di imagemagick da quando l'ho installato ... Sto usando Arch Linux, se il sistema operativo è importante.

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.

Risposte:


214

Bene, ho aggiunto

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

poco prima </policymap>di /etc/ImageMagick-7/policy.xmle che lo fa funzionare di nuovo, ma non sono sicuro circa le implicazioni di sicurezza che.


3
Credo che la politica PDF sia stata aggiunta a causa di un bug in Ghostscript, che credo sia stato risolto. Quindi stai usando l'attuale Ghostscript, quindi dovresti andare bene a dare questa politica di leggere | scrivere i diritti.
fmw42,

31
Ho trovato la linea <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />e l'ho semplicemente decommentata per farlo funzionare.
Jakob-r,

8
La vulnerabilità di sicurezza che ha causato l'implementazione della politica da parte delle distribuzioni è indicata qui: kb.cert.org/vuls/id/332928
Jason Siefken

17
@ jakob-r: suppongo che tu l'abbia commentato ... ;-)
AstroFloyd

1
Assicurati che ghostscript sia aggiornato kb.cert.org/vuls/id/332928
ykay dice Reinstate Monica

99

Come sottolineato in alcuni commenti, è necessario modificare le politiche di ImageMagick in /etc/ImageMagick-7/policy.xml. Più in particolare, in ArchLinux al momento della stesura (05/01/2019) la seguente riga non è commentata:

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

Basta avvolgerlo <!--e -->commentarlo e la conversione in pdf dovrebbe funzionare di nuovo.


1
assicurati che ghostscript sia aggiornato kb.cert.org/vuls/id/332928
ykay dice Reinstate Monica

6
Qual è il punto di questa funzionalità? Per impedire agli utenti di creare PDF?
Espiazione limitata il

6
Parzialmente sì. Poiché ImageMagick viene spesso utilizzato dai siti Web per elaborare i file caricati e il PDF è uno dei formati di file che può contenere praticamente qualsiasi codice eseguibile, chiunque disponga di autorizzazioni di caricamento potrebbe altrimenti eseguire qualsiasi attività a cui l'utente Web ha accesso. Lo stesso se qualcuno ti inganna nel convertire personalmente un PDF dannoso in qualsiasi altro formato.
Due D


26

Ciò è dovuto a una vulnerabilità di sicurezza risolta in Ghostscript 9.24 ( fonte ). Se hai una versione più recente, non hai più bisogno di questa soluzione alternativa. Su Ubuntu 19.10 con Ghostscript 6, ciò significa:

  1. Assicurati di avere Ghostscript ≥9.24:

    gs --version
    
  2. Se sì, rimuovi l'intera sezione seguente da /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" />
    

Risolve solo quello che funzionava per me su Ubuntu 19.04 con gs 9.26.
ManuelTS

3
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmlha funzionato bene per me.
Richard Kiefer,

1
Ha funzionato per Ubuntu 20.04
Alex K.

21

per me su arch linux ho dovuto commentare:

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

Sul mio sistema c'erano due file policy.xml: /etc/ImageMagick-6/policy.xmle /etc/ImageMagick-7/policy.xml. Abbi cura di modificare quello giusto!
SylvainB,

4

Su Ubuntu 19.10, l'ho fatto in /etc/ImageMagick-6/policy.xml

commentare questo

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

e commenta questo

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

Successivamente, questo comando funziona senza errori

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

0

Stavo riscontrando questo problema con nextcloud che non riusciva a creare miniature per i file pdf.

Tuttavia, nessuno dei passaggi suggeriti potrebbe risolvere il problema per me.

Alla fine ho trovato il motivo: la risposta accettata ha funzionato ma ho dovuto riavviare php-fpm dopo aver modificato il file policy.xml:

 sudo systemctl restart php7.2-fpm.service
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.