변환 : 권한이없는`aaaa` @ error / constitute.c / ReadImage / 453


309

convertImageMagick에서 사용하여 보안 문자 그림을 만들고 싶습니다 .

그리고 나는 따라 있지만, 몇 가지 문제가있다.

내 리눅스 쉘에서 입력 :

convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png

오류는 다음과 같습니다

변환 : 인증되지 않음 adfgh@ error / constitute.c / ReadImage / 453. 변환 : 이미지 파일 이름 누락 ./test.png@ error / convert.c / ConvertImageCommand / 3015

내 ImageMagick : Version : 6.7.2-7로 설치합니다 yum install ImageMagick.

나는 실마리가 없다. 조언이 있으십니까?


7
다시 확인하십시오 policy.xml. 보안 옵션은 label:프로토콜을 방해 할 수 있습니다.
emcconville

2
감사! policy.xml을 수정하고이 줄에 주석을 추가하십시오 "<policy domain ="coder "rights ="none "pattern ="LAEBL ">". 작동합니다! 감사 !
jianwei

3
policy.xml은 어디에 있습니까?
아놀드 로아

3
/etc/ImageMagick/policy.xml
jianwei

6
/etc/ImageMagick-6/policy.xml
xerostomus

답변:


445

참고 :이 답변과 다른 답변의 솔루션에는 임의의 코드 실행 취약점을 해결하기 위해 안전 조치를 비활성화하는 것이 포함됩니다. 예를 들어이 고스트 스크립트 관련이 우분투 관련 공지를 참조하십시오. 입력 convert이 신뢰할 수있는 소스에서 온 경우에만 이러한 솔루션으로 진행하십시오 .

PHP (v.7.1)에서 ImageMagick을 사용하여 PDF 파일을 이미지로 슬라이스합니다.

먼저 다음과 같은 오류가 발생했습니다.

예외 유형 : ImagickException

예외 메시지 : 권한이 없습니다 ..... @ error / constitute.c / ReadImage / 412

일부 변경 후 /etc/ImageMagick-6/policy.xml다음과 같은 오류가 발생하기 시작합니다.

예외 유형 : ImagickException

예외 메시지 : 임시 파일을 만들 수 없습니다 ..... 권한이 거부되었습니다 @ error / pdf.c / ReadPDFImage / 465

내 수정 :

파일에서 /etc/ImageMagick-6/policy.xml(또는 /etc/ImageMagick/policy.xml)

  1. 코멘트 라인

    <!-- <policy domain="coder" rights="none" pattern="MVG" /> -->
  2. 라인 변경

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

    <policy domain="coder" rights="read|write" pattern="PDF" />
  3. 라인 추가

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

그런 다음 웹 서버 (nginx, apache)를 다시 시작하십시오 .


54
2018 년 10 월 4 일 이후 Ubuntu 상자에서이 문제가 발생한 경우이 답변이 적합합니다. 다른 배포판의 다른 문제는 무엇입니까?
LucasBr

12
나는 또한 오늘 우분투 16.04 에서이 문제를 겪고 있습니다. 뭔가 바뀌 었습니까? 또한 LABEL 줄을 추가 할 필요가 없었습니다. PDF에 대한 권한을 "없음"에서 "읽기"로 변경하면됩니다.
Bryant Kou

4
내 우분투 18.04.1 LTS 상자에서 매우 비슷한 문제를 해결
mhernandez

3
내 서버에서 policy.xml파일은 9 월 29 일에 마지막으로 업데이트되었지만 오늘날 문제가 발생합니다. 우분투 서버 14.04.5를 사용하고 있지만 자동 업데이트를 설정했습니다. 적절한 로그에서이 업데이트에 대한 발견 :imagemagick-common:amd64 (6.7.7.10-6ubuntu3.12, 6.7.7.10-6ubuntu3.13),
도니 Kurnia


161

ImageMagic convert명령을 여러 번 사용 하여 *.tif파일을 *.pdf파일 로 변환 합니다.

왜 그런지 모르겠지만 오늘은 다음과 같은 오류가 발생하기 시작했습니다.

