ImageMagick 보안 정책 'PDF'차단 변환


176

Imagemagick 보안 정책은 pdf에서 png 로의 변환을 허용하지 않는 것 같습니다. 다른 확장자를 변환하는 것은 pdf가 아닌 작동하는 것 같습니다. 설치 한 이후로 imagemagick 설정을 변경하지 않았습니다 ... OS가 중요한 경우 Arch Linux를 사용하고 있습니다.

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.

답변:


214

글쎄, 나는 덧붙였다

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

직전 </policymap>/etc/ImageMagick-7/policy.xml하고는 있지만 확인하십시오의 보안 문제에 대해 다시 작동합니다.


3
Ghostscript의 버그로 인해 PDF 정책이 추가되었다고 생각합니다. 따라서 현재 Ghostscript를 사용하고 있으므로이 정책에 읽기 / 쓰기 권한을 부여해야합니다.
fmw42

30
나는 그 줄을 발견하고 <policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />그것을 주석 처리하여 그것을 작동시켰다.
jakob-r

8
배포가 정책을 구현하게하는 보안 취약점은 여기에서 참조됩니다. kb.cert.org/vuls/id/332928
Jason Siefken

17
@ jakob-r : 나는 당신이 그것을 주석 처리했다고 가정합니다 ... ;-)
AstroFloyd

1
고스트 스크립트가 업데이트되었는지 확인하십시오. kb.cert.org/vuls/id/332928
ykay는 Reinstate Monica

98

일부 의견에서 지적했듯이에서 ImageMagick의 정책을 편집해야합니다 /etc/ImageMagick-7/policy.xml. 보다 구체적으로, 작성 시점 (2019 년 1 월 5 일)의 ArchLinux에서 다음 행은 주석 처리되지 않습니다.

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

그냥 사이에 그것을 포장 <!--하고 -->그것을 언급하고, PDF 변환이 다시 작동합니다.


1
고스트 스크립트가 최신인지 확인하십시오. kb.cert.org/vuls/id/332928
ykay는 Reinstate Monica

6
이 기능의 요점은 무엇입니까? 사용자가 PDF를 만들지 못하게하려면?
제한 속죄

6
부분적으로 그렇습니다. ImageMagick은 종종 웹 사이트에서 업로드 된 파일을 처리하는 데 사용되며 PDF는 기본적으로 모든 실행 코드를 포함 할 수있는 파일 형식 중 하나입니다. 업로드 권한이있는 사용자는 웹 사용자가 액세스 할 수있는 모든 작업을 수행 할 수 있습니다. 누군가 당신을 속여서 악의적 인 PDF를 다른 형식으로 개인적으로 변환하도록 속인 경우에도 마찬가지입니다.
TwoD


25

이는 Ghostscript 9.24 ( source ) 에서 해결 된 보안 취약점으로 인한 것 입니다. 최신 버전 인 경우이 해결 방법이 더 이상 필요하지 않습니다. Ghostscript 6이 설치된 Ubuntu 19.10에서 이는 다음을 의미합니다.

  1. Ghostscript ≥9.24인지 확인하십시오.

    gs --version
    
  2. 그렇다면 다음 섹션 전체를 제거하십시오 /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" />
    

gs 9.26이있는 Ubuntu 19.04에서 저에게 효과적 인 수정.
ManuelTS

3
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xml나를 위해 잘 작동했습니다.
리차드 키퍼

1
우분투 20.04에서 근무
Alex K.

21

아치 리눅스에서 나를 위해 언급해야했습니다.

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

내 시스템에는 두 개의 policy.xml 파일이 있습니다. /etc/ImageMagick-6/policy.xml/etc/ImageMagick-7/policy.xml. 올바른 것을 편집하도록주의하십시오!
SylvainB

4

우분투 19.10에서는 /etc/ImageMagick-6/policy.xml 에서이 작업을 수행했습니다.

주석 해제

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

이 의견을

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

그 후,이 명령은 오류없이 작동합니다

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

0

pdf 파일의 축소판을 만들지 못하는 nextcloud 에서이 문제가 발생했습니다.

그러나 제안 된 단계 중 어느 것도 나를 위해 문제를 해결하지 못했습니다.

결국 나는 그 이유를 찾았습니다. 허용 된 답변이 효과가 있었지만 policy.xml 파일을 편집 한 후 php-fpm을 다시 시작해야했습니다.

 sudo systemctl restart php7.2-fpm.service
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.