CVE/ImageMagick

AppImage は Linux の実行ファイルの一手法で、ライブラリや設定等関連ファイルをひとまとめにした1つのファイルだけで実行できるようにしたもの。つまり一般的なインストール作業が不要。

ImageMagick はこれを利用して Linux に magick コマンドの1ファイルだけコピーして使える AppImage 版*も*公開している。

環境変数の MAGICK_CONFIGURE_PATH で設定ファイルの場所を。LD_LIBRARY_PATH で共有ライブラリの場所を指定するが、これらが空の場合にカレントディレクトリ(作業中フォルダ)のそれらを読んでしまう不具合。そもそもカレントに任意のファイルをおかれる環境そのものが危険なので、脆弱性として活用される条件は厳しい。 例えばレンタル共有サーバで他の人の home 以下で作業した時に危険。

CVE

  • https://www.cve.org/CVERecord?id=CVE-2024-41817

    The `AppImage` version `ImageMagick` might use an empty path when setting `MAGICK_CONFIGURE_PATH` and `LD_LIBRARY_PATH` environment variables while executing, which might lead to arbitrary code execution by loading malicious configuration files or shared libraries in the current working directory while executing `ImageMagick`. The vulnerability is fixed in 7.11-36.

    `AppImage` バージョンの `ImageMagick` は、実行中に `MAGICK_CONFIGURE_PATH` および `LD_LIBRARY_PATH` 環境変数を設定するときに空のパスを使用することがあります。これにより、`ImageMagick` の実行中に現在の作業ディレクトリに悪意のある構成ファイルまたは共有ライブラリが読み込まれ、任意のコードが実行される可能性があります。この脆弱性は 7.11-36 で修正されています。

公式

記事

疑問

LD_LIBRARY_PATH の挙動はそもそも UNIX の仕様なのでは?

Windows ではカレント dll 読むけど UNIX では LD_LIBRARY_PATH で . を明示的に指定しないと読まなかったような気も。 ImageMagick 的に特別な事してたっけ?といった疑問があるので、あとで修正 diff みとこう

(追記) AppImage のパス設定でミスがあるっぽい。(修正 diff 読んだ)

関連

AppImage