コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

画像をアップロードできる機能におけるImageMagickの危険性を考えてみる

画像変換系SaaSを使うか否か、を考えたときのただの雑記です。

今回考える機能

ざっくりとした要件

『ユーザーが任意でアップロードした画像を保存したい』

という要件があるとする。

考えなければいけないこと

仕様面

  • 画像ファイルの形式は何を許可するか
  • 画像ファイルの最大サイズはどうするか
  • 画像ファイルを受け取ったあとに加工する必要があるか

セキュリティ面

  • Exchangeable image file formatをどうするか
  • 悪意のあるファイルをどう受け取らないようにするか
  • 悪意にあるファイルを受け取ったときにどうすればいいか

この場合にImageMagickを使うPros/Cons

Pros

  • 自前で敷設できるので、オンプレでもクラウドでも置ける
  • 豊富な関連ライブラリ
  • 導入事例が多い

Cons

  • パッチが多いので、お守りを強く気にする必要がある
  • 対応する画像が多いがゆえに脆弱性報告が多く、真に対応が必要なものを特定しづらい
  • 悪意のあるコードが入った画像に変換を掛けることもあるため、実Webアプリケーションと同居させるのは怖く、利用アプリケーションとは切り離したサーバにImageMagickを置く必要がある

参考サイト