Docker構成のMastodonでImageMagickのポリシーを変えてGhostscriptの脆弱性に対応する

Ghostscript に緊急レベルの脆弱性、悪用攻撃も発生
https://japan.zdnet.com/article/35100535/

MastodonではImageMagick経由でGhostscriptが呼び出される場合があります。

今回はImageMagickの設定ファイルを変更することでGhostscriptの呼び出しを回避します。

また、今回は行いませんが ImageMagick の policy.xml ではメモリリソースの使用量の調整も可能です。

コンテナからImageMagickの設定フォルダを取り出す

cd (docker-compose.yml のあるフォルダ)
docker cp mastodon1_web_run_1:/etc/ImageMagick-7 .
mv ImageMagick-7 etc-ImageMagick-7

policy.xml を編集

emacs ./etc-ImageMagick-7/policy.xml

policy.xml のコメント部分におすすめの設定が書いてあります

  Rules are processed in order.  Here we want to restrict ImageMagick to only
  read or write a small subset of proven web-safe image types:
    <policy domain="delegate" rights="none" pattern="*" />
    <policy domain="coder" rights="none" pattern="*" />
    <policy domain="coder" rights="read|write" pattern="{GIF,JPEG,PNG,WEBP}" />

この3行を の手前にコピペします

変更した設定フォルダをボリュームに指定する

docker-compose.yml を編集します

web とsidekiqのコンテナのvolumes の指定に追加します

      - ./etc-ImageMagick-7:/etc/ImageMagick-7

再起動

一度コンテナを削除してから作り直すため、まだDBの永続化を行っていない方は行っておいてください。少し前の記事で説明しています。 http://d.hatena.ne.jp/tateisu/20170416/1492341633

dockerのコンテナを再起動します。

# stop じゃなくてdown。コンテナはrmされる
docker-compose down

# 起動
docker-compose up -d

sidekiq コンテナを増やしている方は docker-compose scale もお忘れなく