Chính sách bảo mật của ImageMagick 'Chuyển đổi chặn PDF'


176

Chính sách bảo mật của Imagemagick dường như không cho phép tôi thực hiện chuyển đổi này từ pdf sang png. Chuyển đổi các tiện ích mở rộng khác dường như đang hoạt động, không phải từ pdf. Tôi đã không thay đổi bất kỳ cài đặt hình ảnh nào kể từ khi tôi cài đặt nó ... Tôi đang sử dụng Arch Linux, nếu HĐH có vấn đề.

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.

Câu trả lời:


212

Vâng, tôi đã thêm

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

ngay trước </policymap>trong /etc/ImageMagick-7/policy.xmlvà làm cho nó hoạt động trở lại, nhưng không chắc chắn về những tác động an ninh về điều đó.


3
Tôi tin rằng chính sách PDF đã được thêm do lỗi trong Ghostscript, mà tôi tin rằng hiện đã được sửa. Vì vậy, nếu bạn đang sử dụng Ghostscript hiện tại, thì bạn sẽ ổn khi đưa ra chính sách này đọc quyền ghi.
fmw42

30
Tôi tìm thấy dòng <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />và chỉ cần bỏ sót nó để làm cho nó hoạt động.
jakob-r


17
@ jakob-r: Tôi cho rằng bạn đã nhận xét nó ... ;-)
AstroFloyd

1
Hãy chắc chắn rằng ghostscript được cập nhật kb.cert.org/vuls/id/332928
ykay nói Phục hồi Monica

98

Như đã chỉ ra trong một số ý kiến, bạn cần chỉnh sửa các chính sách của ImageMagick /etc/ImageMagick-7/policy.xml. Đặc biệt hơn, trong ArchLinux tại thời điểm viết (05/01/2019), dòng sau đây không bị thiếu:

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

Chỉ cần bọc nó giữa <!---->để nhận xét nó, và chuyển đổi pdf sẽ hoạt động trở lại.


1
hãy chắc chắn rằng ghostscript được cập nhật kb.cert.org/vuls/id/332928
ykay nói Phục hồi Monica

6
Điểm của chức năng này là gì? Để ngăn người dùng tạo PDF?
Chuộc tội có giới hạn

6
Một phần, vâng. Vì ImageMagick thường được các trang web sử dụng để xử lý các tệp được tải lên - và PDF là một trong những định dạng tệp về cơ bản có thể chứa bất kỳ mã thực thi nào - bất kỳ ai có quyền tải lên đều có thể thực hiện bất kỳ tác vụ nào mà người dùng web của bạn có quyền truy cập. Tương tự nếu ai đó lừa bạn chuyển đổi cá nhân một tệp PDF độc hại sang bất kỳ định dạng nào khác.
TwoD


25

Điều này là do lỗ hổng bảo mật đã được xử lý trong Ghostscript 9.24 ( nguồn ). Nếu bạn có phiên bản mới hơn, bạn không cần cách giải quyết này nữa. Trên Ubuntu 19.10 với Ghostscript 6, điều này có nghĩa là:

  1. Đảm bảo bạn có Ghostscript ≥9.24:

    gs --version
    
  2. Nếu có, chỉ cần xóa toàn bộ phần sau khỏi /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" />
    

Chỉ sửa lỗi hoạt động với tôi trên Ubuntu 19.04 với gs 9.26.
ManuelTS

2
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xmllàm việc tốt cho tôi
Richard Kiefer

1
Đã làm việc cho Ubuntu 20.04
Alex K.

21

Đối với tôi trên arch linux tôi đã phải bình luận:

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

Trên hệ thống của tôi, có hai tệp chính sách: /etc/ImageMagick-6/policy.xml/etc/ImageMagick-7/policy.xml. Hãy cẩn thận để chỉnh sửa đúng!
SylvainB

4

Trên Ubuntu 19.10, tôi đã thực hiện điều này trong /etc/ImageMagick-6/policy.xml

không chú ý điều này

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

và bình luận này

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

Sau đó, lệnh này hoạt động không có lỗi

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

0

Tôi đã gặp vấn đề này với nextcloud, nó sẽ không tạo được hình thu nhỏ cho các tệp pdf.

Tuy nhiên, không có bước nào được đề xuất sẽ giải quyết vấn đề cho tôi.

Cuối cùng, tôi đã tìm thấy lý do: Câu trả lời được chấp nhận đã hoạt động nhưng tôi cũng phải khởi động lại php-fpm sau khi chỉnh sửa tệp chính sách:

 sudo systemctl restart php7.2-fpm.service
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.