Política de seguridad de ImageMagick 'PDF' que bloquea la conversión

176

La política de seguridad de Imagemagick parece no permitirme realizar esta conversión de pdf a png. La conversión de otras extensiones parece estar funcionando, solo que no desde pdf. No he cambiado ninguna de las configuraciones de imagemagick desde que la instalé ... Estoy usando Arch Linux, si el sistema operativo es 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.
T. Zack Crawford
fuente

Respuestas:

214

Bueno, agregué

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

justo antes </policymap>de /etc/ImageMagick-7/policy.xmly que hace que funcione de nuevo, pero no está seguro acerca de las implicaciones de seguridad de eso.

Stefan Seidel
fuente
3
Creo que la política de PDF se agregó debido a un error en Ghostscript, que creo que ahora se ha solucionado. Entonces, si está utilizando el Ghostscript actual, entonces debería estar bien si le da a esta política derechos de lectura | escritura.
fmw42
30
Encontré la línea <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />y simplemente la descomenté para que funcione.
jakob-r
8
Aquí se hace referencia a la vulnerabilidad de seguridad que causó que las distribuciones implementen la política: kb.cert.org/vuls/id/332928
Jason Siefken
17
@ jakob-r: supongo que lo comentaste ... ;-)
AstroFloyd
1
Asegúrese de que ghostscript esté actualizado kb.cert.org/vuls/id/332928
ykay dice Reinstate Monica
98

Como se señaló en algunos comentarios, debe editar las políticas de ImageMagick en /etc/ImageMagick-7/policy.xml. Más particularmente, en ArchLinux al momento de escribir (01/05/2019) la siguiente línea no está comentada:

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

Simplemente envuélvala <!--y -->coméntela, y la conversión de pdf debería funcionar nuevamente.

Michele
fuente
1
asegúrese de que ghostscript esté actualizado kb.cert.org/vuls/id/332928
ykay dice Reinstate Monica
66
¿Cuál es el punto de esta funcionalidad? Para evitar que los usuarios hagan archivos PDF?
Expiación limitada el
66
Parcialmente si. Como ImageMagick a menudo es utilizado por los sitios web para procesar archivos cargados, y el PDF se encuentra entre uno de los formatos de archivo que básicamente puede contener cualquier código ejecutable, cualquier persona con permisos de carga podría realizar cualquier tarea a la que su usuario web tenga acceso. Lo mismo si alguien te engaña para que conviertas personalmente un PDF malicioso a cualquier otro formato.
TwoD
28

Para mí en mi sistema archlinux, la línea ya no estaba comentada. Tuve que reemplazar "none" por "read | write" para que funcione.

mariposa
fuente
asegúrese de que ghostscript esté actualizado kb.cert.org/vuls/id/332928
ykay dice Reinstate Monica
mismo. Estoy actualizado por cierto.
yukashima huksay
25

Esto se debe a una vulnerabilidad de seguridad que se ha abordado en Ghostscript 9.24 ( fuente ). Si tiene una versión más nueva, ya no necesita esta solución. En Ubuntu 19.10 con Ghostscript 6, esto significa:

  1. Asegúrese de tener Ghostscript ≥9.24:

    gs --version
    
  2. En caso afirmativo, simplemente elimine toda la siguiente sección 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
fuente
Solo solucioné eso que funcionó para mí en Ubuntu 19.04 con gs 9.26.
ManuelTS
2
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmlfuncionó bien para mí
Richard Kiefer
1
Trabajó para Ubuntu 20.04
Alex K.
21

para mí en Arch Linux tuve que comentar:

  <policy domain="delegate" rights="none" pattern="gs" />
soloturn
fuente
En mi sistema, había dos archivos policy.xml: /etc/ImageMagick-6/policy.xmly /etc/ImageMagick-7/policy.xml. ¡Tenga cuidado de editar la correcta!
SylvainB
4

En Ubuntu 19.10, hice esto en /etc/ImageMagick-6/policy.xml

descomenta esto

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

y comentar esto

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

Después de eso, este comando funciona sin error

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

Estaba experimentando este problema con nextcloud que no podía crear miniaturas para archivos pdf.

Sin embargo, ninguno de los pasos sugeridos resolvería el problema por mí.

Finalmente encontré la razón: la respuesta aceptada funcionó pero también tuve que reiniciar php-fpm después de editar el archivo policy.xml:

 sudo systemctl restart php7.2-fpm.service
derwiwie
fuente