convert: not authorized `a.pdf' @ error/constitute.c/WriteImage/1028.

명령을 실행 한 후 :

convert a.tif a.pdf

위의 답변을 읽은 후 파일을 편집했습니다. /etc/ImageMagick-6/policy.xml

라인을 변경했습니다 :

policy domain="coder" rights="none" pattern="PDF" 

policy domain="coder" rights="read|write" pattern="PDF"

이제 모든 것이 잘 작동합니다.

"Ubuntu 16.04.5 LTS"에 "ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28"이 있습니다.


1
내가 오픈 수세 도약 15.0에있어하고, PDF 페이지, 같은 오류를 비교하는 '비교'사용 여기에 설명 된대로 선을 변경 한 후 10 월 10 일 2018 년에 오픈 수세하여 업데이트 후에는했다.
Keks 복용량

Ubuntu Xenial 16.04 LTS를 사용 중이며 갑자기 Apache 로그에서 해당 오류가 발생하기 시작했습니다. 여기에 설명 된대로 정책을 변경 한 후 문제가 해결되었음을 확인합니다.
user2641103

5
이것은 정답입니다. sNICkerssss의 답변은 기술적으로 정확하지만 convertPDF에 대한 명령 줄 사용에는 한 단계 만 필요합니다 .
davidA

1
이 '문제'는 Ghostscript 기능에 대한 빠르고 까다로운 '수정'이며 장기적으로 Ghostscript (및 ImageMagick)를 대체해야합니다.
9ilsdx 9rvj 0lo

4
이러지 마 이 제한은 가능한 원격 코드 실행으로 인해 보안 조치로 도입되었습니다 ( launchpad.net/ubuntu/+source/imagemagick/8:6.7.7.10-6ubuntu3.13 참조 ). 정답은 다음과 같습니다.이 작업에는 다른 프로그램을 사용해야합니다.
Marian

66

참고 :이 솔루션 및 기타 "policy.xml 편집"솔루션은 ImageMagick의 임의 코드 실행 취약성에 대한 안전 조치를 비활성화합니다. 100 %를 제어하지 않는 입력을 처리해야하는 경우 ImageMagick이 아닌 다른 프로그램을 사용해야합니다.

여전히 여기에 있다면, 완전히 제어 할 수 있고 안전하며 사용자가 편집 할 수없는 이미지를 편집하려고합니다.

/etc/ImageMagick/policy.xml냠으로 설치되는 파일. 거의 모든 것을 허용하지 않습니다 (보안 및 ImageMagick 호출로 시스템 과부하 방지).

당신이 받고있는 경우 ReadImage상기와 오류를, 당신은 라인을 변경할 수 있습니다 :

<policy domain="coder" rights="read" pattern="LABEL" />

문제를 해결해야합니다.

파일에는 많은 문서가 들어 있으므로 읽어야합니다. 예를 들어 더 많은 권한이 필요한 경우 다음과 같이 권한을 결합 할 수 있습니다.

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

... 모든 권한 검사를 제거하는 것이 좋습니다 (즉, 행을 삭제하거나 주석 처리).


2
이러지 마 이 제한은 가능한 원격 코드 실행으로 인해 보안 조치로 도입되었습니다 ( launchpad.net/ubuntu/+source/imagemagick/8:6.7.7.10-6ubuntu3.13 참조 ). 정답은 다음과 같습니다.이 작업에는 다른 프로그램을 사용해야합니다.
Marian

5
@Marian 다른 프로그램을 사용하는 것은 도움이되지 않습니다. OP는 ImageMagick에 대해 특별히 물었습니다. 이에 대한 답은 "무엇을하고 있는지, 자신의 위험을 감수하고, 시스템이 안전한지 확인해야합니다. 여기에해서는 안되는 이유가 있으며, 여기에 어떻게해야합니까?"
KolonUK

2
OP (그리고 나를 포함하여 웹 검색을 통해 여기에 오는 사람들)는 지금까지 ImageMagick을 사용하고 있습니다. 물론이 문제를 해결하기위한 첫 번째 시도는 ImageMagick을 사용하여 솔루션을 찾는 것입니다. 그렇다고 무조건 ImageMagick을 사용하려는 것은 아닙니다.
Marian

3
수천 명의 사용자가 본 Q & A 사이트에 보안에 대한 이러한 무시 무시한 접근 방식이 매우 부적절하다는 것을 알았습니다 (이 페이지는 10 만 번 조회되었으며이 문제의 가장 큰 검색 결과입니다). 마리안은 보안 우회가 아닌 대안을 찾아야한다고 제안한 전용 사이트 ( imagetragick.com ) 를 포함하여이 취약점의 중요성을 강조했습니다 . 대신 김프를 사용하기로 선택했습니다. poppler(고스트 스크립트의 대안 convert이미지에 래스터의 PDF 페이지에 의존)
루이 매덕스

1
보안 정책을 일시적으로 비활성화하는 명령 줄 옵션이 없습니까? 그런 다음 신뢰하는 특정 PDF 파일에 사용할 수 있습니다.
HRJ

27

누군가 설치 후 하나의 명령으로 수행 해야하는 경우 이것을 실행하십시오!

sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml

6
더 짧은 :sed -i 's/\(<policy domain="coder" rights=\)"none" \(pattern="PDF" \/>\)/\1"read|write"\2/g' /etc/ImageMagick-6/policy.xml
leftaroundabout

5
더 간결합니다. sudo는 / etc 안에있는 파일을 편집해야합니다. sudo sed -i '/PDF/s/none/read|write/' /etc/ImageMagick-6/policy.xml
Naveed

업데이트 고스트 스크립트로 확인 kb.cert.org/vuls/id/332928
ykay는 분석 재개 모니카 말한다

24

가장 높은 표를 얻은 답변 (나는 거기에 의견을 추가 할만 큼 평판이 충분하지 않음)은 MVG 라인을 주석으로 제안하지만 다음을 명심하십시오.

CVE-2016-3714

ImageMagick은 ".svg / .mvg"파일을 지원하므로 공격자는 MSL (Magick Scripting Language) 및 MVG (Magick Vector Graphics)와 같은 스크립팅 언어로 코드를 작성하여 이미지 파일로 위장한 서버에 업로드하고 위에서 설명한대로 서버 측에서 악성 명령을 실행하는 소프트웨어. 예를 들어 파일에 다음 명령을 추가하고 취약한 ImageMagick 버전을 사용하는 웹 서버에 업로드하면 서버에서 "ls -la"명령이 실행됩니다.

exploit.jpg :

푸시 그래픽 컨텍스트 뷰 박스 0 0 640 480 채우기 'url ( https://website.com/image.png "| ls"-la)'팝 그래픽 컨텍스트

7.0.1-2 또는 6.9.4-0 미만의 모든 버전은 잠재적으로 취약하며 영향을받는 당사자는 가능한 한 최신 ImageMagick 버전으로 업그레이드해야합니다.

출처


3
MVG 및 PDF-> JPG 변환은 여전히 ​​작동하지 않습니다. 감사합니다.
Rimu Atkinson

1
6.7.7-10 2018 년 9 월 28 일에 릴리스 된 최신 버전과 같습니다. 내가 무엇을 놓치고 있습니까? $convert --version Version: ImageMagick 6.7.7-10 2018-09-28 Q16 http://www.imagemagick.org
HaPsantran

최신 버전의 imagemagick.org/script/download.php가 있습니다. 아마도 Linux 배포판이 이전 버전을 사용하고 있을 것입니다. 우분투 16.04는 현재 6.8.9-9 사용
니콜라이 이바노프에게

1
우분투 팀에 적합한 솔루션은 imagemagick을 최신 버전으로 업데이트하고 기존 버전을 손상시키지 않는 것입니다.
9ilsdx 9rvj 0lo

2
Ubuntu는 기능이없는 배포판이며 최신 릴리스에는 제공되지 않습니다.
Buo-Ren Lin

19

내 Ubuntu 16.04 시스템에서 최근 업데이트 한 후 .ps 파일에서 convert를 실행하여 pdf로 변환하려고 할 때이 오류가 발생하기 시작했습니다.

이 수정은 나를 위해 일했다 :

터미널 실행에서 :

sudo gedit /etc/ImageMagick-6/policy.xml

gedit 텍스트 편집기에서 policy.xml 파일을 열어야합니다. 그렇지 않은 경우 이미지 magick이 다른 위치에 설치되었을 수 있습니다. 그런 다음 변경

rights="none" 

rights="read | write" 

파일 하단 근처의 PDF, EPS 및 PS 라인 저장하고 종료하면 이미지 magick이 다시 작동합니다.


1
업데이트 고스트 스크립트로 확인 kb.cert.org/vuls/id/332928
ykay는 분석 재개 모니카 말한다

이것은 Ubuntu 18.04 ImageMagick 6.9.7-4에서 도움이되었습니다. 감사.
그리고

11

/etc/ImageMagick/policy.xml 파일을 삭제하십시오.


1
간단하면서도 완벽합니다. 테스트가 트래비스에 실패로 내가 이런 짓을
댄 레이 Oquindo을

1
이것은 수많은 게시물에서 작동하는 유일한 솔루션입니다. 이름을로 변경했습니다 policy-disabled.xml. 보안 문제가 확실하게 해결 될 때까지 복원 할 것이라고 생각합니다.
groovenectar

jupyter notebook
Nicole Douglas

2

여기에 몇 가지 제안을 읽고 아이디어를 결합한 후에 /etc/ImageMagick-6/policy.xml의 다음 변경이 필요했습니다.

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

... rights = "none"이 도움이되지 않았습니다. ... pattern = "LABEL"은 필요하지 않았습니다. 큰 png 파일 (~ 1MB 만)로 작업하지는 않지만 메모리 제한의 일부 변경도 필요했습니다.

<policy domain="resource" name="memory" value="2GiB"/>

(256Mib 대신)

<policy domain="resource" name="area" value="2GB"/>

(128MB 대신)



2

동일한 도구를 통해 래스터 파일과 PDF / PS / EPS를 처리 할 필요가없는 경우 ImageMagick의 보안을 풀지 마십시오.

대신, 웹 응용 프로그램에 대한 방어 수준을 그대로 유지하고 Ghostscript가 알려진 모든 -dSAFER취약점에 대해 패치되었는지 확인한 다음 직접 호출하십시오.

gs -dSAFER -r300 -sDEVICE=png16m -o document-%03d.png document.pdf
  • -dSAFER "호스트 스크립트 실행은 튜링 완료 프로그래밍 언어로 외부 세계와 상호 작용할 수있는 모든 권한을 부여합니다."
  • -r300 원하는 DPI를 300으로 설정합니다 (기본값은 72).
  • -sDEVICE출력 형식을 지정합니다 ( 다른 선택 사항은 설명서 의 장치 섹션 을 참조하십시오 ).
  • -o 속기입니다 -dBATCH -dNOPAUSE -sOutputFile=
  • Ghostscript 매뉴얼 의이 섹션에서는 다중 파일 파일 이름 출력에 대한 몇 가지 형식의 예제를 제공하지만 실제 구문 정의에 대해서는 C printf (3) 함수 에 대한 설명서를 제공합니다 .

EPS 파일을 렌더링하는 경우 -dEPSCrop출력을 페이지 크기로 채우지 않고 -sDEVICE=pngalpha투명한 배경을 얻는 데 사용 하도록 추가 하십시오 .


더 안전한 솔루션을 주셔서 감사합니다. 그래도 GhostScript 명령 행 옵션을 기억할 수 있을지는 확실하지 않습니다! :)
Cris Luengo

@CrisLuengo 나도하지 않습니다. 그렇기 때문에 내가 제기 한 질문에 대한 좋은 답변이있는 곳을 찾을 수있는 한 많은 Google 결과에 게시했습니다. : P
ssokolow

1
-r600 -dDownScaleFactor=4150dpi이지만 앤티 앨리어싱이 더 좋은 파일을 만드는 데 좋은 결과를 얻었습니다 .
John Cole

0

error/constitute.c/ReadImage/453 이미지 magick를 사용하여 eps를 gif로 변환하려고 할 때 오류가 발생했습니다 . 나는 전자 (처음부터하지만 다른)에 오류가 여전히 sNICkerssss에 의해 제안 된 솔루션을 시도했지만 error/constitute.c/ReadImage/412 문제를 해결 어떤 것은 넣어이었다 read다른 항목에

 <policy domain="coder" rights="read" pattern="PS" />
 <policy domain="coder" rights="read" pattern="EPS" />
 <policy domain="coder" rights="read" pattern="PDF" />
 <policy domain="coder" rights="read" pattern="XPS" />
 <policy domain="coder" rights="read|write" pattern="LABEL" />

1
이것은 실제로 질문에 대답하지 않습니다. 다른 질문이 있으면 질문하기를 클릭하여 질문 할 수 있습니다 . 당신은 또한 수 있습니다 현상금을 추가 충분한 일단이 문제에 더 많은 관심을 끌기 위해 명성을 . - 리뷰에서
Sirence

제안 해 주셔서 감사합니다. 그동안 답변을 수정했습니다. 어쨌든 나는 정말 sNICkerssss 답변에 댓글왔다한다고 생각하지만, 나는 내가 알아 낸 가장 좋은 방법입니다 추가 할 수 없기 때문에
lambertmular

@Sirence 그것은 답변입니다. 다른 답변에서 복사하기 때문에 열악하다고 생각했습니다.
9ilsdx 9rvj 0lo

@ 9ilsdx9rvj0lo 내 의견은 편집 전부터였습니다. stackoverflow.com/posts/52700739/revisions
Sirence
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.