変換:許可されていない `aaaa` @ error / constitute.c / ReadImage / 453


309

convertImageMagickからキャプチャ画像を作成したい。

そして私はこれに従いましたが、いくつか問題があります。

私のLinuxシェルに入力:

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:バージョン:6.7.2-7、でインストールしyum install ImageMagickます。

私は無知です。何かアドバイスはありますか?


7
再確認してくださいpolicy.xml。セキュリティオプションがlabel:プロトコルを妨げている可能性があります。
emcconville 2017年

2
ありがとう!policy.xmlを変更し、この行にコメントを付けます "<policy domain =" coder "rights =" none "pattern =" LAEBL ">"。うまくいきます!よろしくお願いします!
jianwei 2017年

3
policy.xmlはどこにありますか?
Arnold Roa

3
/etc/ImageMagick/policy.xml
jianwei

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

回答:


445

注:この解決策およびその他の解決策には、任意のコード実行の脆弱性を修正するために存在する安全対策を無効にすることが含まれます。たとえば、このゴーストスクリプト関連このUbuntu関連のアナウンスを参照してください。への入力が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" />

次に、Webサーバー(nginx、apache)を再起動します


54
2018年10月4日以降、Ubuntuボックスでこの問題が発生した場合は、これで問題ありません。他のディストリビューションで発生した他の問題はありますか?
LucasBr 2018年

12
Ubuntu 16.04でもこの問題が発生しています。何か変わった?また、LABEL行を追加する必要はなく、PDFの権限を「なし」から「読み取り」に変更するだけです。
ブライアントコウ

4
解き非常によく似た私のUbuntu 18.04.1 LTSボックス内の問題
mhernandez

3
私のサーバーでは、policy.xmlファイルは9月29日に最後に更新されましたが、問題は今日発生しました。ubuntuサーバー14.04.5を使用していますが、自動更新を設定しています。適切なログで、私はこのアップデートについて見つけました:imagemagick-common:amd64 (6.7.7.10-6ubuntu3.12, 6.7.7.10-6ubuntu3.13),
Donny Kurnia '8/10/18

12
関連する変更ログは次のとおりです。launchpad.net
ubuntu / + source / imagemagick /

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
私はopenSuse Leap 15.0を使用しており、「比較」を使用してPDFページを比較しました。2018年10月10日のopenSuseによる更新後同じエラーが発生しました。ここで説明するように行を変更した後、機能しました。
Keks線量2018

私はUbuntu Xenial 16.04 LTSを使用していますが、突然Apacheログにそのエラーが表示され始めました。ここで説明するようにポリシーを変更した後、問題が解決したことを確認しました。
user2641103 2018年

5
これは最小限の正解です。sNICkerssssの答えは技術的に正しいですが、コマンドラインでconvertPDFを使用するために必要な手順は1つだけです。
davidA 2018年

1
この「問題」は、Ghostscript機能の迅速かつ汚い「修正」であり、長期的にはGhostscript(およびおそらくImageMagick)の代替品を見つける必要があります。
9ilsdx 9rvj 0lo 2018年

4
これを行わないでください。リモートでコードが実行される可能性があるため、この制限はセキュリティ対策として導入されました(launchpad.net/ubuntu/+source/imagemagick/8:6.7.7.10-6ubuntu3.13を参照)。正解は次のとおりです。このタスクには別のプログラムを使用する必要があります。
マリアン

66

注:このソリューションとその他の「policy.xmlの編集」ソリューションは、ImageMagickの任意のコード実行の脆弱性に対する安全対策を無効にします。100%制御できない入力を処理する必要がある場合は、(ImageMagickではなく)別のプログラムを使用する必要があります。

まだここにいる場合は、完全に制御でき、安全であり、ユーザーが編集できない画像を編集しようとしています。

/etc/ImageMagick/policy.xmlyumによってインストールされるファイルがあります。これは、ほとんどすべてを許可しません(セキュリティと、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を参照)。正解は次のとおりです。このタスクには別のプログラムを使用する必要があります。
マリアン

5
@Marian別のプログラムを使用しても役に立たない-OPは特にImageMagickについて尋ねた。応答は、「自分が何をしているのかを理解し、自己責任で実行し、システムが安全であることを確認する必要があります。ここに、実行すべきでない理由と方法を示します」です。
KolonUK

2
OP(および私を含め、Web検索でここにアクセスする人々)は、これまでImageMagickを使用してきました。もちろん、彼らがこの問題を解決するための最初の試みは、ImageMagickを使用してソリューションを見つけることです。これは、変更が最小限で済むためです。それは彼らが無条件にImageMagickを使いたいという意味ではありません。
マリアン

3
数千人に見られるQ&Aサイトには、このセキュリティに対する否定的なアプローチが非常に不適切であることがわかりました(このページは10万回表示され、この問題の検索結果のトップです)—ここで明確にしましょう。公開するために設定された専用サイト(imagetragick.com)を含む、この脆弱性の重要性—バイパスされるセキュリティではなく、代替手段を探すべきであるというマリアンの提案は有効です。代わりにGIMPを使用することにしました。popplerGhostScript(convertPDFページを画像にラスタライズすることに依存している)の代替手段
Louis Maddox

1
セキュリティポリシーを一時的に無効にするコマンドラインオプションはありませんか?次に、信頼できる特定のPDFファイルに使用できます。
人事部

27

インストール後に誰かが1つのコマンドでそれを行う必要がある場合は、これを実行してください!

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 '19年

