ImageMagick güvenlik politikası 'PDF' engelleme dönüşümü


176

Imagemagick güvenlik politikası, pdf'den png'ye bu dönüşümü gerçekleştirmeme izin vermiyor gibi görünüyor. Diğer uzantıları dönüştürmek işe yarıyor, pdf'den değil. Kurduğumdan beri imagemagick ayarlarından hiçbirini değiştirmedim ... İşletim sistemi önemliyse Arch Linux kullanıyorum.

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.

Yanıtlar:


214

Peki, ekledim

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

hemen önce </policymap>de /etc/ImageMagick-7/policy.xmlve bu kadar değil emin güvenlik yan etkileri hakkında, yeniden çalışmaya yapar.


3
PDF politikasının, şimdi düzeltildiğine inandığım Ghostscript'teki bir hata nedeniyle eklendiğine inanıyorum. Bu yüzden mevcut Ghostscript'i kullanıyorsunuz, o zaman bu politikaya | yazma haklarını okumada iyi olmalısınız.
fmw42

31
Hattı buldum <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />ve sadece işe yaraması için uncommented.
jakob-r

8
Dağıtımların ilkeyi uygulamasına neden olan güvenlik açığına burada başvurulur: kb.cert.org/vuls/id/332928
Jason

17
@ jakob-r: Sanırım bunu yorumladın ... ;-)
AstroFloyd


98

Bazı yorumlarda belirtildiği gibi, ImageMagick in politikalarını düzenlemeniz gerekir /etc/ImageMagick-7/policy.xml. Daha özel olarak, ArchLinux'da yazma sırasında (05/01/2019) aşağıdaki satır önerilmemektedir:

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

Sadece <!--ve arasında -->yorum yapmak için sarın ve pdf dönüşüm tekrar çalışması gerekir.


1
ghostscript'in güncel olduğundan emin olun kb.cert.org/vuls/id/332928
ykay diyor Reinstate Monica

6
Bu işlevin amacı nedir? Kullanıcıların PDF oluşturmasını önlemek için?
Sınırlı Kefaret

6
Kısmen evet. ImageMagick genellikle web siteleri tarafından yüklenen dosyaları işlemek için kullanıldığından ve PDF temelde yürütülebilir kod içerebilen dosya biçimlerinden biri olduğundan - yükleme izinleri olan herkes web kullanıcınızın erişebileceği herhangi bir görevi gerçekleştirebilir. Birisi sizi kötü amaçlı bir PDF'yi başka bir formata dönüştürmek için kandırırsa aynı şey.
TwoD


25

Bunun nedeni, Ghostscript 9.24'te ( kaynak ) giderilen bir güvenlik açığıdır . Daha yeni bir sürümünüz varsa, artık bu geçici çözüme ihtiyacınız yoktur. Ghostscript 6 ile Ubuntu 19.10'da bu şu anlama gelir:

  1. Ghostscript .29.24 olduğundan emin olun:

    gs --version
    
  2. Evetse, aşağıdaki bölümün tamamını şuradan kaldırmanız yeterlidir /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" />
    

Yalnızca benim için çalışan Ubuntu 19.04'te gs 9.26 ile düzeltildi.
ManuelTS

3
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmlbenim için iyi çalıştı.
Richard Kiefer

1
Ubuntu için çalıştı 20.04
Alex K.

21

benim için kemer linux üzerinde ben yorum vardı:

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

Sistemimde iki policy.xml dosyası vardı: /etc/ImageMagick-6/policy.xmlve /etc/ImageMagick-7/policy.xml. Doğru olanı düzenlemeye dikkat edin!
SylvainB

4

Ubuntu 19.10'da bunu /etc/ImageMagick-6/policy.xml dosyasında yaptım

bunu tavsiye et

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

ve bunu yorumla

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

Bundan sonra, bu komut hatasız çalışır

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

0

Ben pdf dosyaları için küçük resimler oluşturmak başarısız olur nextcloud ile bu sorunu yaşıyordu.

Ancak, önerilen adımların hiçbiri sorunu benim için çözmez.

Sonunda sebebini buldum: Kabul edilen cevap işe yaradı, ancak policy.xml dosyasını düzenledikten sonra php-fpm'yi yeniden başlatmam gerekti:

 sudo systemctl restart php7.2-fpm.service
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.