画像の縮小や形式の変換に広く使われる無料の画像処理ソフト「ImageMagick」を組み込んだウェブサービスで、細工した画像を処理させるとサーバー上のファイルを読み書きされる欠陥群が見つかった。米カーネギーメロン大学のCERTコーディネーションセンター(CERT/CC)が11月12日(日本時間13日)に「ImageTragick2」の名で公表し、JPCERTコーディネーションセンターと情報処理推進機構が運営する脆弱性情報サイト「JVN」も13日に掲載した。ImageMagickが危険な形式を止めない設定のまま、利用者から届いた画像を処理していることが原因だ。ウェブアプリの開発基盤「Ruby on Rails」は深刻度を10点満点で9.8と評価し、修正版を配った。
細工したSVGやPostScriptで、サーバーのファイルに手が届く
ImageMagickは、画像の読み込み・変換・書き出しを一手に引き受けるソフトだ。ウェブサービスでは、利用者が上げた写真からサムネイル(縮小画像)を作る、切り抜く、別の形式に変えるといった処理の裏側で動いていることが多い。CERT/CCは、組み込んでいる例としてRuby on Rails、ブログ作成ソフト「WordPress」、ウィキ作成ソフト「MediaWiki」、ファイル共有の「ownCloud Classic」、課題管理の「Redmine」を挙げた。生成AIの画像処理でも、入力画像を整える前処理や、出力を変換する後処理に使われているという。
CERT/CCによると、見つかった攻撃の手口は2つある。1つは、ベクター画像の形式SVGの中に、別の資源を参照する記述を仕込むものだ。参照先に「MSL」と呼ばれるImageMagick独自のスクリプト言語を指定すると、ImageMagickはそれを命令として実行し、攻撃者の用意したデータを指定した場所へ書き込む。
もう1つは、ImageMagickが中身から形式を判定する仕組みを使う。ファイル名がPNGなどになっていても、中身がPostScript(印刷用の記述言語)に見えれば、ImageMagickは別のソフト「Ghostscript」を呼び出して処理させる。Ghostscriptは安全のための制限付きで起動されるが、CERT/CCが確かめた設定では、一時ファイル置き場の「/tmp」の中なら読み書きできた。アップロードされたファイルやログイン中の情報(セッション)を/tmpに置くサービスでは、それらを読まれたり書き換えられたりするおそれがある。
いずれも、攻撃者が画像を1枚上げるか、外部のURLから画像を取り込ませるだけで成り立つ。CERT/CCは、場合によってはファイルの読み書きを足がかりに任意のプログラムを実行され、サービスとサーバー全体を乗っ取られうるとした。コンテナで動かす環境で、外部の記憶領域や認証情報、AIの推論で生じたデータを書き込み可能な形で共有していると、被害が広がりやすいとも指摘した。
CERT/CCは、この問題を次の3項目に分けて登録している。
| 項目 | CERT/CCの説明(要旨) |
|---|---|
| VU#580079.1 | SVGの外部画像の参照で形式の指定を確かめず、MSLの命令から任意の場所へ書き込める |
| VU#580079.2 | 中身をPostScriptと判定するとGhostscriptを呼び、そのファイル操作を止めない |
| VU#580079.3 | 標準の設定が危険な形式やファイルの場所への操作を制限していない |
3項目とも、対象はImageMagickの版7.1.1.43以前と記載されている。
ImageMagick自体の欠陥ではなく「設定の問題」
今回の特徴は、ImageMagickの不具合を直す修正版が出て終わる話ではない点にある。CERT/CCは、ImageMagickの考え方では、独自の設定で制限できる動作は「設定の問題」として扱われ、ImageMagick自体の脆弱性とはみなされないと説明した。そのため、どこまで制限するかは、ImageMagickを組み込むアプリやLinuxの配布元が自分の用途に合わせて決める責任を負う。ところが、外部から届いたファイルを十分な制限の無いまま処理している例が多いという。
ImageMagickの公式サイトも、標準の状態は「意図的に開いた」設定だと明記している。外部から遮断されたDockerのコンテナのような、隔離された環境で使うことを想定した選択だという。設定ファイル「policy.xml」の雛形は4種類用意されている。標準の「open」、SVGやHTTPなどの危険な形式を止めて使える資源に上限を設ける「limited」、読み書きの経路を明示して高い危険のある機能を止める「secure」、公開ウェブサイト向けに読み書きをGIF・JPEG・PNGの3形式に絞る「websafe」だ。公式サイトは、外から届く入力を多く扱うアプリほど、制限を厳しくしなければならないとしている。
Railsは深刻度9.8、修正版8.1.4.1と8.0.5.2
最も詳しい対応を示したのはRuby on Railsだ。Railsの開発チームは11月4日、ファイルの添付機能「Active Storage」についての勧告(CVE-2026-126082)を出し、深刻度を「緊急(Critical)」の9.8と評価した。
勧告によると、Active StorageはImageMagickの形式を一切制限しておらず、ファイルが添付された時点で画像を解析する処理が動く。このため、攻撃者が細工したファイルを上げるだけで攻撃が成り立ち、縮小画像の作成などを待つ必要も無い。認証の無い攻撃者がサーバー上に任意のファイルを書き込めるほか、添付ファイルをサーバーの記憶装置に置く「Disk」方式では、アプリが読めるファイルを読み出せる。そこにはアプリの暗号の元になる秘密鍵「secret_key_base」や外部のシステムの認証情報が含まれることが多く、プログラムの遠隔実行やほかのシステムへの侵入につながるおそれがあるとした。
影響を受けるのは、次の3つをすべて満たすアプリだ。画像処理にImageMagick(mini_magick)を使っていること、関係する形式を止めていない設定でImageMagickを動かしていること、信頼できない利用者からのファイルの投稿を受け付けていることである。mini_magickは、Railsの初期設定の版が6.1以前のアプリでは標準の画像処理の方式だ。勧告は、Linuxの配布版DebianとUbuntuが同梱する設定は、関係する形式を止めていないと明記した。
修正版はActive Storageの8.1.4.1と8.0.5.2で、それより前の版が対象になる。修正版は独自のpolicy.xmlを同梱し、MSL、画像以外のファイルを読んだり消したりする形式、外部や手元の資源を参照する形式、Ghostscriptを使う形式のすべてを止める。
CERT/CC「ImageMagickの更新だけでは防げない場合も」
ほかの製品の状況は分かれている。CERT/CCの一覧では、ownCloud Classicを手がけるKiteworksが、ownCloud Classicと自社のプラットフォームが影響を受けると認め、修正を進めていると表明した。悪用された形跡は確認していないという。MediaWikiを運営するウィキメディア財団は「影響なし」とされた。WordPress、Redmine、Debian、Ubuntu、Red Hatは、11月12日時点で声明が無く「不明」となっている。CERT/CCによると、2つ目の手口は別の研究チームも独自に見つけ、WordPressに報告した。
欠陥は、GMO Flatt Securityの研究者RyotaK氏が報告した。
CERT/CCは、ImageMagickを組み込んだ製品の利用者に、開発元の更新版が出たら入れるよう求めた。そのうえで、ImageMagickだけを更新しても、設定が危険な形式を許したままなら防げないと注意した。対策として、アプリに要る形式と操作だけを許す方式のpolicy.xmlを置き、MSL、MVG、PS、EPS、PDFといった形式を止めることを挙げた。ImageMagickに同梱される安全向けの雛形も、すべての環境に合うとは限らないため、実際に有効になっている設定を確かめ、止めた形式が本当に拒まれるかを試すよう求めている。
ほかに、信頼できない画像は権限を絞った専用の環境で処理する、ファイル名や拡張子ではなく中身で形式を確かめる、設定違反や予期しない外部ソフトの呼び出しを監視する、という3点も挙げた。AIの前処理・後処理にも同じ管理を当てはめるよう求めている。
10年前の「ImageTragick」と同じ形式が再び
ImageMagickの欠陥が名前付きで注目されるのは初めてではない。米国立標準技術研究所(NIST)の脆弱性データベースによると、2016年5月に公表された欠陥(CVE-2016-3714)は「ImageTragick」と呼ばれた。MSLやMVGなど8つの形式の処理に問題があり、細工した画像から遠隔でプログラムを実行される恐れがあった。対象は版6.9.3-10より前と、7系の7.0.1-1より前だった。
今回の手口の1つも同じMSLを使う。そして現在も、ImageMagickの標準の設定は開いた状態で、どこまで制限するかは組み込む側に委ねられている。本紙は10月、ウェブメールソフトの欠陥を報じた記事「ウェブメールRoundcubeの脆弱性20件、最高8.5点 修正版は1.6.20と1.7.5」で、連絡先の写真の変換でSVGとEPSを受け付け、ImageMagickに安全でない内容を渡す欠陥を伝えた。外から届いた画像をImageMagickに渡す経路で、同じ種類の欠陥が繰り返し見つかっている。
画像の投稿を受け付けるサービスを運営する事業者は、使っている製品の修正版の有無を確かめるとともに、ImageMagickの実際の設定をコマンド「magick identify -list policy」で確かめ、不要な形式を止めることが求められる。Railsのアプリで添付ファイルをDisk方式で保存していた場合、勧告はsecret_key_baseを含むすべての秘密情報を変えるよう求めている。
