ユーザー画像に ImageMagick を使用するのは安全ですか?

ユーザー画像に ImageMagick を使用するのは安全ですか?

ユーザーが任意に提供した画像に ImageMagick を使用すると、セキュリティ上の懸念が生じる可能性があると聞きました。たとえば、以下のリンクには、バッファ オーバーフローの脆弱性があったという証拠があります。ユーザー画像を扱う Web サービスの一部として、これを安全に使用できるかどうか、誰か知っていますか?

RHSA 2006 のエラータ

答え1

このセキュリティ勧告は 2006 年のものです。すべてのソフトウェアにはバグがありますが、ImageMagick のバグが他のソフトウェアより多いとは言えません。実際のところ、Web サービスを実装している場合、ImageMagick よりも Apache 経由でハッキングされる可能性の方が高いでしょう。

つまり、心配する必要はありませんが、すべてのソフトウェアを最新の状態に保ってください。

編集: ちなみに、私はクライアントが ImageMagick を使用する Web サービスを実装するのを手伝いましたが、そのサービスで問題が発生したという話は一度も聞いたことがありません。

答え2

はい、セキュリティ上のリスクはあります。ソフトウェアにはバグがあり、その一部はソフトウェアが稼働しているシステムを攻撃するために利用される可能性があります。

しかし、リスクを最小限に抑えることはできます。

  1. ImageMagickを実行するのにちょうどよい、最小限の権限を持つユーザーアカウントを作成します。ImageMagickの実行にはそのアカウントのみを使用します。

  2. 自動セキュリティ更新を有効にする: Ubuntu などの Linux システムは、セキュリティ修正を自動的にインストールするように設定できます。これにより、脆弱性が見つかった場合にシステムが脆弱になる時間が短縮されます。Windows システムにも自動更新システムがありますが、ImageMagick などのサードパーティ ソフトウェアは含まれていません。

答え3

いいえ。

ImageMagickは柔軟性を重視して設計されています。ブラウザの画像処理ライブラリのように細工された入力に対しては強化されていません。おそらく悪用可能なバグを見つけるのがずっと容易になるブラウザよりも、ImageMagick のようなライブラリで実行したほうがよいでしょう。

ImageMagick でバッファ オーバーフローを発見した攻撃者は、それを利用して ImageMagick を実行しているプロセスの権限で任意のコードを実行することができます。

これにより、攻撃者はさらに権限を昇格するための足掛かりを得ることができます。たとえば、PATH とトロイの木馬攻撃他のバックエンドを混乱させたり、実稼働環境内のパッチが適用されていない他のサービスを悪用したりすることによって発生します。

絶対にしなければならないサードパーティのコンテンツにImageMagickを使用する場合は、「その他のセキュリティ上の考慮事項」を参照してください。ImageMagick のセキュリティ ポリシー ドキュメント:

セキュリティ ポリシーに加えて、次の方法で ImageMagick をより安全にすることができます...

  • ImageMagick を最新の状態に維持します。最新リリースには、過去に発見されたセキュリティ上の欠陥に対する修正が含まれています。
  • ImageMagick に渡すファイル名やコマンドライン オプションをサニタイズします。
  • Docker などのサニタイズされたソフトウェア コンテナーで ImageMagick を実行します。
  • ImageMagick を最小権限のユーザー (例: 'nobody') として実行します。画像ファイルの種類を明示的に設定します。たとえば、ファイル名は image.png ではなく png:image.png を使用します。ファイル名に画像の種類が明示的に指定されていない場合、ImageMagick は画像の種類を推測します。

関連情報