heroku-buildpack-imagemagick
CVE-2022-44268 ImageMagick Arbitrary File Readで、Herokuに置いてあるアプリのImageMagickの脆弱性対策をする必要があった
Herokuのstack imageはUbuntuをベースにしていて、Ubuntuのパッケージがアップデートされれば追ってstack imageもアップデートされる
しかし、UbuntuではCVE-2022-44268の対策アップデートがしばらく来なかった
この文章を書いている2023/3/8現在ではUbuntuのパッケージがアップデートされ、Herokuのstack imageもアップデートされているので対策済み
UbuntuのセキュリティアドバイザリのページではNeeds triageのままになっているけど……
というわけで、ImageMagickを独自ビルドして解決することにした
ImageMagickをインストールできるbuildpackがないか探したところ、https://github.com/ello/heroku-buildpack-imagemagick があったのでフォークして開発した
https://github.com/shimoju/heroku-buildpack-imagemagick
このbuildpackはImageMagickをビルドしてvendor/imagemagickに置いたあと、そのパスをPATHに追加することで、デフォルトでインストールされているImageMagickよりも優先されるようにしている
これを入れたことでslug sizeが500MB超えてしまったため、アプリ側の不要なファイルと、buildpack側でもいくつか削除した
Delete tarball · shimoju/heroku-buildpack-imagemagick@71e59cd · GitHub
Delete unnecessary docs · shimoju/heroku-buildpack-imagemagick@191a1b3 · GitHub
share/docにはexample用の画像ファイルが入っていて、消すと数MB削減できる
buildpack側でMAGICK_CONFIGURE_PATHを上書きしていて、アプリ側の環境変数を見てくれなくなっていたので、消してImageMagickの設定はアプリに任せることにした
Not overwrite MAGICK_CONFIGURE_PATH · shimoju/heroku-buildpack-imagemagick@062c94d · GitHub
という修正をして、無事アップデートできた。buildpack便利ですね