5
もっと簡潔に。また、/ etc内のファイルを編集するにはsudoが必要です sudo sed -i '/PDF/s/none/read|write/' /etc/ImageMagick-6/policy.xml
Naveed


24

最高投票数の回答(コメントを追加するのに十分な評判がありません)は、MVG行をコメントアウトすることを提案していますが、次の点に注意してください。

CVE-2016-3714

ImageMagickは「.svg / .mvg」ファイルをサポートしています。つまり、攻撃者は、MSL(Magick Scripting Language)やMVG(Magick Vector Graphics)などのスクリプト言語でコードを作成し、画像ファイルに偽装したサーバーにアップロードして、強制的に上記のサーバー側で悪意のあるコマンドを実行するソフトウェア。たとえば、次のコマンドをファイルに追加し、脆弱なImageMagickバージョンを使用するWebサーバーにアップロードすると、サーバーでコマンド「ls -la」が実行されます。

explore.jpg:

プッシュグラフィックコンテキストビューボックス0 0 640 480塗りつぶし 'url(https://website.com/image.png "| ls" -la)' popグラフィックコンテキスト

そして

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 2018年

新しいバージョンがありますimagemagick.org/script/download.php Linuxディストリビューションは古いバージョンを使用している可能性があります。Ubuntu 16.04は現在6.8.9-9を使用しています
Nikolay Ivanov

1
Ubuntuチームの適切な解決策は、既存のバージョンを壊すのではなく、imagemagickを新しいバージョンに更新することです。
9ilsdx 9rvj 0lo 2018年

2
いいえ。Ubuntuは機能フリーズのディストリビューションであり、上流の新しいリリースは出荷しません。
Buo-Ren Lin

19

Ubuntu 16.04システムでの最近の更新後、.psファイルで変換を実行してPDFに変換しようとすると、このエラーが発生し始めました。

この修正は私にとってうまくいきました:

ターミナルで:

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

これにより、geditテキストエディタでpolicy.xmlファイルが開きます。そうでない場合は、イメージの魔術が別の場所にインストールされている可能性があります。次に変更します

rights="none" 

rights="read | write" 

ファイルの下部近くにあるPDF、EPS、PS行の場合。保存して終了すると、画像マジックが再び機能します。



これはUbuntu 18.04 ImageMagick 6.9.7-4で役立ちました。ありがとう。
そして、

11

/etc/ImageMagick/policy.xmlファイルを削除するだけです。


1
シンプルだが完璧。トラビスでテストが失敗したため、これを行いました
Dan Rey Oquindo

1
これは、大量の投稿から機能する唯一のソリューションです。名前をに変更しましたpolicy-disabled.xml。私はセキュリティ上の問題が解決されていることを確信するまで、私はそれを復元すると思います
groovenectar

そして、jupyterノートブックの場合はカーネルを再起動した後
Nicole Douglas

2

ここでいくつかの提案を読んでアイデアを組み合わせた後、私にとって/etc/ImageMagick-6/policy.xmlでの次の変更が必要でした:

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

... rights = "none"は役に立ちませんでした。... pattern = "LABEL"は不要でした。私は大きなpngファイル(〜1 Mbのみ)を処理しませんが、メモリ制限のいくつかの変更も必要でした:

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

(256Mibの代わりに)、および

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

(128 MBの代わり)



2

同じツールでラスターファイルとPDF / PS / EPSを処理する必要がない場合は、ImageMagickのセキュリティを緩めないでください。

代わりに、Webアプリケーションの防御を完全な状態に保ち、Ghostscriptに既知のすべての-dSAFER脆弱性に対するパッチが適用されていることを確認して、直接呼び出します。

gs -dSAFER -r300 -sDEVICE=png16m -o document-%03d.png document.pdf
  • -dSAFER レガシー互換性のない「Postscriptを実行すると、チューリング完全なプログラミング言語として外界と対話するための完全な許可が与えられます」モードからオプトアウトします。
  • -r300 必要なDPIを300に設定します(デフォルトは72)
  • -sDEVICE出力形式を指定します(他の選択肢については、マニュアルの「デバイス」セクションを参照してください)。
  • -o の略記です -dBATCH -dNOPAUSE -sOutputFile=
  • Ghostscriptマニュアルのこのセクションでは、複数ファイルのファイル名出力の形式の例をいくつか示しますが、実際の構文定義では、Cのprintf(3)関数のドキュメントを示しています。

EPSファイルをレンダリングする場合は-dEPSCrop、ページサイズに合わせて出力が埋め込まれず-sDEVICE=pngalpha、透明な背景を取得するために使用するように追加します。


より安全な解決策をありがとう。ただし、GhostScriptのコマンドラインオプションを思い出せるかどうかはわかりません。:)
クリスルエンゴ

@CrisLuengo私もしません。それが私がそれを提起された質問への良い答えである場所を見つけることができるのと同じくらい多くのGoogle結果に投稿した理由です。:P
ssokolow

1
-r600 -dDownScaleFactor=4150 dpiのファイルを作成するのに使用した良いアンチエイリアシングを使用した良い結果が見つかりました。
ジョンコール

0

error/constitute.c/ReadImage/453 画像マジックでepsをgifに変換しようとしたときにもエラーが発生しました。私はsNICkerssssによって提案された解決策を試しましたが、まだエラーがありました(最初のものとは異なります)e 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

@サイレンスそれは答えです、それは他の答えからコピーするので貧しいと思いました。
9ilsdx 9rvj 0lo 2018年

@ 9ilsdx9rvj0loコメントは編集前のものです。stackoverflow.com/posts/52700739/revisions
2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.