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.

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.


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.


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


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" />
    

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" />

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 

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.