Politique de sécurité ImageMagick bloquant la conversion 'PDF'


176

La politique de sécurité d'Imagemagick semble ne pas me permettre d'effectuer cette conversion de pdf en png. La conversion d'autres extensions semble fonctionner, mais pas à partir de pdf. Je n'ai changé aucun des paramètres imagemagick depuis que je l'ai installé ... J'utilise Arch Linux, si le système d'exploitation compte.

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.

2
Copie

Réponses:


214

Eh bien, j'ai ajouté

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

juste avant </policymap>dans /etc/ImageMagick-7/policy.xmlet qui le fait fonctionner à nouveau, mais pas sûr des conséquences sur la sécurité de ce.


3
Je crois que la politique PDF a été ajoutée en raison d'un bogue dans Ghostscript, qui, je crois, a été corrigé. Donc, si vous utilisez le Ghostscript actuel, alors vous devriez bien donner à cette politique des droits de lecture | écriture.
fmw42

31
J'ai trouvé la ligne <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />et je l'ai simplement décommentée pour qu'elle fonctionne.
jakob-r

8
La vulnérabilité de sécurité qui a poussé les distributions à implémenter la politique est référencée ici: kb.cert.org/vuls/id/332928
Jason

17
@ jakob-r: Je suppose que vous l'avez commenté ... ;-)
AstroFloyd

1
Assurez-vous que ghostscript est mis à jour kb.cert.org/vuls/id/332928
ykay dit Réintégrer Monica

99

Comme indiqué dans certains commentaires, vous devez modifier les politiques d'ImageMagick dans /etc/ImageMagick-7/policy.xml. Plus particulièrement, dans ArchLinux au moment de la rédaction (05/01/2019), la ligne suivante n'est pas commentée:

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

Placez-le simplement entre <!--et -->pour le commenter, et la conversion PDF devrait fonctionner à nouveau.


1
assurez-vous que ghostscript est à jour kb.cert.org/vuls/id/332928
ykay dit Réintégrer Monica

6
Quel est l'intérêt de cette fonctionnalité? Pour empêcher les utilisateurs de créer des PDF?
Expiation limitée du

6
En partie, oui. Comme ImageMagick est souvent utilisé par les sites Web pour traiter les fichiers téléchargés - et le PDF fait partie des formats de fichier qui peuvent essentiellement contenir n'importe quel code exécutable - toute personne disposant des autorisations de téléchargement pourrait sinon effectuer toute tâche à laquelle votre utilisateur Web a accès. Idem si quelqu'un vous incite à convertir personnellement un PDF malveillant dans un autre format.
TwoD


26

Cela est dû à une vulnérabilité de sécurité qui a été corrigée dans Ghostscript 9.24 ( source ). Si vous disposez d'une version plus récente, vous n'avez plus besoin de cette solution de contournement. Sur Ubuntu 19.10 avec Ghostscript 6, cela signifie:

  1. Assurez-vous que vous avez Ghostscript ≥9.24:

    gs --version
    
  2. Si oui, supprimez simplement toute la section suivante 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" />
    

Seul correctif qui a fonctionné pour moi sur Ubuntu 19.04 avec gs 9.26.
ManuelTS

3
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmla bien fonctionné pour moi.
Richard Kiefer le

1
A travaillé pour Ubuntu 20.04
Alex K.

21

pour moi sur arch linux, je devais commenter:

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

Sur mon système, il y avait deux fichiers policy.xml: /etc/ImageMagick-6/policy.xmlet /etc/ImageMagick-7/policy.xml. Prenez soin d'éditer le bon!
SylvainB le

4

Sur Ubuntu 19.10, j'ai fait cela dans /etc/ImageMagick-6/policy.xml

décommenter ceci

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

et commente ça

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

Après cela, cette commande fonctionne sans erreur

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

0

Je rencontrais ce problème avec nextcloud qui ne parviendrait pas à créer des vignettes pour les fichiers pdf.

Cependant, aucune des étapes suggérées ne résoudrait le problème pour moi.

Finalement, j'ai trouvé la raison: la réponse acceptée a fonctionné mais j'ai également dû redémarrer php-fpm après avoir modifié le fichier policy.xml:

 sudo systemctl restart php7.2-fpm.service
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.