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.
T. Zack Crawford
la source
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.

Stefan Seidel
la source
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.

Michele
la source
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
28

Pour moi, sur mon système archlinux, la ligne était déjà sans commentaire. J'ai dû remplacer "aucun" par "lecture | écriture" pour que cela fonctionne.

papillon
la source
assurez-vous que ghostscript est à jour kb.cert.org/vuls/id/332928
ykay dit Réintégrer Monica
même. Je suis à jour btw.
yukashima huksay
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" />
    
Tanius
la source
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" />
soloturn
la source
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 
slc66
la source
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
derwiwie
la source