Polityka bezpieczeństwa ImageMagick blokująca konwersję „PDF”

176

Wydaje się, że polityka bezpieczeństwa Imagemagick nie pozwala mi na wykonanie tej konwersji z formatu pdf na png. Wydaje się, że konwersja innych rozszerzeń działa, ale nie z pliku PDF. Nie zmieniłem żadnych ustawień imagemagick odkąd go zainstalowałem ... Używam Arch Linux, jeśli system operacyjny ma znaczenie.

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
źródło

Odpowiedzi:

214

Cóż, dodałem

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

tuż przed </policymap>in /etc/ImageMagick-7/policy.xmli to sprawia, że ​​działa ponownie, ale nie jestem pewien, jakie mają to konsekwencje dla bezpieczeństwa.

Stefan Seidel
źródło
3
Uważam, że polityka PDF została dodana z powodu błędu w Ghostscript, który, jak sądzę, został już naprawiony. Więc jeśli używasz aktualnego Ghostscriptu, powinieneś być w porządku, dając tej polityce prawa do odczytu | zapisu.
fmw42
30
Znalazłem linię <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />i po prostu odkomentowałem ją, aby działała.
jakob-r
8
Luki w zabezpieczeniach, które spowodowały, że dystrybucje wdrożyły tę politykę, są wymienione tutaj: kb.cert.org/vuls/id/332928
Jason Siefken
17
@ jakob-r: Przypuszczam, że skomentowałeś to ... ;-)
AstroFloyd
1
Upewnij się, że ghostscript jest zaktualizowany kb.cert.org/vuls/id/332928
ykay mówi Przywróć Monikę
98

Jak wskazano w niektórych komentarzach, musisz edytować zasady ImageMagick w /etc/ImageMagick-7/policy.xml. W szczególności w ArchLinux w momencie pisania (05/01/2019) następujący wiersz nie jest komentowany:

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

Po prostu zawiń go między <!--i, -->aby go skomentować, a konwersja pdf powinna znów działać.

Michele
źródło
1
upewnij się, że ghostscript jest aktualny kb.cert.org/vuls/id/332928
tak mówi Przywróć Monikę
6
Jaki jest sens tej funkcjonalności? Aby uniemożliwić użytkownikom tworzenie plików PDF?
Limited Atonement
6
Częściowo tak. Ponieważ ImageMagick jest często używany przez strony internetowe do przetwarzania przesłanych plików - a PDF jest jednym z formatów plików, które mogą w zasadzie zawierać dowolny kod wykonywalny - każdy z uprawnieniami do przesyłania mógłby w przeciwnym razie wykonać dowolne zadanie, do którego użytkownik sieci ma dostęp. To samo, jeśli ktoś nakłoni Cię do osobistej konwersji złośliwego pliku PDF na inny format.
TwoD
28

Dla mnie w moim systemie archlinux linia była już odkomentowana. Musiałem zamienić „brak” na „czytaj | pisz”, aby działało.

motyl
źródło
upewnij się, że ghostscript jest aktualny kb.cert.org/vuls/id/332928
tak mówi Przywróć Monikę
podobnie. Przy okazji jestem na bieżąco.
yukashima huksay
25

Wynika to z luki w zabezpieczeniach, którą rozwiązano w Ghostscript 9.24 ( źródło ). Jeśli masz nowszą wersję, nie potrzebujesz już tego obejścia. W przypadku Ubuntu 19.10 z Ghostscript 6 oznacza to:

  1. Upewnij się, że masz Ghostscript ≥9,24:

    gs --version
    
  2. Jeśli tak, po prostu usuń całą następującą sekcję z /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" />
    
taniusz
źródło
Tylko poprawka, która działała dla mnie na Ubuntu 19.04 z gs 9.26.
ManuelTS
3
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmldziałało dobrze dla mnie.
Richard Kiefer
1
Pracował dla Ubuntu 20.04
Alex K.,
21

dla mnie na arch linux musiałem skomentować:

  <policy domain="delegate" rights="none" pattern="gs" />
soloturn
źródło
W moim systemie były dwa pliki policy.xml: /etc/ImageMagick-6/policy.xmli /etc/ImageMagick-7/policy.xml. Uważaj, aby edytować właściwy!
SylvainB
4

W Ubuntu 19.10 zrobiłem to w /etc/ImageMagick-6/policy.xml

odkomentuj to

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

i skomentuj to

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

Następnie to polecenie działa bez błędów

convert -thumbnail x300 -background white -alpha remove sample.pdf sample.png 
slc66
źródło
0

Miałem problem z usługą nextcloud, która nie tworzyła miniatur dla plików pdf.

Jednak żaden z sugerowanych kroków nie rozwiązałby problemu.

W końcu znalazłem powód: zaakceptowana odpowiedź zadziałała, ale musiałem również ponownie uruchomić php-fpm po edycji pliku policy.xml:

 sudo systemctl restart php7.2-fpm.service
derwiwie
źródło